нижний индекс при использовании broom :: tidy () в svyglm с неизменяемым термином - PullRequest
0 голосов
/ 04 февраля 2020

Я получаю нижний индекс ошибки при использовании 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() чувствителен к порядку ковариат в формуле?

...