26

计算标准dev的一个简单例子:

d <- c(2,4,4,4,5,5,7,9)
sd(d)

产量

[1] 2.13809

但是当手工完成时,答案是 2。我在这里缺少什么?

4

4 回答 4

37

尝试这个

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 是残差向量 中的自由度数。

于 2011-06-23T16:56:32.007 回答
9

看起来R在分母中假设(n-1),而不是n。

于 2011-06-23T16:57:48.690 回答
6

当我想要总体方差或标准差(n 作为分母)时,我定义了这两个向量化函数。

  pop.var <- function(x) var(x) * (length(x)-1) / length(x)

  pop.sd <- function(x) sqrt(pop.var(x))

顺便说一句,可汗学院在这里对总体样本标准差进行了很好的讨论。

于 2015-06-12T21:27:42.463 回答
-1

注意运行命令

?sd 

在 R Studio 中显示函数的帮助页面。在详细信息部分它指出

与 var 一样,它使用分母 n - 1。

于 2017-08-15T10:58:26.470 回答