R语言基于VGAM包进行广义可加模型(1)

广义可加模型( generalized additional model,GAM)是对传统广义线性模型的非参数拓展,可有效处理解释变量与效应变量间复杂的非线性关系. 它有许多优点:能直接处理响应变量与多个解释变量之间的非线性关系;能应用非参数的方法检测数据结构,并找出其中的规律,从而得到更好的预测结果;以数据而不是模型“说话”; 不需要假定数据分布等;因而更适用于生态学,特别是调查数据。近年来,广义可加模型在生态学中已经得到了广泛使用.
GAM 是广义线性模型(generalized linear mod-el,GLM)的半参数扩展(Hastie et al.,1990),其假设函数是相加的,函数的组成成分是光滑函数(smoothfunctions),基本模型如下:
G[E(Y)]=b 0+f1 (x 1 )+…+f m (X m )
式中:E(Y)为应变量的数学期望值;G[]为连接函数,连接函数的选择依赖于应变量的分布形式;b 0 为截距;f 1 …f m 为 m 个环境变量 X 的平滑函数,通常使用光滑样条函数(smoothing spline function)拟合,因子的重要性可以通过平滑函数的自由度来简单判断:自由度高表明因子重要性高。
可以进行广义可加模型的R包有很多种,我们今天使用介绍VGAM包来进行拟合广义可加模型,VGAM包是个功能非常强大的R包。继续使用我们的臭氧数据,从既往文章中我们得知,臭氧和高度呈非线性关系。
在这里插入图片描述
首先加载R包和导入我们的数据

library(foreign)
library(VGAM)
library(viridis)
library(car)
be <- read.spss("E:/r/test/ozone.sav",
                use.value.labels=F, to.data.frame=T)

在这里插入图片描述
数据中有七个变量,ozon每日臭氧水平为结局变量,Inversion base height(ibh)反转基准高度,Pressure gradient (mm Hg) 压力梯度(mm Hg),Visibility (miles) 能见度(英里),Temperature (degrees F) 温度(华氏度),Day of the year日期,vh我也不知道是什么,反正就是一参数,这里所有的变量都是连续的。
在这里插入图片描述
假设我们想知道臭氧浓度和高度的相关性,直接进行模型拟合,df表示光滑样条的灵活度,

mgam<-vgam(ozon~dpg+s(ibh,df=3),data=be,family=uninormal(),model=T)

解析模型和查看系数,VGAM包可以生成两个截距,一个是我们通常说的截距,另外一个是基于方差的自然对数值

summary(mgam)
coef(mgam)

在这里插入图片描述
我们可以使用car包的linearHypothesis函数对模型进行参数假设检验
在这里插入图片描述
绘制图形
在这里插入图片描述
纵轴表示平滑函数值,括号中的数字表示估计自由度df,虚线表示可信区间上下限。
我们可以使用viridis包的viridis函数对线条进行修改

par(mfrow=c(1,2))
plot(mgam,se=T,locl=viridis(4)[1],scol=viridis(4)[2])

在这里插入图片描述
由上图看出,臭氧浓度和高度关系并不是越高越浓,而是在一定高度内臭氧浓度最高。
更多精彩文章请关注公众号:零基础说科研
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天桥下的卖艺者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值