从逻辑回归绘制多重效应图
Plotting multiple effect plots from logistic regression
我有许多具有不同响应变量但具有相同预测变量的逻辑回归模型。我想使用 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(response A,no response A) 的形式使用响应变量,但对于图中,我想将其更改为更干净的东西(像响应 A)。我尝试通过放置列表来更改 y 标签,但收到警告,并将两个标签都变成了 "Response A"。
plot(elist, ylab=c("response A","response B"),col=2)
然后尝试第二种方法建议将class改成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 轴标签的方法?
使用您创建的 ef1
和 ef2
变量,您可以尝试以下操作
plot1 <- plot(ef1, ylab = "Response A")
plot2 <- plot(ef2, ylab = "Response B")
grid.arrange(plot1, plot2, ncol=2)
我有许多具有不同响应变量但具有相同预测变量的逻辑回归模型。我想使用 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(response A,no response A) 的形式使用响应变量,但对于图中,我想将其更改为更干净的东西(像响应 A)。我尝试通过放置列表来更改 y 标签,但收到警告,并将两个标签都变成了 "Response A"。
plot(elist, ylab=c("response A","response B"),col=2)
然后尝试第二种方法建议将class改成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 轴标签的方法?
使用您创建的 ef1
和 ef2
变量,您可以尝试以下操作
plot1 <- plot(ef1, ylab = "Response A")
plot2 <- plot(ef2, ylab = "Response B")
grid.arrange(plot1, plot2, ncol=2)