0

我正在运行一个线性回归模型并使用 GAM 包来利用 plot.gam 函数。我倾向于稍后拟合非线性模型。

但是,为了获得 y 轴上的原始比例,我正在针对响应变量制作每个预测变量的单独图。该图应显示线性拟合线。但是,我得到一个线图,它在 x (maxt) 的某个范围内增加并在另一个范围内减小。我尝试对 x 变量 (maxt) 上的数据进行排序,但这没有帮助。鉴于 maxt 上的斜率系数为负,拟合值应随着 maxt 从负变为正而均匀下降。但这并没有发生。我确定我错过了一些东西。

这是我的 R 代码

library(gam)     
reg.l<-gam(y.res~ maxt.res + mint.res + sr.res+ rain.res + share.res,data=data.res)
#creating newdata for prediction
pred.data<-data.frame(data.res$maxt.res,mint=mean(data.res$mint.res),sr=mean(data.res$sr.res), rain=mean(data.res$rain.res),share_irrigated=mean(data.res$share.res))
names(pred.data)[1]<-"maxt"
ndx=order(pred.data$maxt)
pred.sorted=pred.data[ndx,]
save(pred.sorted,file="/users/ridhima/documents/paper3/R/pred.sorted.rda") 
load("/users/ridhima/documents/paper3/R/pred.sorted.rda")
#getting the fitted values 
fits=predict(reg.l, newdata=pred.sorted,type="response", se.fit=TRUE)
predicts=data.frame(pred.sorted,fits)
ndx1=order(predicts$maxt)
predicts.sorted=predicts[ndx1,]
library(ggplot2)
pdf("test2.pdf")
ggplot(aes(x=maxt,y=fit),data=predicts.sorted) + geom_smooth(aes(ymin=fit-   1.96*se.fit,ymax=fit+1.96*se.fit),fill="gray80",size=1,stat="identity")+geom_rug(sides="b")
dev.off()

plot.gam 显示的图显示了一条线性拟合线,但我不知道为什么我的图不起作用。提前谢谢了。

4

0 回答 0