这是线性模型和 ggplot 的典型示例:
require(ggplot2)
utils::data(anorexia, package = "MASS")
anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
family = gaussian, data = anorexia)
coef(anorex.1)
(Intercept) Prewt TreatCont TreatFT
49.7711090 -0.5655388 -4.0970655 4.5630627
ggplot(anorexia, aes(y=Postwt, x=Prewt)) + geom_point() + geom_smooth(method='lm', se=F)
我的问题是由以下方法进行的回归geom_smooth(...)
与以下型号不同anorex.1
but is:
coef(lm(Postwt ~ Prewt, data=anorexia))
(Intercept) Prewt
42.7005802 0.5153804
我怎样才能绘制模型anorexia1
在 ggplot 上?
我可以取截距(49.77)并估计(-0.5655)吗anorexia1
for Prewt
并用 geom_abline(..) 绘制它,这是正确的吗?有更简单的解决方案吗?
由于您的模型包含两个预测变量(水平的不同截距值)以及偏移变量,因此不可能直接将其包含在geom_smooth()
。一种方法是制作新的数据框dat.new
包含的值Prewt
对于所有三个级别Treat
。然后使用这个新的数据框来预测Postwt
使用模型的所有级别的值并将预测值添加到新数据框
new.dat<-data.frame(Treat=rep(levels(anorexia$Treat),each=100),
Prewt=rep(seq(70,95,length.out=100),times=3))
anorexia.2<-data.frame(new.dat,Pred=predict(anorex.1,new.dat))
head(anorexia.2)
Treat Prewt Pred
1 CBT 70.00000 80.18339
2 CBT 70.25253 80.29310
3 CBT 70.50505 80.40281
4 CBT 70.75758 80.51253
5 CBT 71.01010 80.62224
6 CBT 71.26263 80.73195
现在,从原始数据框中绘制原始点,并使用包含预测的新数据框添加线条。
ggplot(anorexia,aes(x=Prewt,y=Postwt,color=Treat))+geom_point()+
geom_line(data=anorexia.2,aes(x=Prewt,y=Pred,color=Treat))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)