R语言广义线性模型

article/2025/8/19 18:11:33

1.广义线性模型和glm()函数

广义线性模型扩展了线性模型的框架,它包含了非正态因变量的分析。

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

(1)与glm()连用的函数

函数

描述

summary

展示拟合模型的细节

Coefficients()、coef()

列出拟合模型的参数(截距项和斜率)

Confint()

给出模型参数的置信(默认为95%)

Residuals()

列出拟合模型的残差值

Anova()

生成两个拟合模型的方差分析表

Plot()

生成评价拟合模型的诊断图

Predict()

用拟合模型对新数据集进行预测


(2)模型拟合和回归诊断

当评价模型的适用性时,可以绘制初始响应变量的预测值与残差的图形

Eg:

Plot(predict(model,type=”response”),residuals(model,type=”deviance”))

R中列出帽子(hat value)、学生化残差值和Cook距离统计量的近似值

对于识别异常点的阈值,并没有统一答案,都是通过相互比较来进行判断的

可绘制各统计量的参考图,然后找出异常大的值

 Eg

Plot(hatvalues(models))

Plot(rstudent(model))

Plot(cooks.distance(model))

 

还可以:

Library(car)

InfluencePlot(model)

2.  Logistic回归

(1)Logistic

当通过一系列连续型和/或类别型预测变量来预测二值型结果变量时,Logistic回归是一个非常有用的工具。

Eg:

AER包中的数据框Affairs为例

install.packages("AER")
library(AER)
data(Affairs,package="AER")
summary(Affairs)
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)
fit.full<-glm(ynaffair~gender+age+yearsmarried+children+religiousness+education+occupation+rating,data=Affairs,family=binomial())
summary(fit.full)



fit.reduced<-glm(ynaffair~age+yearsmarried+religiousness+rating,data=Affairs,family=binomial())
summary(fit.reduced)


新模型的每个回归系数都非常显著,由于两模型嵌套,故可以使用anova()函数对它们进行比较,对于广义线性回归,可用卡方检验。

anova(fit.reduced,fit.full,test="Chisq")


(2)解释模型参数

先看回归系数

coef(fit.reduced)

因对数优势化解释性差,故可对结果进行指数化

exp(coef(fit.reduced))

若有需要还可使用confit()函数获取系数的置信区间

(3)评价预测变量对结果概率的影响

使用predict()观察某个预测变量在各个水平时对结果概率的影响

testdata<-data.frame(rating=c(1,2,3,4,5),age=mean(Affairs$age),yearsmarried=mean(Affairs$yearsmarried),religiousness=mean(Affairs$religiousness))
testdata
testdata$prob<-predict(fit.reduced,newdata=testdata,type="response")
testdata


testdata<-data.frame(rating=mean(Affairs$rating),age=seq(17,57,10),yearsmarried=mean(Affairs$yearsmarried),religiousness=mean(Affairs$religiousness))
testdata
testdata$prob<-predict(fit.reduced,newdata=testdata,type="response")
testdata


(4)过度离势

所谓过度离势,即观测到的响应变量的方差大于期望的二项分布的方差。

过度离势会导致奇异的标准误检验和不精确的显著性检验

当出现过度离势时,仍可使用glm()函数拟合Logistic回归,但此时需要将二项分布必为类二项分布(quasibinomial distribution)

 

检测过度离势的一种方法是比较二项分布模型的残差偏差与自由度,若比值:r=残差偏差/残差自由度 ,比1大很多,便认为是存在过度离势。

 

还可对过度离势进行检验:需拟合模型两次第一次使用family="binomial",第二次使用family="quasibinomial"


fit<-glm(ynaffair~age+yearsmarried+religiousness+rating,family=binomial(),data=Affairs)
fit.od<-glm(ynaffair~age+yearsmarried+religiousness+rating,family=quasibinomial(),data=Affairs)
pchisq(summary(fit.od)$dispersion*fit$df.residual,fit$df.residual,fit$df.residual,lower=F)

(5)扩展

R中扩展的Logistic回归和变种如下所示:
稳健Logistic回归:robust包中的glmRob()函数可用来拟合稳健的广义纯属模型,包括稳健Logistic回归;当拟合回归模型数据出现离群点和强影响点时,稳健Logistic思贤如渴便可泒上用场。
多项式回归:若响应变量包含两个以上的无序类别,便可使用mlogit包中的mlogit()函数拟合多项Logistic回归;
序数Logistic回归:若响应变量是一有序的类别,便可使用rms包中的lrm()函数拟合Logistic回归

3.泊松回归

当通过一系列连续型和/或类别型预测变量来预测计数型结果变量时,泊松回归是一个非常有用的工具。

利用robust 包中的Breslow癫痫数据

