如何在Matlab中计算样本和总体方差?

时间:2013-08-08 19:23:44

标签: matlab statistics

我有一个向量a

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

2 个答案:

答案 0 :(得分:8)

试试这个:

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


var =

  335.2111

var计算为(无偏)样本,而非人口方差。

如需完整说明,请阅读here

来自matlab文档,

  

VAR将Y标准化为N-1,其中N是样本大小。这是个   X是人口方差的无偏估计   绘制,只要X由独立,相同分布组成   样品

<强>但

  

Y = VAR(X,1)归一化N并产生第二个矩   关于它的意思的样本。 VAR(X,0)与VAR(X)相同。

这样

>> var(a,1)

ans =

  301.6900

答案 1 :(得分:2)

无偏差的样本方差由下式给出:

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

ans =

  335.2111

enter image description here