Различные результаты при расчете дисперсии и стандартного отклонения в R

Расчет дисперсии и стандартного отклонения на основе описания в Википедии дает разные результаты по сравнению со стандартными функциями var() и sd() в R.

Дисперсия: 4 против 4,571429. Стандартное отклонение: 2 против 2,13809.

Есть предложения или объяснения?

> df <- c(2,4,4,4,5,5,7,9)
> df.length <- length(df)
> df.length
[1] 8

> df.mean <- sum(df) / df.length
> df.mean
[1] 5

> df.difference <- (df - df.mean)**2
> df.difference
[1]  9  1  1  1  0  0  4 16

> sum(df.difference)
[1] 32

> df.variance <- sum(df.difference) / df.length
> df.variance
[1] 4

> df.standard.deviation <- sqrt(df.variance)
> df.standard.deviation
[1] 2

> # mean, var and sd (default R)

> mean(df)
[1] 5

> var(df)
[1] 4.571429

> sd(df)
[1] 2.13809

1 ответ

Решение

Это разница между делением на n или же (n-1) степени свободы.

>df <- c(2,4,4,4,5,5,7,9)
> var(df)
[1] 4.571429


> sum((df-mean(df))^2/length(df))
[1] 4

> sum((df-mean(df))^2/(length(df)-1))
[1] 4.571429

Это n-1 потому что... скопировано прямо из Википедии ( ссылка)

Обычный способ думать о степенях свободы - это количество независимых частей информации, доступных для оценки другой части информации. Более конкретно, число степеней свободы - это число независимых наблюдений в выборке данных, которые доступны для оценки параметра совокупности, из которой эта выборка взята. Например, если у нас есть два наблюдения, при вычислении среднего значения мы имеем два независимых наблюдения; однако при расчете дисперсии мы имеем только одно независимое наблюдение, поскольку оба наблюдения одинаково удалены от среднего значения.

Другие вопросы по тегам