一、广义线性模型和线性模型
广义线性模型(Generalized Linear Models,GLM)由Nelder和Wedderburn于 1972年提出和发表 ,旨在解决普通线性回归模型无法处理因变量离散,并发展能够解决非正态因变量的回归建模任务的建模方法。
在广义线性模型的框架下,因变量不再要求连续、正态,当然自变量更加没有特殊的要求。能够对正态分布、二项分布、泊松分布、Gamma分布等随机因变量进行建模.
通俗来说,广义线性模型是普通线性模型的普遍化,如果把普通线性回归模型称为狭义线性模型,那么它就是广义线性模型中因变量服从正态分布的一个特例
二、广义线性模型的适用范围
结果变量是类别:包括二分类变量(是/否)和多分类变量(优秀/良好/差)
结果变量是非负整数:结婚次数、一生中流产的次数,他们的均值和方差通常是相关的
建模方法论
1) 假设因变量服从某个随机分布,如正态分布、二项分布
2) 根据上述的假设分布构建因变量的转换形式(参考下文的链接函数)
3) 对转换后的随机变量进行线性拟合
三种常见的广义线性模型
image.png正态分布(特殊类型的广义线性模型)
image.png二项分布变量
image.png泊松分布
三、广义线性模型的R语言实现
glm(formula, family = gaussian, data, weights, subset,
na.action, start = NULL, etastart, mustart, offset,
control = list(...), model = TRUE, method = "glm.fit",
x = FALSE, y = TRUE, singular.ok = TRUE, contrasts = NULL, ...)
概率分布family及连接函数 function
binomial(link = "logit")
gaussian(link = "identity")
Gamma(link = "inverse")
inverse.gaussian(link = "1/mu^2")
poisson(link = "log")
quasi(link = "identity", variance = "constant")
quasibinomial(link = "logit")
quasipoisson(link = "log")
使用以下函数提取拟合模型中的有用信息
image.png
1、展示数据并构建模型
使用Affairs数据展示logistic回归
# get summary statistics
data(Affairs, package="AER")
summary(Affairs)
table(Affairs$affairs)
image.png
# create binary outcome variable
Affairs$ynaffair[Affairs$affairs > 0] <- 1
Affairs$ynaffair[Affairs$affairs == 0] <- 0
Affairs$ynaffair <- factor(Affairs$ynaffair,
levels=c(0,1),
labels=c("No","Yes"))
table(Affairs$ynaffair)
为了演示,这里生成一个二分类变量ynaffair(是否婚外遇)
image.png
# fit full model
fit.full <- glm(ynaffair ~ gender + age + yearsmarried + children +
religiousness + education + occupation +rating,
data=Affairs,family=binomial())
summary(fit.full)
将所有变量纳入回归方程,得到fit.full,使用summary函数看一下模型的内部构成
image.png
# fit reduced model
fit.reduced <- glm(ynaffair ~ age + yearsmarried + religiousness +
rating, data=Affairs, family=binomial())
summary(fit.reduced)
接下来将有意义的进一步纳入回归,然后 summary看一下函数内部:
image.png
2、模型间比较
可以看到,fit.full与fit.reduced的AIC差异并不到,后面我们继续学习AIC的含义,这里我们简单介绍以下AIC越接近0代表模型越优。
为了进一步比较两个模型,使用ANOVA函数比较
# compare models
anova(fit.reduced, fit.full, test="Chisq")
image.png
可以看到p值大于0.05,两个模型差异无统计学意义。
3、模型中关键参数的提取
coef与coefficients得到的结果一样,都是每个变量的系数,反对数后,得到每个变量的OR值(相对风险)
coef(fit.full)
coefficients(fit.full)
exp(coef(fit.full))
image.png
本篇篇幅暂时不再扩展,下一篇继续广义线性模型的预测,效能评估及列线图等展示。
网友评论