【问题标题】:Scatter plot lines for a linear model using stat_smooth使用 stat_smooth 的线性模型的散点图线
【发布时间】:2020-03-04 17:19:49
【问题描述】:

我的问题是相当基本的,如果我遗漏了一些明显的东西,我很抱歉..

无论如何,使用以下代码:

library(gcookbook)
library(ggplot2)

x <- ggplot(heightweight, aes(x = ageYear, y = heightIn))+
geom_point()+
stat_smooth(method = lm, level = 0.95)

x

我明白剧情了:

图表显示不错,但置信度为 95%,为什么灰色边界外有这么多点?

【问题讨论】:

  • 您查看的是置信区间而不是预测区间(请参阅 predict.lm),因此这是回归的置信区间。

标签: r ggplot2 statistics


【解决方案1】:

geom_smooth 提供的 se 是预测的标准误差,您看到的置信区间是预测的 +/- 1.96*se,请参阅下面的计算方法:

fit = lm(heightIn ~ ageYear,data=heightweight)
newdata = data.frame(ageYear=seq(min(heightweight$ageYear),
max(heightweight$ageYear),by=0.1))
pred = predict(fit,newdata,se=TRUE)
newdata$heightIn = pred$fit
newdata$se = pred$se.fit

ggplot(heightweight, aes(x = ageYear, y = heightIn))+
geom_point()+
geom_line(data=newdata,col="cadetblue")+
geom_ribbon(data=newdata,aes(ymin=heightIn-1.96*se,ymax=heightIn+1.96*se),
alpha=0.2,fill="cadetblue")

如果您希望数据有 95% 的置信区间,您可以尝试:

ggplot(heightweight, aes(x = ageYear, y = heightIn))+
     geom_point()+
     geom_quantile(quantiles=c(0.05,0.5,0.95))

【讨论】:

  • 感谢@StupidWolf 的解释,我会深入研究并为您提供反馈
  • 好的,我知道了。我只是不明白 se 是如何计算的。例如,根据模型,最小年龄(11.58)的身高预测为 57.68034。那个年龄的 se 是如何返回 0.339 的?
  • 如果你简单看一下这个页面上的公式,lbelzile.github.io/lineaRmodels/…,有一部分 s^2 是估计的方差。随着你的样本增加,你的 s^2 会变小
  • 在这种情况下,您有很多观察值,n>200,因此误差很小。我知道这是违反直觉的,但请记住,您所推断的是这个位置的平均值以及您可能处于多远。它并没有告诉您传播数据可以是
  • 你也可以尝试用更小的数据子集拟合它,你可以看到置信区间增加了
猜你喜欢
  • 2012-06-27
  • 2021-02-06
  • 2020-04-29
  • 2021-01-28
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
相关资源
最近更新 更多