Возможная ошибка в 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 ().