Логистический c регрессионный (GLM) вывод: apa.reg.table - PullRequest
0 голосов
/ 23 апреля 2020

Я работал с регрессией logisti c и хотел бы закончить, чтобы сообщить о нескольких моделях ("блоках"), чтобы я мог их сравнить.

Я нашел apa.reg.table, который создает именно тот вывод, который я хотел бы видеть, но, увы, при запуске glm models я получаю сообщения об ошибках. Нет таких сообщений об ошибках, когда я запускаю регрессию. Я особенно заинтересован в сравнении этих блочных моделей по процентному изменению, которое работает нормально при регулярной регрессии.

Вопросы:

  1. Есть ли способ запустить apa.reg. таблица с logisti c регрессия?
  2. Если нет, кто-нибудь знает какие-либо пакеты или методы, которые могут быть использованы, чтобы помочь мне достичь моих целей?

... В исследуя проблему, я запустил базу данных iris:

data(iris)

... и затем провел серию из четырех последовательных регрессий logisti c:

#Logistic regression models
MODEL_A<-glm(species~sepal.len, data=iris,, family=binomial())
MODEL_B<-glm(species~sepal.len+sepal.wid, data=iris, family=binomial())
MODEL_C<-glm(species~sepal.len+sepal.wid+petal.len, data=iris, family=binomial())
MODEL_D<-glm(species~sepal.len+sepal.wid+petal.len+petal.wid, data=iris, family=binomial())

apa.reg.table(MODEL_A,MODEL_B,MODEL_C,MODEL_D)


... но я получить следующие сообщения об ошибках:

#Error in if (F.value < 0) stop("Your 'F.value' is not correctly specified.") : 
# argument is of length zero
#In addition: Warning messages:
#1: Unknown or uninitialised column: 'r.squared'. 
#2: Unknown or uninitialised column: 'p.value'.

... в обычном регрессионном анализе он работает нормально:

#regression models:
MODEL_B2<-lm(sepal.len~sepal.wid, data=iris)
MODEL_C2<-lm(sepal.len~sepal.wid+petal.len, data=iris)
MODEL_D2<-lm(sepal.len~sepal.wid+petal.len+petal.wid, data=iris)

#create table with regression models--no error messages:
apa.reg.table(MODEL_B2,MODEL_C2,MODEL_D2)

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете попробовать использовать метлу:

library(broom)

colnames(iris) =c("sepal.len","sepal.wid","petal.len","petal.wid","species")

MODEL_A<-glm(species~sepal.len, data=iris,, family=binomial())
MODEL_B<-glm(species~sepal.len+sepal.wid, data=iris, family=binomial())
MODEL_C<-glm(species~sepal.len+sepal.wid+petal.len, data=iris, family=binomial())
MODEL_D<-glm(species~sepal.len+sepal.wid+petal.len+petal.wid, data=iris, family=binomial())

Вы можете иметь их в списке:

lapply(list(MODEL_A,MODEL_B,MODEL_C,MODEL_D),tidy)

Или:

library(dplyr)
library(purrr)

res = tibble(name=c("MODEL_A","MODEL_B","MODEL_C","MODEL_D"),
models=list(MODEL_A,MODEL_BMODEL_C,MODEL_D)) %>% 
mutate(coef=map(models,tidy),stats=map(models,glance))

`

затем:

res %>% unnest(coef)

res %>% unnest(stats)
...