Uniroot ошибка при оценке вероятности покрытия для неопределенного распределения
Я пытаюсь вычислить вероятность покрытия для неопределенного распределения. Я скопировал мой r
коды ниже и соответствующее сообщение об ошибке.
Во-первых, я определил CDF как показано ниже.
CD_theta <- function(x, p, n) {
1 - pbinom (x, size = n, prob = p) + 1/2 * dbinom(x, size = n, prob = p)
Затем использовали следующую команду для оценки вероятности покрытия.
N <- 10000
n <- 10
p <- 0.5
set.seed(1)
x <- rbinom(N, prob=p, size=n)
covered <- numeric()
cilower <- numeric()
ciupper <- numeric()
for (i in 1:N) {
CD_theta <- function(x, p, n) {
1 - pbinom (x, size = n, prob = p) + 1/2 * dbinom(x, size = n, prob = p)
}
cilower <- uniroot(function(p) CD_theta(x[i], p, n) - 0.025, c(0, 1))$root
ciupper <- uniroot(function(p) CD_theta(x[i], p, n) - 0.975, c(0, 1))$root
covered[i] <- (cilower < p) & (p < ciupper)
}
mean(covered)
Сообщение об ошибке и выход ниже.
Ошибка в uniroot (функция (p) CD_theta(x[i], p, n) - 0,975, c(0, 1)): значения f () в конечных точках не противоположного знака
среднее (покрыто) [1] 0,9820282
Я делаю какие-либо ошибки в кодировании? Как я могу предотвратить это?