广义线性模型(GLM)是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。
广义线性模型拟合的形式为:
其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。
在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。
但是,有时候我们要进行非正态因变量的分析,例如:
(1)类别型结果变量:二类变量(及格|不及格,生|死,通过|不通过);分类变量(差|良好|优秀)。
(2)计数型结果变量:(随便抓的一把大米的数量,一个月下雨的次数)。这类变量都是非负的有限值,而且它们的均值和方差通常都是相关的(正态分布变量间不是如此,而是相互独立)。
这种时候我们就要使用包含非正态因变量分析的广义线性模型了,广义线性模型取消了对残差(因变量)服从正态分布的要求。残差不一定要服从正态分布,可以服从二项、泊松、负二项、正态、等分布,这些分布被统称为指数分布族。
R中通常使用glm()函数(还可用其他专门的函数)拟合广义线性模型。
而在广义线性模型中主要使用 Logistic回归模型和泊松回归模型.
我看到了很多SCI文章中使用过GLM分析。作者使用GLM主要有两种作用:(1)推断多个自变量对目标变量的解释效应;(2)通过算法从很多GLMs中获得最简GLM,然后再根据该GLM预测目标变量的发展趋势。我下面会展示怎么使用GLM的这两种作用。
一,广义线性模型中的Logistic模型。
Logistic回归适用于二值响应变量( 0 和1)。用如下代码拟合Logistic回归模型:
glm(Y~X1+X2+X3,family=binomial,data=mydata)
下面我通过一个实验数据来拟合Logistic回归模型。(数据链接在最后,需要的自取)
我基于某个试验数据,来探究试验中的哪些土壤因素对物种丰富度产生显著影响。
Torigin(初始温度)、pH,P含量、TC(总碳)、TN(总氮)、CN比、CP比、NP比、ECEC(离子交换量)。
首先我们将物种丰富度Richness转变为二值型因子(ffd),将物种丰富度大于150变为二值响应变量1(high),将物种丰富度小于等于150变为二值响应变量0(low)。
library(readxl)
treatment <- read_excel("D:/R-works/work4/treatment.xls")#根据数据储存位置读取数据
View(treatment)
treatment$ffd[treatment$Richness>150]<-1
treatment$ffd[treatment$Richness<=150]<-0
treatment$ffd<-factor(treatment$ffd,levels = c(0,1),labels=c("low","high"))
table(treatment$ffd)
该二值型因子现可作为Logistic回归的结果变量:
fit1<-glm(ffd~pH+P+TN+TC+CN_ratio+NP_ratio+ECEC,data=treatment,family = binomial)
summary(fit1)
从P值可以看出,试验中只有pH对物种丰富度有显著影响。去除无显著影响的变量因子重新拟合模型,检验新模型是否拟合得好:
fit2<-glm(ffd~pH,data=treatment,family = binomial())
summary(fit2)
去除其他的变量后,新模型的回归系数更加显著。由于两模型嵌套(fit2是fit1 的一个子集),你可以使用anova()函数对它们进行比较,对于广义线性回归,可用卡方检验。
anova(fit2,fit1,test="Chisq")
结果的卡方值不显著(p=0.3653),表明一个预测变量的新模型与七个完整预测变量的模型拟合程度一样好。这使得你更加坚信添加P、TN、TC、CN_ratio、NP_ratio、ECEC不会显著提高方程的预测精度,因此可以依据更简单的模型进行解释。
链接:https://pan.baidu.com/s/1IEC3bJmsjExnQP3EHdwECQ
提取码:6668