1) лм Если предположить, что в конце указано примечание P
, мы можем использовать lm
fm <- lm(x ~ 1, P, weight = Px)
sqrt(deviance(fm))
## [1] 216.1202
или заменить последнюю строку на:
sqrt(nobs(fm) - 1) * sigma(fm)
## [1] 216.1202
2) прямой или сделать это напрямую:
m <- with(P, sum(x * Px))
with(P, sqrt(sum((x - m)^2 * Px)))
## [1] 216.1202
или
with(P, sqrt(sum(x^2*Px)-sum(x*Px)^2))
## [1] 216.1202
3) In конкретный пример в вопросе: если мы умножим вероятности на 8, все результаты будут целыми числами, поэтому, если мы повторим каждый элемент такое количество раз, мы можем просто взять стандартное отклонение этих чисел, используя sd
, за исключением того, что sd
дает выборочное стандартное отклонение, поэтому нам необходимо исправить его, чтобы получить стандартное отклонение совокупности.
xx <- with(P, rep(x, 8 * Px))
n <- length(xx)
with(P, sqrt((n-1)/n) * sd(xx))
## [1] 216.1202
Примечание
Предполагается, что входной кадр данных в воспроизводимой форме:
Lines <- "x Px
134 .5
565 .25
65 .125
563 .125"
P <- read.table(text = Lines, header = TRUE)