R的标准偏差似乎正在回答错误的答案 - 我做错了吗?

Tra*_*man 25 statistics r standard-deviation

计算标准开发的简单示例:

d <- c(2,4,4,4,5,5,7,9)
sd(d)
Run Code Online (Sandbox Code Playgroud)

产量

[1] 2.13809
Run Code Online (Sandbox Code Playgroud)

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

Dir*_*tel 35

试试这个

R> sd(c(2,4,4,4,5,5,7,9)) * sqrt(7/8)
[1] 2
R> 
Run Code Online (Sandbox Code Playgroud)

有关标准偏差估计的讨论,请参阅维基百科文章的其余部分.使用"手动"使用的公式导致偏差估计,因此校正sqrt((N-1)/ N).这是一个关键的引用:

术语标准偏差用于未校正的估计器(使用N),而术语样本标准偏差用于校正的估计器(使用N-1).分母N - 1是残差向量中的自由度数,.


duf*_*ymo 9

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

  • 不,不是.n-1是*样本*标准差.除数n是*种群*标准差.方差将是sd ^ 2,但同样,这将是样本方差,因为R在`var()`中使用除数n-1,就像在`sd()`中一样.R使用这个除数显然记在`?sd`上 (2认同)

Ken*_*Lin 5

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

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

  pop.sd <- function(x) sqrt(pop.var(x))
Run Code Online (Sandbox Code Playgroud)

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