R语言广义相加(加性)模型(GAMs)与光滑函数可视化

科技   科技   2024-09-27 17:34   上海  

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


在本文中,我们在研究工作中使用广义加性模型(GAMs)。mgcv软件包是一套优秀的软件,可以为非常大的数据集指定、拟合和可视化GAMs点击文末“阅读原文”获取完整代码数据


相关视频



这篇文章介绍一下广义加性模型(GAMs)目前可以实现的功能。

我们需要加载mgcv

library('mgcv')

受欢迎的例子数据集

dat中的数据在GAM相关的研究中得到了很好的研究,包含了一些协变量--标记为x0到x3--这些协变量在不同程度上与因变量有非线性关系。


我们想通过使用样条来逼近协变量和因变量之间的真实关系来尝试拟合这些关系。为了拟合一个加性模型,我们使用

 gam(y ~ s(x0) + s(x1) + s(x2) + s(x3), dat,  "REML")

mgcv提供了一个summary()方法,用来提取关于拟合GAM的信息。

check()函数,用于检查模型中的每个光滑_函数_是否使用了足够数量的基函数。你可能没有直接使用check()——会输出其他诊断结果,也会产生四个模型诊断图。

绘制光滑_函数_图

为了将估计的GAMs可视化,mgcv提供了plot.gam()方法和vis.gam()函数,从对象中产生类似ggplot2的图。为了使GAM模型中的四个估计光滑_函数_可视化,我们将使用

plot(mod)

结果是绘制mod GAM中每一个光滑_函数_。


点击标题查阅往期内容


对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归


左右滑动查看更多


01

02

03

04



使用plot函数在绘图设备上绘制多个面板,并将各个绘图排成一行。

提取光滑_函数_数据

用于处理mod中表示的基础光滑_函数_,如果你想提取用于构建该图的大部分数据,你可以使用smooth()函数。

smooth(mod, "x1")

诊断图

由check()产生的诊断图

check(mod)

结果是一个包含四个诊断图的数组,包括模型残差的Q-Q图(左上)和直方图(左下),残差与线性预测器的图(右上),以及观察值与拟合值的图。

这四张图中的每一张都是通过用户可访问的函数生成的,函数实现了一个特定的图。例如,qqplot(mod)产生上图左上方的Q-Q图。

qqplot(mod)

qqplot(mod)的结果是一个残差的Q-Q图,其中的参考量值是通过模拟拟合模型的数据而得到。

还可以处理目前可用的许多更专业的光滑_函数_。例如,二维光滑_函数_。

plot(mod)

二维光滑_函数_的默认绘制方式是使用plot()。

和因子光滑_函数_交互项,相当于光滑曲线的随机斜率和截距,被画在一个面板上,颜色被用来区分不同的随机光滑_函数_。

## 模拟数据
f0 <- function(x) 2 * sin(pi * x)
f1 <- function(x, a=2, b=-1exp(a * x)+b
f2 <- function(x) 0.2 * x^11 * (10 * (1 - x))^6 + 10 * (10 * x)^3 * (1 - x)^10
f <- f0(x0) + f1(x1, a\[fac\], b\[fac\]) + f2(x2)
fac <- factor(fac)
y <- f + rnorm(n) * 2


plot(mod)

含有因子-光滑_函数_交互项的更复杂的GAM的结果,bs = 'fs'。

还能做什么?

可以处理mgcv可以估计的大多数光滑_函数_,包括带有因子和连续副变量的按变量光滑_函数_、随机效应光滑_函数_(bs = 're')、二维张量积光滑_函数_,以及带有参数项的模型。

参考文献

Augustin, N. H., Sauleau, E.-A., and Wood, S. N. (2012). On quantile quantile plots for generalized linear models. Computational statistics & data analysis 56, 2404–2409. doi:10.1016/j.csda.2012.01.026.




本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 


点击文末“阅读原文”

获取全文完整资料


本文选自《R语言广义相加(加性)模型(GAMs)与光滑函数可视化》。




点击标题查阅往期内容

对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
【视频】广义相加模型(GAM)在电力负荷预测中的应用
分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
实现广义相加模型GAM和普通最小二乘(OLS)回归
R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
R语言广义加性模型GAMs分析温度、臭氧环境数据绘制偏回归图与偏残差图
R语言广义相加(加性)模型(GAMs)与光滑函数可视化
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言ISLR工资数据进行多项式回归和样条回归分析
R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
R语言中的多项式回归、B样条曲线(B-spline Curves)回归
R语言广义相加模型 (GAMs)分析预测CO2时间序列数据
R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
Python用广义加性模型GAM进行时间序列分析
R语言广义线性模型GLM、多项式回归和广义可加模型GAM预测泰坦尼克号幸存者
R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口
R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归


拓端数据部落
拓端(tecdat.cn)创立于2016年,提供专业的数据分析与挖掘服务,致力于充分挖掘数据价值。
 最新文章