Uniroot ошибка при оценке вероятности покрытия для неопределенного распределения - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь вычислить вероятность покрытия для неопределенного распределения.Я скопировал мои 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

Я делаю какую-либо ошибку в кодировании?Как я могу предотвратить это?

...