Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ggplot2 r中绘制GLM模型_R_Ggplot2 - Fatal编程技术网

在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))