Я получаю нижний индекс ошибки при использовании tidy()
на svyglm
, где одно из ковариат не изменяется:
library(broom)
library(tidyverse)
library(survey)
test.df <- tibble(
id = c(1,2,3,4),
weights = c(1,1,1,1),
outcome = c(0,0,1,1),
var1 = c(1,1,1,1),
var2 = c(5,8,10,6)
)
svyglm(formula = outcome ~ var1 + var2,
design = svydesign(ids = ~id, weights = ~weights, data = test.df),
family = "binomial") %>%
tidy(exp = TRUE,
conf.int = TRUE)
#> Error in CI[piv, , drop = FALSE]: subscript out of bounds
Ошибка, кажется, чувствительна к порядку в которой ковариаты указаны в формуле, что меня удивило. Если порядок обратный, ошибка не возникает:
svyglm(formula = outcome ~ var2 + var1,
design = svydesign(ids = ~id, weights = ~weights, data = test.df),
family = "binomial") %>%
tidy(exp = TRUE,
conf.int = TRUE)
#> # A tibble: 2 x 7
#> term estimate std.error statistic p.value conf.low conf.high
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 (Intercept) 0.0403 4.05 -0.792 0.511 0.0000144 113.
#> 2 var2 1.56 0.508 0.875 0.474 0.576 4.22
Ошибка возникает только при запросе доверительных интервалов:
svyglm(formula = outcome ~ var1 + var2,
design = svydesign(ids = ~id, weights = ~weights, data = test.df),
family = "binomial") %>%
tidy(exp = TRUE)
#> # A tibble: 2 x 5
#> term estimate std.error statistic p.value
#> <chr> <dbl> <dbl> <dbl> <dbl>
#> 1 (Intercept) 0.0403 4.05 -0.792 0.511
#> 2 var2 1.56 0.508 0.875 0.474
Может ли это быть проблемой с broom
, или я что-то пропустил? Почему tidy()
чувствителен к порядку ковариат в формуле?