2013-08-08 7 views
7

私はaMatlabのサンプルと母集団の分散を計算するには?

a = [86 100 41 93 75 61 76 92 88 97] 

ベクトルを持っていると私は によってstdmeanを自分で計算したい:

>> mean(a) 

ans = 

    80.9000 

>> std(a)^2 

ans = 

    335.2111 

しかし、私はそのようにそれを行うとき、私は間違って分散を得る:

>> avg = mean(a) 

avg = 

    80.9000 

>> var = sum(a.^2)/length(a) - avg^2 

var = 

    301.6900 

私はここで何が欠けていますか?

なぜsum(a.^2)/length(a) - avg^2 != std(a)^2

答えて

8

これを試してみてください:

var = sum(a.^2)/(length(a)-1) - (length(a))*mean(a)^2/(length(a)-1) 


var = 

    335.2111 

varは(公平)のサンプルではなく、母分散として計算されます。

詳しい説明は、hereをご覧ください。

MATLABドキュメントから、

VARは、N-1、Nはサンプル・サイズであることにより、Yを正規化します。これは、Xが独立して同一に分布する サンプルからなる限り、Xが である母集団の分散の不偏推定量である です。

しかし

Y = VARは、(Xは、1)Nで正規化し、その平均約 試料の二次モーメントを生成します。 VAR(X、0)はVAR(X)と同じです。

公平標本分散は次式で与えられ

>> var(a,1) 

ans = 

    301.6900 
2

ように:

>> 1/(length(a)-1) * sum((a-mean(a)).^2) 

ans = 

    335.2111 

enter image description here

関連する問題