如何在残差的ggplot直方图中添加正态分布曲线
在残差直方图中添加拟合正态分布曲线
基于你提供的fpp3代码,要在残差直方图上叠加以残差均值和方差为参数的正态分布曲线,只需对直方图代码做以下修改:
aug <- google_2015 |> model(NAIVE(Close)) |> augment() # 生成带正态曲线的残差直方图 aug |> ggplot(aes(x = .innov)) + # 用密度而非计数作为y轴,与正态曲线尺度匹配 geom_histogram(aes(y = after_stat(density)), bins = 15, alpha = 0.7, fill = "lightblue", color = "black") + # 添加拟合的正态分布曲线 stat_function( fun = dnorm, args = list(mean = mean(aug$.innov, na.rm = TRUE), sd = sd(aug$.innov, na.rm = TRUE)), color = "red", linewidth = 1 ) + labs( title = "残差直方图与拟合正态分布曲线", x = "残差值", y = "密度" )
关键说明:
- 必须将直方图的y轴设置为密度(density):通过
after_stat(density)实现,这样才能和正态分布的概率密度曲线在同一尺度上对比,避免因计数和密度的数值差异导致曲线无法正常显示。 - 使用
stat_function调用正态分布密度函数dnorm,传入的参数直接从残差数据中计算:mean(aug$.innov, na.rm = TRUE)和sd(aug$.innov, na.rm = TRUE),na.rm=TRUE用于处理可能存在的缺失残差值。 - 可根据需求调整
bins数量、填充色、曲线颜色/线宽等参数,优化图表视觉效果。
内容的提问来源于stack exchange,提问作者Ray Tayek
相关产品推荐
相关产品推荐

