在ggplot2 r中绘制GLM模型
对于这个显而易见的问题,我深表歉意,但以防有一个简单的答案!以下是我的数据的示例:在ggplot2 r中绘制GLM模型,r,ggplot2,R,Ggplot2,对于这个显而易见的问题,我深表歉意,但以防有一个简单的答案!以下是我的数据的示例: DATA <- data.frame( TotalAbund = sample(1:10), TotalHab = sample(0:1), TotalInv = sample(c("yes", "no"), 20, replace = TRUE) ) DATA$TotalHab<-as.factor(DATA$TotalHab) DATA 有没有一种方法也可以用ggplot实现这一点?谢谢您可以这
DATA <- data.frame(
TotalAbund = sample(1:10),
TotalHab = sample(0:1),
TotalInv = sample(c("yes", "no"), 20, replace = TRUE)
)
DATA$TotalHab<-as.factor(DATA$TotalHab)
DATA
有没有一种方法也可以用ggplot实现这一点?谢谢您可以这样做: 创建一个“预测框”,其中包含您想要预测的相关值(如果您有一个连续的预测器,则包含均匀分布的值可能更有意义,例如
seq(min(cont\u pred)、max(cont\u pred)、length=51)
)
将图层添加到图形中。唯一令人讨厌的是使用手动调整宽度的position\u dodge
,以匹配条的宽度。。。(我在这里假设您已将现有绘图保存为gg1
。)
ggplot2
使用数据帧,而不是glm
对象。因此,不,不能直接复制以glm
对象作为输入的绘图。但是,通过一些简单的数据操作,您可以轻松地在ggplot中执行任何您想要的操作。注意,请提供所需的outputHi Alex,我在上面添加了一个最小的数据集。我第一次尝试这样做,所以希望它能起作用:)太好了,似乎已经起作用了。我使用的是对数线性模型,是否可以变换y轴以显示指数值?我如何在这些点上包含95%的置信区间?对不起,所有的问题。我只是不熟悉这种绘图方式,所以觉得很困惑。谢谢你的帮助!您可能应该问另一个问题,链接到此问题。。。一些提示(如果你想自己解决);有关y轴缩放的一种方法,请参见scale\u y\u log10();对于CI,请尝试?predict.lm
并查找“interval”参数。。。
p <- ggplot(DATA, aes(x=factor(TotalInv), y=TotalAbund,colour=TotalHab))
p + geom_boxplot() + geom_jitter()
MOD.1<-glm(TotalAbund~TotalInv+TotalHab, data=DATA)
visreg(MOD.1)
pframe <- with(DATA,
expand.grid(TotalInv=unique(TotalInv),
TotalHab=unique(TotalHab)))
pframe$TotalAbund <- predict(MOD.1,newdata=pframe)
gg1 + geom_point(data=pframe,size=8,shape=16,alpha=0.7,
position=position_dodge(width=0.75))