如何使用bayesboot()计算95%的置信区间

时间:2018-12-16 12:46:37

标签: r logistic-regression bayesian confidence-interval statistics-bootstrap

我需要帮助,以便根据我的回归qtt.ci计算出数量coef.def的{​​{3}} bootstrap-based

到目前为止,我的尝试已导致:

  

分位数中的错误。default(s,c(0.025,0.25,0.5,0.75,0.975)):   缺少值,并且如果'na.rm'为FALSE,则不允许使用NaN

之前:

  

警告消息:在bayesboot(dat,boot_fn)中:来自以下示例   bayesboot包含NA,NaN或NULL。确保您的   统计函数仅返回实际值。

这是我的示例数据:

dat <- data.frame(
  A = c(1, 1, 0, 0), B = c(1, 0, 1, 0),
  Pass = c(278, 100, 153, 79), Fail = c(743, 581, 1232, 1731)

下面是我的回归。我想获得基于引导的95%可信区间的数量为qtt.ci

boot_fn <- function(dat) {
           coef.def = unname(coef(glm(cbind(Pass, Fail) ~ A * B, binomial, 
           dat)))
                          }
qtt.ci <- exp(sum(coef.def[2:4])) - exp(coef.def[2]) - exp(coef.def[3]) + 1

这是我的尝试:

bb_ci <- bayesboot(dat, boot_fn)
summary(bb_ci)

不确定如何获取qtt.ci的基于引导的置信区间。

谢谢。

编辑:

在@RuiBarradas回答之后,我尝试进行引导以获取数量qtt.ci(这是我要获取引导的CI的数量)的95%CI,但未成功:< / strong>

library(bayesboot)

boot_fn <- function(dat) {
      coef.def <- unname(coef(glm(cbind(Pass, Fail) ~ A * B, binomial, dat)))
      qtt<- (exp(sum(coef.def[2:4])) - exp(coef.def[2]) - exp(coef.def[3]) + 1) 
      if(all(!is.na(qtt))) qtt else NULL
    }

Runs <- 1e2
qtt.ci <- bayesboot(dat, boot_fn, R = Runs, R2 = Runs)
summary(qtt.ci)

Quantiles:
 statistic    q2.5%     q25%   median     q75%   q97.5%
        V1 2.705878 2.705878 2.705878 2.705878 2.705878

因此,这不会给出qtt.ci的配置项。输出只是qtt的点估计:

qtt<-(exp(sum(coef.def[2:4])) - exp(coef.def[2]) - exp(coef.def[3]) + 1) 
qtt
[1] 2.705878

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

以下内容解决了警告问题。我已经用更少的运行次数对它进行了测试,而不是4000次。

library(bayesboot)

boot_fn <- function(dat) {
  fit <- glm(cbind(Pass, Fail) ~ A * B, binomial, dat)
  coef.def <- unname(coef(fit))
  if(all(!is.na(coef.def))) coef.def else NULL
}

Runs <- 1e2
bb_ci <- bayesboot(dat, boot_fn, R = Runs, R2 = Runs)
summary(bb_ci)

编辑。

根据问题中的公式以及带有OP的注释中的对话框,以运行基于引导程序的CI:

qtt <- exp(sum(bb_ci[2:4])) - exp(bb_ci[2]) - exp(bb_ci[3]) + 1