MATLAB var函数返回奇怪的结果

时间:2017-11-07 14:26:25

标签: matlab statistics

使用MATLAB的var函数时得到的结果与基于方差公式计算时的结果不同。

我的意见是:

x = [1,1,1,2];

当我使用var函数时,我得到:

var(x)

ans =
0.2500

当我使用方差公式计算方差时,我得到:

mean((x-mean(x)).^2)

ans =
0.1875

其中方差公式由

定义

enter image description here

有谁知道这种行为的原因是什么?

2 个答案:

答案 0 :(得分:1)

在matlab的功能var的说明/帮助中,它表示默认使用N-1而不是N对和进行规范化,这就是为什么会得到不同的结果:

x = [1,1,1,2];

mean_x=mean(x);

var1=sum((x-mean_x).^2)/length(x)
var2=sum((x-mean_x).^2)/(length(x)-1)

var1 =

0.1875

var2 =

0.2500

您可以找到here关于使用N-1而不是N的区别的讨论。 Var允许您通过将第二个参数设置为0 default N-11 for N

来在两个规范化之间进行选择

答案 1 :(得分:1)

只是添加到上面的点

  

V = var(A,w)指定加权方案。当w = 0(默认值)时,V为   通过观察数量1归一化。当w = 1时,它是   通过观察次数归一化。 w也可以是重量   包含非负元素的向量。在这种情况下,w的长度   必须等于var运行的维度的长度。

因此,做var(x,1)会给你正确答案

Matlab reference