2012-02-10 12 views
5

私は既知の平均と標準偏差を持つ4つの母集団を持っています。私は壮大な平均と壮大なsdを知りたいです。グラン平均は明らかに計算が簡単ですが、Rには便利なユーティリティ関数weighted.mean()があります。同様の機能が標準偏差を組み合わせるために存在するか?Rの標準偏差を結合する既存の関数?

The calculation is not complicatedしかし、既存の関数を使用すると、わかりやすくわかりやすくなります。

ボーナスに関する質問、このような機能を検索するツールはありますか?私はそれが外になければならないことを知っているが、私は多くの検索をして、それを見つけることができない。ありがとう!

+0

検索質問に関しては、** sos **パッケージの 'findFn'は便利なツールです。 – joran

+0

@AndresT、はい、集団は重複していません。 –

+0

@joranありがとう、私はそれについて知らなかった、私はその方法を検索を開始します。私は '標準偏差'はRのマニュアルの中でよく使われる用語になると思っています –

答えて

4

集団は重複していませんか?ウィキペディアの例は次のように動作します。例えば

library(fishmethods) 
combinevar 

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

及び標準偏差は、(combinevar(XBAR、S、N)[2])SQRTされる

あなたならライブラリをダウンロードしたくない場合は、関数は次のようになります:

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

私は特定のパッケージやfuについて知らないWikipediaのページから独自の機能をロールするのは簡単です。母集団に重複がないと仮定します。

## 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

ありがとうございました。ウィキペディアで数式を見ると、私はあなたがしたように計算を簡単に見せることができないと思いました。私は実際にこれを使用するかもしれませんが、AndresTの応答はこの質問を見つける他の人にはもう少し包括的です。ありがとう! –