Возможная ошибка в bayesglm() при создании передискретизированных данных непосредственно в вызове функции

Я наблюдаю странное явление при использовании arm::bayesglm(). Если я создаю передискретизированный data.frame непосредственно в вызове функции, он создаст оценки, сосредоточенные вокруг нуля, тогда как если я сначала создаю передискретизированный data.frame, а затем передаю его, похоже, дает правильные оценки:

> bayesglm(I(Species == 'versicolor') ~ I(Sepal.Width <= 2.9), binomial(), data = iris %>% sample_frac(1, replace = T)) %>% tidy(exp = T)
# A tibble: 2 x 5
  term                      estimate std.error statistic  p.value
  <chr>                        <dbl>     <dbl>     <dbl>    <dbl>
1 (Intercept)                  0.458     0.215    -3.63  0.000278
2 I(Sepal.Width <= 2.9)TRUE    1.29      0.355     0.716 0.474   
> local({
+     DF <- iris %>% sample_frac(1, replace = T)
+     bayesglm(I(Species == 'versicolor') ~ I(Sepal.Width <= 2.9), binomial(), data = DF) %>% tidy(exp = T)
+ })
# A tibble: 2 x 5
  term                      estimate std.error statistic      p.value
  <chr>                        <dbl>     <dbl>     <dbl>        <dbl>
1 (Intercept)                  0.212     0.278     -5.57 0.0000000256
2 I(Sepal.Width <= 2.9)TRUE    7.79      0.379      5.42 0.0000000593

Оценки без повторной выборки:

bayesglm(I(Species == 'versicolor') ~ I(Sepal.Width <= 2.9), binomial(), data = iris) %>% tidy(exp = T)
# A tibble: 2 x 5
  term                      estimate std.error statistic      p.value
  <chr>                        <dbl>     <dbl>     <dbl>        <dbl>
1 (Intercept)                  0.214     0.270     -5.71 0.0000000114
2 I(Sepal.Width <= 2.9)TRUE    6.72      0.377      5.05 0.000000442 

и аналогичны версии, в которой data.frame передается после создания.

Проблема не возникает при использовании простого glm ().

0 ответов

Другие вопросы по тегам