Возможная ошибка в bayesglm () при создании пересчитанных данных непосредственно в вызове функции - PullRequest
0 голосов
/ 28 января 2020

Я наблюдаю странное явление при использовании 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 ().

...