Я не был уверен, что это должно произойти в SO или какой-либо другой .SE, поэтому я удалю, если это считается не по теме.
У меня есть вектор, и я пытаюсь вычислить дисперсию "вручную" (что означает основанное на определении дисперсии, но все еще выполняющее вычисления в R) с использованием уравнения: V[X] = E[X^2] - E[X]^2
где E[X] = sum (x * f(x))
и E[X^2] = sum (x^2 * f(x))
Однако моя рассчитанная дисперсия отличается от функции var()
, которую имеет R (которую я использовал для проверки моей работы). Почему функция var()
отличается? Как он вычисляет отклонение? Я проверил свои расчеты несколько раз, поэтому я достаточно уверен в ценности, которую я вычислил. Мой код приведен ниже.
vec <- c(3, 5, 4, 3, 6, 7, 3, 6, 4, 6, 3, 4, 1, 3, 4, 4)
range(vec)
counts <- hist(vec + .01, breaks = 7)$counts
fx <- counts / (sum(counts)) #the pmf f(x)
x <- c(min(vec): max(vec)) #the values of x
exp <- sum(x * fx) ; exp #expected value of x
exp.square <- sum(x^2 * fx) #expected value of x^2
var <- exp.square - (exp)^2 ; var #calculated variance
var(vec)
Это дает мне расчетную дисперсию 2.234, но функция var()
говорит, что дисперсия равна 2.383.