Подтвердить что ты не робот

Стандартное отклонение в R, кажется, возвращает неправильный ответ - я что-то делаю неправильно?

Простой пример вычисления стандартного dev:

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

дает

[1] 2.13809

но когда сделано вручную, ответ будет 2. Что мне здесь не хватает?

4b9b3361

Ответ 1

Попробуйте это

R> sd(c(2,4,4,4,5,5,7,9)) * sqrt(7/8)
[1] 2
R> 

и посмотрите оставшуюся часть статью Википедии для обсуждения оценки стандартных отклонений. Используя формулу, используемую "вручную", приводит к смещенной оценке, следовательно, коррекция sqrt ((N-1)/N). Вот ключевая цитата:

Термин стандартное отклонение образец используется для нескорректированного (используя N), в то время как термин стандартное отклонение выборки используется для исправленная оценка (с использованием N - 1). Знаменатель N - 1 - это число степеней свободы в векторе остатки,.

Ответ 2

Похоже, что R принимает (n-1) в знаменателе, а не n.

Ответ 3

Когда мне нужна дисперсия население или стандартное отклонение (n как знаменатель), я определяю эти две векторизованные функции.

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

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

BTW, Академия Хан хорошо обсуждает население и типовое стандартное отклонение здесь.

Ответ 4

Обратите внимание, что выполнение команды

?sd 

в R Studio отображает страницу справки для этой функции. В разделе сведений указано

Как и var, используется знаменатель n - 1.