install.packages("robust")
library(robust)
data(breslow.dat,package="robust")
names(breslow.dat)
summary(breslow.dat[c(6:8,10)])
opar<-par(no.readonly=TRUE)
par(mfrow=c(1,2))
attach(breslow.dat)
hist(sumY,breaks=20,xlab="Seizure Count",main="Distribution of Seizures")
boxplot(sumY~Trt,xlab="Treatment",main="Group Comparisons")
par(opar)



fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=poisson())
summary(fit)

(1)解释模型参数

使用coef()函数可获取模型系数,或调用summary()函数的输出结果中的Coefficients表格

coef(fit)
exp(coef(fit))

与Logistic回归中的指数化参数相似,泊松模型中的指数化参数对响应变量的影响都是成倍增加的,而不是线性相加。

(2)过度离势

泊松分布的方差和均值相等,当响应变量观测的方差比根据汽枪颁预测的方差在时,泊松回归可能发生过度离势。

可能发生过度离势的原因有如下几个:

遗漏了某个重要的预测变量;

可能因为事件相关;

在纵向数据分析中,重复测量的数据由于内在群聚特性可导致过度离势。此处暂不讨论纵向泊松模型。



与Logisitic回归类似,此处如果残差偏差与残差自由度的给远远大于1,则表明存在过度离势。

qcc包提供了一个对泊松模型过度离势的检验方法

install.packages("qcc")
library(qcc)
qcc.overdispersion.test(breslow.dat$sumY,type="poisson")


p<0.05,进一步表明确实存在过度离势。

通过用family="quasipoisson"替换family="poisson",仍可使用glm()函数对该数据进行拟合,与Logistic回归中处理过度离势的方法是相同的。

fit.od<-glm(sumY~Base+Age+Trt,data=breslow.dat,family=quasipoisson())
summary(fit.od)

(3)扩展

R提供了基本汽枪回归模型的一些有用扩展,包括允许时间段变化、存在过多0时会自动修正的模型,以及当数据存在离群点和强影响点时有用的稳健模型。

时间段变化的泊松回归

fit<-glm(sumY~Base+Age+Trt,data=breslow.dat,offset=log(time),family=poisson())

零膨胀的泊松回归

在一个数据集中,0计数的数目时常比用泊松模型预测的数目多。当总体的一个子群体无任何被计数的行为时,就可能发生这种情况。

稳健泊松回归

robust包中的glmRob()函数可拟合稳健广义线性模型,包含稳健泊松回归。当存在离群点和强影响点时,该方法很有效。














http://chatgpt.dhexx.cn/article/hNBGHQJT.shtml

相关文章

广义线性模型(GLM)初级教程

文章目录 广义线性模型指数分布族性质 连接函数正则连接函数(canonical link function)如何找这样的g&#xff1f; 模型详解参数估计极大似然估计Newton-Raphson MethodFisher Scoring MethodIteratively Reweighted Least Squares关于FS和IRLS区间估计 模型检验Pearson Residu…

广义线性模型(Generalized Linear Model)之二:Logistic回归

广义线性模型&#xff08;Generalized Linear Model&#xff09;之二&#xff1a;Logistic回归 一、引入&#xff1a;多元线性回归模型二、Logistic回归模型三、非条件logistic回归模型&#xff08;一&#xff09;介绍&#xff08;二&#xff09;模型的建立与检验&#xff08;三…

广义线性模型(GLM)及其应用

广义线性模型[generalize linear model(GLM)]是线性模型的扩展&#xff0c;通过联系函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。它的特点是不强行改变数据的自然度量&#xff0c;数据可以具有非线性和非恒定方差结构。是线性模型在研究响应值的非正态分布以…

广义线性回归模型

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、广义线性回归模型二、数据集简介三、使用步骤1.引入库和读入数据2.简单分析3.详细分析3.回归分析4.计算混淆矩阵和整体预测率 前言 提示&#xff1a;glm被…

广义线性模型GLM

本文转自 GLM(广义线性模型) 与 LR(逻辑回归) 详解&#xff08;原作者&#xff1a;爱学习的段哥哥&#xff09; GLM的内容&#xff0c;本应该较早之前就总结的&#xff0c;但一直觉得这种教科书上的基础知识不值得专门花时间copy到博客里来。直到某一天看到一篇不错的总结&…

广义线性模型--Generalized Linear Models

监督学习问题&#xff1a; 1、线性回归模型&#xff1a; 适用于自变量X和因变量Y为线性关系 2、广义线性模型&#xff1a; 对于输入空间一个区域改变会影响所有其他区域的问题&#xff0c;解决为&#xff1a;把输入空间划分成若干个区域&#xff0c;然后对每个区域用不同的多项…

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

上一篇博客中我们说到线性回归和逻辑回归之间隐隐约约好像有什么关系&#xff0c;到底是什么关系呢&#xff1f;我们就来探讨一下吧。&#xff08;这一篇数学推导占了大多数&#xff0c;可能看起来会略有枯燥&#xff0c;但这本身就是一个把之前算法统一起来的抽象模型&#xf…

