Я пытаюсь вручную проверить функцию sd (), но моя математика возвращается по-другому. StdDev - это квадратный корень из дисперсии. Дисперсия - это среднее всех чисел после вычитания среднего и возведения в квадрат.
y <- c(2,3,4,5)
m <- mean(y) # 3.5
a <- c()
a[1] <- (y[1] - m)^2
a[2] <- (y[2] - m)^2
a[3] <- (y[3] - m)^2
a[4] <- (y[4] - m)^2
v <- mean(a) # variance here
sqrt(v) # outputs 1.118034
sd(y) # outputs 1.290994
Стандартная функция возвращает несмещенную дисперсию, но ваш вызов mean
делится на n
вместо n-1
.
sqrt (4/3) * 1,118 = 1,29. У вас 3 степени степеней свободы, а не 4, так что то, что вы сделали, является предвзятой оценкой. После исправления все нормально