从逻辑回归中绘制多个效果图

时间:2018-01-22 23:05:11

标签: r logistic-regression gridextra

我有许多逻辑回归模型,它们具有不同的响应变量,但具有相同的预测变量。我想使用grid.arrange(或其他任何东西)制作一个带有效果包的效果图的单个图形。我按照这里的建议制作了这样一张图:grid.arrange with John Fox's effects plots

library(effects)
library(gridExtra)
data <- structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L,1L, 1L, 2L, 2L, 2L), .Label = c("group1", "group2"), class = "factor"),obs = c(1L, 1L, 4L, 4L, 6L, 12L, 26L, 1L, 10L, 6L),responseA = c(1L, 1L, 2L, 0L, 1L, 10L, 20L, 0L, 3L, 2L), responseB = c(0L, 0L, 2L, 4L, 6L, 4L, 8L, 1L, 8L, 5L)), .Names = c("group", "obs", "responseA","responseB"), row.names = c(53L, 54L, 55L, 56L, 57L, 58L,59L, 115L, 116L, 117L), class = "data.frame")
model1<-glm(cbind(responseA,(obs-responseA))~group,family=binomial, data=data)
model2<-glm(cbind(responseA,(obs-responseA))~group,family=binomial, data=data)
ef1 <-allEffects(model1)[[1]]
ef2 <- allEffects(model2)[[1]]
elist <- list( ef1,ef2)
class(elist) <- "efflist"
plot(elist, col=2)

问题在于,在模型中我使用模型中的响应变量,形式为cbind(响应A,没有响应A),但对于图,我想将其更改为更干净的东西(如Response)一个)。我尝试通过放置一个列表来更改y标签,但是收到了警告,并且它将两个标签都转换为&#34;响应A&#34;。

plot(elist, ylab=c("response A","response B"),col=2)   

然后尝试了第二种方法建议将类更改为trellis,出现错误,因此grid.arrange也不起作用。

p1<-plot(allEffects(model1),ylab="Response A")
p2<-plot(allEffects(model2),ylab="Response B")
class(p1) <- class(p2) <- "trellis"
grid.arrange(p1, p2, ncol=2)

任何人都可以提供单独更改每个y轴标签的方法吗?

1 个答案:

答案 0 :(得分:0)

使用您创建的ef1ef2个变量,您可以尝试以下

plot1 <- plot(ef1, ylab = "Response A")
plot2 <- plot(ef2, ylab = "Response B")
grid.arrange(plot1, plot2, ncol=2)
相关问题