Что-то, как это должно работать:
F <- c(18,31,34,33,27,33,28,23,33,12,19,25,14,4,22,7)
M <- c(11,22,27,29,24,29,25,26,38,14,23,31,20,6,34,12)
Y <- F
N <- F + M
#a)
Y/N
#b)
sum(Y)/sum(N)
#c)
logL <- function(p) sum(log(dbinom(Y, N, p)))
#plot logL:
p.seq <- seq(0.01, 0.99, 0.01)
plot(p.seq, sapply(p.seq, logL), type="l")
#optimum:
optimize(logL, lower=0, upper=1, maximum=TRUE)
Как отметил Бен (см комментарии), числовая точность повышается за счет использования: logL <- function(p) sum(dbinom(Y,N,p,log=TRUE))
вместо этого, особенно это может «спасти» вы в тех случаях, когда dbinom()
возвращает 0, но вероятность того, оценка на самом деле просто близко к 0.
'logL <-функция (p) sum (dbinom (Y, N, p, log = TRUE))' будет немного более точной. –
Спасибо, Бен, согласитесь, но подумал, что это более иллюстративно для OP. –
J.R большое спасибо. Мне нужна еще одна услуга. Значения LogL отображаются, но значения mle нет. Не могли бы вы исправить это? –