如何在 R 中创建显示预测模型、数据和残差的图表

Posted

技术标签:

【中文标题】如何在 R 中创建显示预测模型、数据和残差的图表【英文标题】:How to create a graph showing the predictive model, data and residuals in R 【发布时间】:2012-09-23 20:01:51 【问题描述】:

给定两个变量 xy,我对变量运行 dynlm 回归,并希望根据其中一个变量绘制拟合模型,底部的残差显示实际数据线与预测线。我以前见过它,我以前也做过,但是对于我的一生,我不记得如何去做或找到任何解释它的东西。

这让我进入了我有一个模型和两个变量的球场,但我无法获得我想要的图表类型。

library(dynlm)
x <- rnorm(100)
y <- rnorm(100)
model <- dynlm(x ~ y)

plot(x, type="l", col="red")
lines(y, type="l", col="blue")

我想生成一个看起来像这样的图表,您可以在其中看到模型和真实数据相互重叠,并将残差绘制为底部的单独图表,显示真实数据和模型如何偏离。

【问题讨论】:

我希望我可以选择两者作为答案。他们都完成了我需要他们做的事情。我将接受 Ricardo 的回答,仅仅是因为它添加了置信边界框。 【参考方案1】:

这应该可以解决问题:

library(dynlm)
set.seed(771104)
x <- 5 + seq(1, 10, len=100) + rnorm(100)
y <- x + rnorm(100)
model <- dynlm(x ~ y)

par(oma=c(1,1,1,2))
plotModel(x, model) # works with models which accept 'predict' and 'residuals'

这是plotModel的代码,

plotModel =  function(x, model) 
  ymodel1 = range(x, fitted(model), na.rm=TRUE)
  ymodel2 = c(2*ymodel1[1]-ymodel1[2], ymodel1[2])
  yres1   = range(residuals(model), na.rm=TRUE)
  yres2   = c(yres1[1], 2*yres1[2]-yres1[1])
  plot(x, type="l", col="red", lwd=2, ylim=ymodel2, axes=FALSE,
       ylab="", xlab="")
  axis(1)
  mtext("residuals", 1, adj=0.5, line=2.5)
  axis(2, at=pretty(ymodel1))
  mtext("observed/modeled", 2, adj=0.75, line=2.5)
  lines(fitted(model), col="green", lwd=2)
  par(new=TRUE)
  plot(residuals(model), col="blue", type="l", ylim=yres2, axes=FALSE, 
       ylab="", xlab="")
  axis(4, at=pretty(yres1))
  mtext("residuals", 4, adj=0.25, line=2.5)
  abline(h=quantile(residuals(model), probs=c(0.1,0.9)), lty=2, col="gray")
  abline(h=0)
  box()  

【讨论】:

【参考方案2】:

您正在寻找的是resid(model)。试试这个:

library(dynlm)
x <- 10+rnorm(100)
y <- 10+rnorm(100)
model <- dynlm(x ~ y)

plot(x, type="l", col="red", ylim=c(min(c(x,y,resid(model))), max(c(x,y,resid(model)))))
lines(y, type="l", col="green")
lines(resid(model), type="l", col="blue")

【讨论】:

以上是关于如何在 R 中创建显示预测模型、数据和残差的图表的主要内容,如果未能解决你的问题,请参考以下文章

R语言DALEX包的explain函数生成指定分类预测机器学习模型的解释器predict_diagnostics函数执行残差的局部诊断可视化对比数据集的残差和特定样本(实例观察)邻居的残差的分布

R语言使用DALEX包的explain函数生成指定分类预测机器学习模型的解释器model_diagnostics函数执行模型残差诊断并可视化模型预测值与残差的关系

r 在ui.R中创建一个分区,在dcr中显示一个dc图表

R语言使用DALEX包的model_diagnostics函数对多个分类模型执行残差诊断并可视化模型预测值与残差的关系

如何在 r 中更改和/或分离图形图例中的组件?

R语言使用lm构建线性回归模型并将目标变量对数化实战:可视化模型预测输出与实际值对比图可视化模型的残差模型系数(coefficient)模型总结信息(summary)残差总结信息