R语言广义相加模型 (GAMs)分析预测CO2时间序列数据

本文介绍了R语言中使用广义相加模型(GAM)来处理非线性趋势和周期性效应的数据分析。通过模拟数据和CO2浓度数据的例子,展示了GAM如何通过光滑函数(如样条曲线)来捕捉复杂关系,并解释了模型的诊断和解释方法。GAM结合了线性模型和光滑项,能有效拟合非线性分布的数据,如电力负荷预测和环境科学中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全文下载链接:http://tecdat.cn/?p=20904

环境科学中的许多数据不适合简单的线性模型,最好用广义相加模型(GAM)来描述点击文末“阅读原文”获取完整代码数据

相关视频

4691713ffdeddf765af7c12e3c7215f7.png

这基本上就是具有 光滑函数的广义线性模型(GLM)的扩展 。当然,当您使用光滑项拟合模型时,可能会发生许多复杂的事情,但是您只需要了解基本原理即可。

相关视频

理论

让我们从高斯线性模型的方程开始 :

97ad6950ec42d82d4f0fe14479c3894b.png

GAM中发生的变化是存在光滑项:

803f91ec89889ee5790034487201fd5b.png

这仅意味着对线性预测变量的贡献现在是函数f。从概念上讲,这与使用二次项(da1174f6997e3a33e1af6864d7791aa0.png)或三次项(5c9c9afae96e1d762eefb4143460ca67.png)作为预测变量没什么不同。

在这里,我们将重点放在样条曲线上。在过去,它可能类似于分段线性函数。

例如,您可以在模型中包含线性项和光滑项的组合

4a23b3665d848e58328558b57611578e.png

或者我们可以拟合广义分布和随机效应

0e8768735211332748dd6b4376243475.png

一个简单的例子

让我们尝试一个简单的例子。首先,让我们创建一个数据框,并创建一些具有明显非线性趋势的模拟数据,并比较一些模型对该数据的拟合程度。

x <- seq(0, pi * 2, 0.1)
sin_x <- sin(x)
y <- sin_x + rnorm(n = length(x), mean = 0, sd = sd(sin_x / 2))
Sample <- data.frame(y,x)
library(ggplot2)
ggplot(Sample, aes(x, y)) + geom_point()

3858ea09fa2dba24531a8119a17eb088.png

尝试拟合普通的线性模型:

lm_y <- lm(y ~ x, data = Sample)

并使用geom_smooth in 绘制带有数据的拟合线 ggplot

ggplot(Sample, aes(x, y)) + geom_point() + geom_smooth(method = lm)

ae7b246c33ea12a0f27ce0250733a14d.png

查看图或 summary(lm_y),您可能会认为模型拟合得很好,但请查看残差图

plot(lm_y, which = 1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值