分享

用R语言做数据分析——广义线性模型

 geoallan 2017-07-12

用R语言做数据分析——广义线性模型

之前讲到的线性模型,是通过一系列连续型或类别型变量来预测正态分布的响应变量。但在许多情况下,假设因变量为正态分布并不合理,例如以下集中情况:

  • 结果变量可能是类别型的。二值变量(比如是/否、通过/失败,活着/死亡)和多分类变量(比如差/及格/良好/优秀)都显然不是正态分布。

  • 结果变量可能是计数型的(比如,一周交通事故的数目、每日洒水消耗的数量)。这类变量都是非负的有限值,而且它们的均值和方差通常都是相关的(正态分布变量间是相互独立的)。

广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析,使线性模型对于解决实际问题更具有通用性和广泛性。

广义线性模型概论

许多广泛应用的、流行的数据分析方法其实都归属于广义线性模型框架。现在假设我们要对响应变量Y和p个预测变量X1......Xp间的关系进行建模,在标准线性模型中,我们可以假设Y呈正态分布,关系的形式为:

用R语言做数据分析——广义线性模型

该等式表明响应变量的条件均值是预测变量的线性组合。参数βj指一单位Xj的变化造成的Y预期的变化,β0指当所有预测变量都为0时Y的预测值。对于这个等式,我们可以通俗地理解为:给定一系列X变量的值,赋予X变量合适的权重,然后将它们加起来,便可预测Y观测值分布的均值。

我们并没有对预测变来那个Xj做任何分布的假设,与Y不同,它们不需要呈正态分布。实际上,它们常为类别型变量。另外、对预测变量使用非线性函数也是允许的,比如我们可以使用X^2或者X1*X2,只要等式的参数(β0、β1、...、βp)为线性即可。

广义线性模型拟合的形式为:

用R语言做数据分析——广义线性模型

其中g(u y)是条件均值的函数(称为连接函数)。另外、我们可以不假设Y为正态分布,把它改为Y服从指数分布族中的任意一种分布即可。设定好连接函数和概率分布后,可以通过最大似然估计的多次迭代推导出各参数值。

glm()函数

R语言中可通过glm()函数拟合广义线性模型,函数基本形式为:

glm(formula, family=family(link=function), data=)

下图列出了概率分布(family)和相应默认的连接函数(function)。

用R语言做数据分析——广义线性模型

glm()函数可以拟合许多流行的模型,比如Logistic回归、泊松回归,下面对这两个模型进行阐述。假设我们有一个响应变量(Y)、三个预测变量(X1、X2、X3)和一个包含数据的数据框(mydata)。

Logistic回归

Logistic回归适用于二值响应变量(0,1)。模型假设Y服从二项分布,线性模型的拟合形式为:

用R语言做数据分析——广义线性模型

其中π=μY是Y的条件均值(即给定一系列X的值时Y=1的概率),(π /1-π )为Y=1时的优势比,log(π /1-π )为对数优势比,或logit。在这个例子中,log(π /1-π )为连接函数,概率分布为二项分布,可用以下代码拟合Logistic回归模型:

glm(Y~X1+X2+X3, family=binomial(link='logit'), data=mydata)

泊松回归

泊松回归适用于在给定时间内响应变量为事件发生数目的情形。它假设Y服从泊松分布,线性模型的拟合形式为:

用R语言做数据分析——广义线性模型

其中λ是Y的均值(也等于方差)。此时,连接函数为log(λ),概率分布为泊松分布,可用如下代码拟合泊松回归模型:

glm(Y~X1+X2+X3, family=poisson(link='log'), data=mydata)

标准线性模型

标准线性模型属于广义线性模型的一个特例。如果令连接函数g(μY)=μY或恒等函数,并设定概率分布为正态分布,那么可用如下代码拟合标准线性模型:

glm(Y~X1+X2+X3, family=gaussian(link='identity'), data=mydata)

生成的结果与下列代码的结果相同:

lm(Y~X1+X2+X3, data=mydata)

总之,广义线性模型通过拟合响应变量的条件均值的一个函数,假设响应变量服从指数分布族的某个分布,极大地扩展了标准线性模型。模型 参数估计的推导依据是极大似然估计,而非最小二乘法。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多