广义线性模型一(Generalized Linear Models,GLM)

参考
从线性模型到广义线性模型(1)——模型假设篇 | 统计之都 (cosx.org)

一、广义线性模型和线性模型

广义线性模型(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

本篇篇幅暂时不再扩展,下一篇继续广义线性模型的预测,效能评估及列线图等展示。

你可能感兴趣的:(广义线性模型一(Generalized Linear Models,GLM))