Как рассчитать 95% доверительные интервалы с помощью bayesboot () - PullRequest
0 голосов
/ 16 декабря 2018

Мне нужна помощь для расчета основанных на начальной загрузке вероятных интервалов количества qtt.ci из моей регрессии coef.def.

Пока мои попытки привели кв:

Ошибка в quantile.default (с, с (0,025, 0,25, 0,5, 0,75, 0,975)): пропущенные значения и значения NaN недопустимы, если «na.rm» равен FALSE

предшествует:

Предупреждающее сообщение: В байесовой загрузке (dat, boot_fn): образец байесовой загрузки содержит либо 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 я попытался выполнить начальную загрузку, чтобы получить95% CI для количества qtt.ci (это количество, для которого я хочу получить загруженный CI), но безуспешно:

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

Следовательно, это не дает CI для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 голосов
/ 16 декабря 2018

Следующее решает проблему предупреждения.Я проверил это с гораздо меньшим количеством прогонов, вместо 4000 всего за 100.

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)

Edit.

Согласно формуле в вопросе и диалогу в комментарияхс помощью OP, чтобы запустить CI на основе начальной загрузки:

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