2012-02-10 40 views
5

Tôi có 4 quần thể với các phương tiện đã biết và độ lệch chuẩn. Tôi muốn biết đại bản trung bình và lớn. Giá trị trung bình lớn là đơn giản để tính toán, nhưng R có một hàm tiện ích tiện dụng, weighted.mean(). Có một hàm tương tự tồn tại để kết hợp các độ lệch chuẩn không?chức năng hiện có để kết hợp độ lệch chuẩn trong R?

The calculation is not complicated, nhưng chức năng hiện tại sẽ làm cho mã của tôi sạch hơn và dễ hiểu hơn.

Câu hỏi thưởng, bạn sử dụng công cụ nào để tìm kiếm các chức năng như thế này? Tôi biết nó phải được ra khỏi đó, nhưng tôi đã thực hiện rất nhiều tìm kiếm và không thể tìm thấy nó. Cảm ơn!

+0

Về câu hỏi tìm kiếm của bạn, 'findFn' từ gói ** sos ** là một công cụ hữu ích. – joran

+0

@AndresT, vâng, dân số không chồng chéo. –

+0

@joran Cảm ơn, tôi không biết về điều đó, tôi sẽ bắt đầu tìm kiếm theo cách đó. Tôi đoán 'độ lệch chuẩn' sẽ là một thuật ngữ phổ biến trong sách hướng dẫn R –

Trả lời

4

Dân số có bị chồng chéo không?

library(fishmethods) 
combinevar 

Ví dụ ví dụ trong wikipedia sẽ làm việc như thế này:

xbar <- c(70,65) 
s<-c(3,2) 
n <- c(1,1) 
combinevar(xbar,s,n) 

và độ lệch chuẩn sẽ được sqrt (combinevar (xbar, s, n) [2])

nếu bạn không muốn tải xuống thư viện chức năng như sau:

combinevar <- 
function (xbar = NULL, s_squared = NULL, n = NULL) 
{ 
    if (length(xbar) != length(s_squared) | length(xbar) != length(n) | 
     length(s_squared) != length(n)) 
     stop("Vector lengths are different.") 
    sum_of_squares <- sum((n - 1) * s_squared + n * xbar^2) 
    grand_mean <- sum(n * xbar)/sum(n) 
    combined_var <- (sum_of_squares - sum(n) * grand_mean^2)/(sum(n) - 
     1) 
    return(c(grand_mean, combined_var)) 
} 
4

Tôi không biết gói cụ thể hoặc fu nction tên nhưng có vẻ dễ dàng để cuộn chức năng của riêng bạn từ trang của Wikipedia. Giả sử không có sự chồng chéo trong các quần thể:

## N: vector of sizes 
## M: vector of means 
## S: vector of standard deviations 

grand.mean <- function(M, N) {weighted.mean(M, N)} 
grand.sd <- function(S, M, N) {sqrt(weighted.mean(S^2 + M^2, N) - 
             weighted.mean(M, N)^2)} 
+0

Cảm ơn rất nhiều vì câu trả lời này. Khi nhìn vào công thức trên wikipedia, tôi không nghĩ rằng tôi có thể làm cho việc tính toán trông đơn giản như bạn đã làm. Tôi có thể thực sự chỉ sử dụng điều này, nhưng phản ứng của AndresT là toàn diện hơn một chút đối với những người khác tìm câu hỏi này. Cảm ơn! –

Các vấn đề liên quan