
R之回归分析广义线性模型(Generalized Linear Model)glm
1. 介绍
广义线性模型(Generalized Linear Model)是一般线性模型的推广,它使因变量的总体均值通过一个非线性连接函数而依赖于线性预测值,允许响应概率分布为指数分布族中的任何一员。许多广泛应用的统计模型都属于广义线性模型,如常用于研究二元分类响应变量的Logistic回归、Poisson回归和负二项回归模型等。一个广义线性模型包含以下三个部分:
①随机成分。
②线性成分。
③连接函数g。
各种常见的指数型分布及其主要参数
典型的连接函数及对应分布
广义线性模型的参数估计一般不能用最小二乘估计,常用加权最小二乘法或最大似然法估计,各回归系数β需用迭代方法求解。
2. 实现
R提供了拟合广义线性模型的函数glm(),其调用格式为
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, contrasts = NULL, ...)
其中,
formula为拟合公式,与函数lm()中的参数formula用法相同;
family用于指定分布族,包括正态分布(gaussian)、二项分布(binomial)、泊松分布(poisson)和伪伽马分布(Gamma);
分布族还可以通过选项link来指定连接函数,默认值为family=gaussian (link=identity),二项分布默认值为family=binomial(link=logit);
data指定数据集;
offset指定线性函数的常数部分,通常反映已知信息;
control用于对待估参数的范围进行设置。
例:
车险保单索赔次数分组数据
已知索赔次数服从泊松分布,相应的连接函数常用对数连接函数,模型可以写为
下面用R实现,首先建立数据集,分类变量直接输入定性的取值即可,glm()分析时会自动转换成矩阵X,注意参数family的写法。
> dat=data.frame(
y=c(42, 37, 10, 101, 73, 14),
n=c(500, 1200, 100, 400, 500, 300),
type=rep(c('小','中','大'),2),
gender=rep(c('男','女'),each=3)
)
> dat$logn=log(dat$n) #风险暴露数取对数
#offset风险单位数事先已知
> dat.glm=glm(y~type+gender,offset=logn,data=dat,family=poisson(link=log))
> summary(dat.glm) #glm的输出结果
估计的回归系数都是非常显著的;Null deviance可以认为是模型的残差,它的值越小说明模型拟合效果越好;模型的AIC统计量为61.68,它和deviance一起可以用来作为判断标准,选取合适的分布族和链接函数。
下面通过作图来观察模型拟合的效果,首先提取模型的预测值,注意函数predict()提取的是线性部分的拟合值,在对数连接函数下,要得到Y的拟合值,应当再做一次指数变换。以实际观测值为横坐标,模型拟合值为纵坐标作图,散点越接近直线y=x,说明模型的拟合效果越好。
> dat.pre=predict(dat.glm)
> layout(1) #取消绘图区域分割
> plot(y,exp(dat.pre),xlab='观测值',ylab='拟合值',main="索赔次数的拟合效果",pch="*")
> abline(0,1) #添加直线y=x,截距为0,斜率为1
若假设上例中的索赔次数服从负二项分布,在R中应输入指令:
> library(MASS)
> attach(dat)
> dat.glmnb=glm.nb(y~type+gender+offset(logn)) #负二项回归
> summary(dat.glmnb) #输出结果
负二项回归拟合的模型AIC为60.45,残差Null deviance为16.6831,小于泊松回归拟合的残差值,说明负二项分布的广义线性模型更加稳定,但从回归系数的显著性上看,泊松回归拟合的变量系数更加显著。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
如何考取数据分析师证书:以 CDA 为例 在数字化浪潮席卷各行各业的当下,数据分析师已然成为企业挖掘数据价值、驱动决策的 ...
2025-07-15CDA 精益业务数据分析:驱动企业高效决策的核心引擎 在数字经济时代,企业面临着前所未有的数据洪流,如何从海量数据中提取有 ...
2025-07-15MySQL 无外键关联表的 JOIN 实战:数据整合的灵活之道 在 MySQL 数据库的日常操作中,我们经常会遇到需要整合多张表数据的场景 ...
2025-07-15Python Pandas:数据科学的瑞士军刀 在数据驱动的时代,面对海量、复杂的数据,如何高效地进行处理、分析和挖掘成为关键。 ...
2025-07-15用 SQL 生成逆向回滚 SQL:数据操作的 “后悔药” 指南 在数据库操作中,误删数据、错改字段或误执行批量更新等问题时有发生。 ...
2025-07-14t检验与Wilcoxon检验的选择:何时用t.test,何时用wilcox.test? t 检验与 Wilcoxon 检验的选择:何时用 t.test,何时用 wilcox. ...
2025-07-14AI 浪潮下的生存与进阶: CDA数据分析师—开启新时代职业生涯的钥匙(深度研究报告、发展指导白皮书) 发布机构:CDA数据科 ...
2025-07-13LSTM 模型输入长度选择技巧:提升序列建模效能的关键 在循环神经网络(RNN)家族中,长短期记忆网络(LSTM)凭借其解决长序列 ...
2025-07-11CDA 数据分析师报考条件详解与准备指南 在数据驱动决策的时代浪潮下,CDA 数据分析师认证愈发受到瞩目,成为众多有志投身数 ...
2025-07-11数据透视表中两列相乘合计的实用指南 在数据分析的日常工作中,数据透视表凭借其强大的数据汇总和分析功能,成为了 Excel 用户 ...
2025-07-11尊敬的考生: 您好! 我们诚挚通知您,CDA Level I和 Level II考试大纲将于 2025年7月25日 实施重大更新。 此次更新旨在确保认 ...
2025-07-10BI 大数据分析师:连接数据与业务的价值转化者 在大数据与商业智能(Business Intelligence,简称 BI)深度融合的时代,BI ...
2025-07-10SQL 在预测分析中的应用:从数据查询到趋势预判 在数据驱动决策的时代,预测分析作为挖掘数据潜在价值的核心手段,正被广泛 ...
2025-07-10数据查询结束后:分析师的收尾工作与价值深化 在数据分析的全流程中,“query end”(查询结束)并非工作的终点,而是将数 ...
2025-07-10CDA 数据分析师考试:从报考到取证的全攻略 在数字经济蓬勃发展的今天,数据分析师已成为各行业争抢的核心人才,而 CDA(Certi ...
2025-07-09【CDA干货】单样本趋势性检验:捕捉数据背后的时间轨迹 在数据分析的版图中,单样本趋势性检验如同一位耐心的侦探,专注于从单 ...
2025-07-09year_month数据类型:时间维度的精准切片 在数据的世界里,时间是最不可或缺的维度之一,而year_month数据类型就像一把精准 ...
2025-07-09CDA 备考干货:Python 在数据分析中的核心应用与实战技巧 在 CDA 数据分析师认证考试中,Python 作为数据处理与分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 检验:数据趋势与突变分析的有力工具 在数据分析的广袤领域中,准确捕捉数据的趋势变化以及识别 ...
2025-07-08备战 CDA 数据分析师考试:需要多久?如何规划? CDA(Certified Data Analyst)数据分析师认证作为国内权威的数据分析能力认证 ...
2025-07-08