7

我有一个矢量图a

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

我想自己计算stdand mean

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

4

2 回答 2

8

试试这个:

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


var =

  335.2111

var被计算为(无偏)样本,而不是总体方差。

有关完整的说明,您可以在此处阅读。

从 matlab 文档中,

VAR 通过 N-1 对 Y 进行归一化,其中 N 是样本大小。只要 X 由独立的、同分布的样本组成,这是从中抽取 X 的总体方差的无偏估计量。

Y = VAR(X,1) 通过 N 归一化并产生样本关于其平均值的二阶矩。VAR(X,0) 与 VAR(X) 相同。

以便

>> var(a,1)

ans =

  301.6900
于 2013-08-08T19:27:47.430 回答
2

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

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

ans =

  335.2111

在此处输入图像描述

于 2013-08-08T19:38:14.717 回答