广义线性模型(Generalized Linear Model)——机器学习

零、前言 对于条件分布(y|x;θ)&#xff0c;对于线性回归模型有&#xff0c;而对分类问题有。其实这些分布均是广义线性模型&#xff08;GLM&#xff09;的特殊情况。 我们通过定义广义线性模型&#xff0c;可以据此求出拟合函数h(x) 一、指数分布族&#xff08;Exponential …

广义线性模型和线性回归

广义线性模型&#xff08;GLM&#xff09; 首先术语广义线性模型&#xff08;GLM&#xff09;通常是指给定连续和/或分类预测变量的连续响应变量的常规线性回归模型。它包括多元线性回归&#xff0c;以及ANOVA和ANCOVA&#xff08;仅具有固定效果&#xff09;。形式为 yi〜N&a…

机器学习之广义线性模型

深夜博客在今天开张啦 一年前接触了机器学习&#xff0c;纯属个人兴趣&#xff0c;还没想到要入坑&#xff0c;现在沉迷无法自拔了哈哈哈。好了也不说太多废话了&#xff0c;今天的主题是广义线性模型啦&#xff01;这篇博客是参考斯坦福cs229 lecture1中的Generalize Linear …

广义线性模型理解

本文纯属个人理解&#xff0c;恳求指正。 广义线性回归能做什么&#xff1f;为什么我们要使用广义线性回归&#xff1f; 这俩天看到了广义线性回归这个概念&#xff0c;百度上面基本是吴恩达的copy版本&#xff0c;知乎上面都是大神写的&#xff0c;表示看完等于没看。 看了p…

广义线性模型1

1.1 Generalized Linear Models[广义线性模型] 线性模型[linear model]&#xff0c;也称经典线性模型[classical linear model]或一般线型模型[general linear model&#xff0c;GLM]。广义线性模型[generalized linear model&#xff0c;GENMOD]由Nelder & Wedderburn[19…

R之广义线性模型

R之广义线性模型 一、广义线性模型和glm()函数 结果变量是类别型的。二值变量&#xff08;比如&#xff1a;是/否、有效/无效、活着/死亡&#xff09;和多分类变量&#xff08;比如差/良好/优秀&#xff09;都显然不是正态分布&#xff1b;结果变量是计数型的。&#xff08;比…

第5章 广义与一般线性模型

第1章 多元统计分析概述 第2章 多元数据的数学表达 第3章 多元数据的直观表示 第4章 多元相关与回归分析 第5章 广义与一般线性模型 5.1 模型的选择5.2 广义线性模型5.3 一般线性模型 第6章 判别分析及R使用 第7章 聚类分析及R使用 第8章 主成分分析及R使用 第9章 因子分析及…

广义线性模型

今天我来介绍一种在机器学习中应用的比较多的模型&#xff0c;叫做广义线性模型&#xff08;GLM&#xff09;。这种模型是把自变量的线性预测 函数当作因变量的估计值。在机器学习中&#xff0c;有很多模型都是基于广义线性模型的&#xff0c;比如传统的线性回归模型&#xff…

广义线性模型(Generalized Linear Model)

转载于&#xff1a;广义线性模型&#xff08;Generalized Linear Model&#xff09; - 肉鹅阿笨 - 博客园 (cnblogs.com) 1.指数分布族 我们在建模的时候&#xff0c;关心的目标变量Y可能服从很多种分布。像线性回归&#xff0c;我们会假设目标变量Y服从正态分布&#xff0c;而…

R|广义线性模型知识点归纳

本文分为两个部分: (1)广义线性模型的分类及其运用场景; (2) 相关R代码。需要说明的是&#xff0c;参考资料是上课课件&#xff0c;根据本人理解整理&#xff0c;如果有不对的地方&#xff0c;欢迎探讨&#xff01; 目录 引言 1. 广义线性模型 &#xff08;1&#xff09;二…

IOS CoreData 多表查询(上)

在网上搜索了下&#xff0c;发现只有部分讲解CoreData关系的&#xff0c;但对多表之间的查询并没有相应的介绍。 因此操作自己写了个。 先创建几个表。 1、部门表&#xff1a;department dp_id Integer primary key dp_deptname varchar(20) //使用coredata实体创建时用…

iOS CoreData详解(五)多线程

原创blog&#xff0c;转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK详解专栏&#xff0c;这里有很多基础的文章 http://blog.csdn.net/column/details/huangwenchen-ios-sdk.html 前言&#xff1a;很多小的App只需要一个ManagedContext在主线程就可以了&…

CoreData在Xcode 8 中的使用

如需转载&#xff0c;请注明出处 在Xode8之前&#xff0c;CoreData的使用是非常方便的&#xff0c;先创建一个DataModel , ,然后创建NSManagedObject SubClass,都是一个界面上操作&#xff0c;非常方便&#xff0c;但是更新过Xcode 8后&#xff0c;CoreData的创建需要进行一…