我不确定这应该是在SO还是其他一些.SE,所以如果这被认为是偏离主题我会删除.
我有一个向量,我正在尝试使用以下等式"手动"计算方差(意味着基于方差的定义,但仍在R中执行计算):V[X] = E[X^2] - E[X]^2其中E[X] = sum (x * f(x))和E[X^2] = sum (x^2 * f(x))
但是,我计算的方差与var()R具有的函数不同(我用来检查我的工作).为什么var()功能不同?它是如何计算方差的?我已经多次检查了我的计算,所以我对我计算的值非常有信心.我的代码如下.
vec <- c(3, 5, 4, 3, 6, 7, 3, 6, 4, 6, 3, 4, 1, 3, 4, 4)
range(vec)
counts <- hist(vec + .01, breaks = 7)$counts
fx <- counts / (sum(counts)) #the pmf f(x)
x <- c(min(vec): max(vec)) #the values of x
exp <- sum(x * fx) ; exp #expected value of x
exp.square <- sum(x^2 * fx) #expected value of x^2
var <- exp.square - (exp)^2 ; var #calculated variance
var(vec)
Run Code Online (Sandbox Code Playgroud)
这给了我一个2.234的计算方差,但var()函数说方差是2.383.
Sve*_*ein 10
虽然V [X] = E [X ^ 2] - E [X] ^ 2是总体方差(当向量中的值是整个总体而不仅仅是样本时),该var函数计算总体方差的估计量. (样本方差).
虽然已经回答了这个问题,但我担心有些人可能仍然会在人口差异和样本估算之间混淆,这可能是由于这个例子.
如果向量vec代表完整的总体,那么vec它只是一种表示分布函数的方法,可以在您从中派生的pmf中更简洁地概括.至关重要的是,vec在这种情况下,元素不是随机变量.在这种情况下,您对pmf的E [X]和var [X]的计算是正确的.
但是,大多数情况下,当您拥有数据时(例如以矢量形式),它是来自基础人口的随机样本.向量的每个元素都是随机变量的观测值:它是来自总体的"平局".对于这个例子,可以假设每个元素是从相同的分布("iid")独立绘制的.在实践中,这种随机抽样意味着您无法计算真实的pmf,因为您可能仅仅因为机会而有一些变化.同样,您无法从样本中获得E [X],E [X ^ 2]的真实值,从而得到Var [X]的真实值.需要估算这些值.的样品平均通常为E [X](尤其是,它是无偏)的良好估计,但事实证明,所述样本方差是用于总体方差一个偏估计.要纠正这种偏差,您需要将其乘以系数n /(n-1).
由于后一种情况在实践中最常见(除了教科书练习),它是var()在R中调用函数时计算的内容.因此,如果要求您找到"估计的方差",则很可能意味着您的vector vec是一个随机样本,你属于后一种情况.如果这是原始问题,那么你有答案,我希望变得清楚,变量名称的选择和代码中的注释会导致混淆:实际上,你无法计算pmf,期望值或随机样本中人口的方差:你可以得到的是他们的估计,其中一个 - 方差的 - 是有偏见的.
我想澄清这一点,因为在编码中看到的混乱在首次熟悉这些概念时非常常见.特别是,接受的答案可能会产生误导:V [X] = E [X ^ 2] - E [X] ^ 2 不是样本方差; 这确实是人口方差,你无法从随机样本中得到.如果用它们的样本估计值(作为平均值)替换这个等式中的值,你将得到样本.V [X] =平均值[X ^ 2] - 平均值[X] ^ 2,这是样本方差,并且有偏差.
有些人可能会说我对语义很挑剔; 然而,只有当每个人都认识到这种情况时,接受的答案中的"滥用符号"才是可接受的.然而,对于那些试图弄清楚这些概念差异的人,我认为最好保持精确.
| 归档时间: |
|
| 查看次数: |
29454 次 |
| 最近记录: |