我一直在进行逻辑回归,并希望用完该报告几个模型(“块”),因此我可以对其进行比较。
我找到了apa.reg.table,它创建的输出正是我想看到的那种,但是,,,运行glm模型时,出现错误消息。运行回归时没有此类错误消息。我对通过百分比变化比较这些块模型特别感兴趣,该变化在常规回归中运行良好。
问题:
...在研究问题时,我运行了虹膜数据库:
data(iris)
...然后运行了一系列四个连续的逻辑回归:
#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)
任何帮助将不胜感激。
您可以尝试使用扫帚:
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)