计算标准dev的一个简单例子:
d <- c(2,4,4,4,5,5,7,9)
sd(d)
产量
[1] 2.13809
但是当手工完成时,答案是 2。我在这里缺少什么?
尝试这个
R> sd(c(2,4,4,4,5,5,7,9)) * sqrt(7/8)
[1] 2
R>
有关标准偏差估计的讨论,请参阅Wikipedia 文章的其余部分。使用“手工”使用的公式会导致估计有偏差,因此需要校正 sqrt((N-1)/N)。这是一个关键的报价:
样本的标准差一词用于未校正的估计量(使用 N),而样本标准差一词用于校正的估计量(使用 N-1)。分母 N - 1 是残差向量 中的自由度数。
看起来R在分母中假设(n-1),而不是n。
当我想要总体方差或标准差(n 作为分母)时,我定义了这两个向量化函数。
pop.var <- function(x) var(x) * (length(x)-1) / length(x)
pop.sd <- function(x) sqrt(pop.var(x))
顺便说一句,可汗学院在这里对总体和样本标准差进行了很好的讨论。
注意运行命令
?sd
在 R Studio 中显示函数的帮助页面。在详细信息部分它指出
与 var 一样,它使用分母 n - 1。