glm()用线拟合值叠加观察值

时间:2017-03-16 14:18:00

标签: r plot glm predict

我使用glm()函数拟合了一个广义线性模型:

glm.1<-glm(mean.ucrit~mean.cfar+mean.pfar, data=data.framesubset.data[,5:7)

到以下数据集

df <- structure(list(
  mean.ucrit = c(49.77333, 45.11583, 37.99857, 35.12, 42.756, 50.072, 31.38, 36.16, 44.886, 46.918, 34.14333, 34.29889),mean.pfar = c(2.132708, 1.932134, 1.430064, 1.450185, 1.757072, 1.660343, 1.25193, 1.24157, 1.952892, 1.6918, 1.239066, 1.261935), 
  mean.cfar = c(1.733488, 1.665215, 1.408729, 1.2432, 1.608205, 1.954107, 1.27803, 1.414688, 1.706217, 1.777127, 1.239066, 1.26193)),
  .Names = c("mean.ucrit", "mean.pfar", "mean.cfar"), 
  class = "data.frame", row.names = c(NA, -12L)
)

我可以使用summary(glm.1)获取模型摘要。

我现在要做的是生成一个图,其中预测变量mean.ucrit的拟合值或预测值为mean.pfar + mean.cfar的函数,置信带为95%,并与观测值重叠

一次只能使用一个预测器:

glm.1<-glm(mean.ucrit~mean.pfar, data=df)
preds<-predict(glm.1, se.fit = TRUE, type="response")
pred.w.plim <- predict(glm.1, interval = "prediction")
pred.w.clim <- predict(glm.1, interval = "confidence")
plot(df$mean.pfar,df$mean.ucrit)
lines(df$mean.pfar,pred.w.plim)

这给了我这样的情节(对不起只发布链接,根据SO,我没有足够的代表发布图像): mean.ucrit~mean.pfar

但根据我的理解,模型化响应应该基于 mean.pfarmean.cfar的加法效应。

所以我尝试这样做并以与上面相同的方式进行绘图:

glm.2<-glm(df$mean.ucrit~df$mean.cfar+mean.pfar, data=df)
preds<-predict(glm.2, se.fit = TRUE, type="terms")
pred.w.plim <- predict(glm.2, interval = "prediction")
pred.w.clim <- predict(glm.2, interval = "confidence")
plot(df$mean.pfar,df$mean.ucrit)
plot(df$mean.pfar+df$mean.cfar,df$mean.ucrit)
lines(df$mean.pfar+df$mean.cfar,pred.w.plim)

我有一个这样的情节: ucrit~pfar+cfar

有人能够告诉我为什么这不像以前的情节那样有效吗?看起来lines函数使用df$mean.pfar+df$mean.cfar的值,但是以错误的顺序绘制它们。有没有办法将建模的mean.ucrit绘制为两个预测变量影响的函数?为什么我现在这样做的方式可能不起作用?

我的第一个猜测是这是不可能的,因为你不能在不保持另一个变量的情况下绘制对一个变量的响应。但是,如果一个回应应该是两个预测​​因子的影响的总和......或者我在这里遗漏了什么,那就没有意义了吗?

我考虑过创建一个新变量;例如new.var<-df$mean.pfar+df$mean.cfar并将其用作模型中的预测变量,但结果与预测变量在模型中单独使用时的结果不同。

修改 通过反思,我意识到我只想将mean.ucrit作为mean.pfarmean.cfar的函数绘制在不同的图上,观察值覆盖回归线和置信带。我尝试过以下方法:

glm.2<-glm(df$mean.ucrit~df$mean.cfar+mean.pfar, data=df)
preds<-predict(glm.2, se.fit = TRUE, type="response")
pred.w.plim <- predict(glm.2, interval = "prediction")
pred.w.clim <- predict(glm.2, interval = "confidence")
plot(df$mean.pfar,df$mean.ucrit)
lines(df$mean.pfar,pred.w.plim)

图中我看起来像这样: mean.ucrit~mean.pfar

我认为有可能从2个预测变量模型中针对响应绘制一个预测变量。我在这里做错了什么?

绘制一个预测变量与一个响应,似乎不起作用。当模型只包含一个变量时,可能是这样,但对于双变量模型,上述步骤不起作用。

0 个答案:

没有答案