估计未指定分布的覆盖率时的Uniroot错误

时间:2018-09-24 17:00:29

标签: r statistics confidence-interval statistics-bootstrap binomial-cdf

我正在尝试计算未指定分布的覆盖率。我已在下面复制了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(function(p)CD_theta(x [i],p,n)-0.975,c(0,1))中的错误:   端点处的f()值不是相反的符号

  

平均值(发现)   [1] 0.9820282

我在编码中犯任何错误吗?我该如何预防?

0 个答案:

没有答案