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

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

我们在研究工作中使用广义加性模型(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中每一个光滑_函数_。

使用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=-1) exp(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.


相关文章
|
6月前
|
数据可视化 数据挖掘 图形学
R语言基础可视化:使用ggplot2构建精美图形的探索
【8月更文挑战第29天】 `ggplot2`是R语言中一个非常强大的图形构建工具,它基于图形语法提供了一种灵活且直观的方式来创建各种统计图形。通过掌握`ggplot2`的基本用法和美化技巧,你可以轻松地将复杂的数据转化为直观易懂的图形,从而更好地理解和展示你的数据分析结果。希望本文能够为你探索`ggplot2`的世界提供一些帮助和启发。
|
6月前
|
数据可视化 数据挖掘 数据处理
R语言高级可视化技巧:使用Plotly与Shiny制作互动图表
【8月更文挑战第30天】通过使用`plotly`和`shiny`,我们可以轻松地创建高度互动的数据可视化图表。这不仅增强了图表的表现力,还提高了用户与数据的交互性,使得数据探索变得更加直观和高效。本文仅介绍了基本的使用方法,`plotly`和`shiny`还提供了更多高级功能和自定义选项,等待你去探索和发现。希望这篇文章能帮助你掌握使用`plotly`和`shiny`制作互动图表的技巧,并在你的数据分析和可视化工作中发挥更大的作用。
|
4月前
|
数据挖掘 C语言 C++
R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。
【10月更文挑战第21天】时间序列分析是一种重要的数据分析方法,广泛应用于经济学、金融学、气象学、生态学等领域。R语言是一种强大的统计分析工具,提供了丰富的函数和包用于时间序列分析。本文将介绍使用R语言进行时间序列分析的基本概念、方法和实例,帮助读者掌握R语言在时间序列分析中的应用。
79 3
|
5月前
|
机器学习/深度学习 算法 前端开发
R语言基础机器学习模型:深入探索决策树与随机森林
【9月更文挑战第2天】决策树和随机森林作为R语言中基础且强大的机器学习模型,各有其独特的优势和适用范围。了解并熟练掌握这两种模型,对于数据科学家和机器学习爱好者来说,无疑是一个重要的里程碑。希望本文能够帮助您更好地理解这两种模型,并在实际项目中灵活应用。
|
6月前
|
数据可视化
R语言可视化设计原则:打造吸引力十足的数据可视化
【8月更文挑战第30天】R语言可视化设计是一个综合性的过程,需要综合运用多个设计原则来创作出吸引力十足的作品。通过明确目标、选择合适的图表类型、合理运用色彩与视觉层次、明确标注与引导视线以及引入互动性与动态效果等原则的应用,你可以显著提升你的数据可视化作品的吸引力和实用性。希望本文能为你提供一些有益的启示和帮助。
|
6月前
|
资源调度 数据挖掘
R语言回归分析:线性回归模型的构建与评估
【8月更文挑战第31天】线性回归模型是统计分析中一种重要且实用的工具,能够帮助我们理解和预测自变量与因变量之间的线性关系。在R语言中,我们可以轻松地构建和评估线性回归模型,从而对数据背后的关系进行深入的探索和分析。
|
6月前
|
数据可视化 数据挖掘 数据处理
R语言函数与自定义函数:提高代码的复用性
【8月更文挑战第27天】 自定义函数是R语言编程中不可或缺的一部分,它们通过封装复杂的逻辑和提供灵活的参数化设计,极大地提高了代码的复用性和可维护性。通过掌握自定义函数的基本语法和高级技巧,我们可以编写出更加高效、可读的R语言代码,从而更好地应对复杂的数据分析和统计建模任务。
【R语言实战】——Logistic回归模型
【R语言实战】——Logistic回归模型
|
9月前
|
图形学
R语言其他相关函数(各函数解析含实例,可供查询)
R语言其他相关函数(各函数解析含实例,可供查询)
231 0
|
9月前
R语言绘图相关函数(含实例)
R语言绘图相关函数(含实例)
89 0