R语言-广义线性模型

使用场景:结果变量是类别型,二值变量和多分类变量,不满足正态分布

      结果变量是计数型,并且他们的均值和方差都是相关的

解决方法:使用广义线性模型,它包含费正太因变量的分析

1.Logistics回归(因变量为类别型)

  案例:匹配出发生婚外情的模型

  1.查看数据集的统计信息

2 library(AER)
3 data(Affairs,package = ‘AER‘)
4 summary(Affairs)
5 table(Affairs$affairs)

  结果:该数据从601位参与者收集了,婚外情次数,性别,年龄,结婚年限,是否有孩子,宗教信仰,教育背景,职业,婚姻的自我评价这9个变量

     结果变量是婚外情发生的次数72%的夫妻没有婚外情,最多的是一年中每月都有婚外情占6%

  2.将结果值转换为二值型因子

1 Affairs$ynaffair[Affairs$affairs > 0] <- 1
2 Affairs$ynaffair[Affairs$affairs == 0] <- 0
3 Affairs$ynaffair <- factor(Affairs$ynaffair,
4                            levels=c(0,1),
5                            labels=c("No","Yes"))
6 table(Affairs$ynaffair)

  3.将该因子作为二值型变量的结果变量

1 fit.full <- glm(ynaffair ~ gender + age + yearsmarried + children +
2                   religiousness + education + occupation +rating,
3                 data=Affairs,family=binomial())
4 summary(fit.full)

  结果:性别,是否有孩子,学历和职业对模型不显著,去除后进行分析

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

  3.使用卡方检验来判断比较

1 anova(fit.reduced,fit.full,test = ‘Chisq‘)

   结果:p=0.21,表示新模型的拟合更好

  4.解释模型参数

1 coef(fit.reduced)
2 exp(coef(fit.reduced))

  结果:婚龄每增加1岁,婚外情发生的可能性将乘以1.106,相反年龄增加1岁,婚外情发生的可能性乘以0.9652

  5.评价婚姻评分对婚外情的影响

1 # 1.手动生成数据集
2 # 2.使用predict函数来进行预测
3 testdata <- data.frame(rating=c(1,2,3,4,5),age=mean(Affairs$age),
4                        yearsmarried=mean(Affairs$yearsmarried),
5                        religiousness=mean(Affairs$religiousness))
6 testdata
7 testdata$prob <- predict(fit.reduced,newdata = testdata,type=‘response‘)
8 testdata

  结果:当婚姻评分从1(很不幸)变成5(很幸福)的时候,婚外情发生的概率从0.53降低到0.15

  6.评价年龄对婚外情的影响

1 testdata <- data.frame(rating=mean(Affairs$rating),
2                        age=seq(17,57,10),
3                        yearsmarried=mean(Affairs$yearsmarried),
4                        religiousness=mean(Affairs$religiousness))
5 testdata$prob <- predict(fit.reduced,newdata = testdata,type=‘response‘)
6 testdata

  结果:当其他变量不变时,年龄从17到57岁,婚外情的概率从0.34降低到0.11

  7.判断是否过度离势

    过度离势会导致标准误检验和不精确的显著性检验,此时任然可以使用gml()拟合拟合Logistics回归,但是把二项分布改为类二项分布

1 # 如果结果接近1,表示没有过度离势
2 deviance(fit.reduced)/df.residual(fit.reduced)

  

  结果:没有过度离势

2.泊松回归(因变量为计数型)

  使用场景:通过一系列连续型或类别型预测变量来预测计数型结果变量时采用泊松分布

  案例:药物治疗是否能减小癫痫的发病数

  1.查看数据集

1 data(breslow.dat,package = ‘robust‘)
2 names(breslow.dat)
3 summary(breslow.dat[c(6,7,8,10)])

  结果:我们分析年龄,治疗条件,前八周的发病次数和随机化后八周内的发病次数的关系,所以只采用4个变量

  2.图形

1 opar <- par(no.readonly = T)
2 par(mfrow=c(1,2))
3 attach(breslow.dat)
4 hist(sumY,breaks = 20,xlab = ‘Seizure Count‘,main = ‘Distribution of Sizeture‘)
5 boxplot(sumY~Trt,xlab=‘Treatment‘,main=‘Group Comparisons‘)
6 par(opar)

  结果:可以看出使用药物的组,癫痫的发病率有所减少

  3.拟合泊松回归

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

  结果:偏差,回归参数,标准误差和参数为0的检验

  4.解释模型参数

1 coef(fit)
2 exp(coef(fit))

  结果:年龄每增加1岁,癫痫的发病数将乘以1.023,如果从安慰剂组调到药物组,则发病率会减少14%

  5.判断是否过度离势

1 deviance(fit)/df.residual(fit)

  结果:大于1,存在过度离势

  6.调整模型

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

  结果:标准误差和第一次模型相比,大了许多,同时标准误差越大会导致Trt的p值大于0.05,所以并没有充分的证据表明药物治疗相对于使用安慰剂能够降低癫痫的发病次数

原文地址:https://www.cnblogs.com/luhuajun/p/8460601.html

时间: 2024-11-12 22:39:19

R语言-广义线性模型的相关文章

R语言实战(八)广义线性模型

本文对应<R语言实战>第13章:广义线性模型 广义线性模型扩展了线性模型的框架,包含了非正态因变量的分析. 两种流行模型:Logistic回归(因变量为类别型)和泊松回归(因变量为计数型) glm()函数的参数 分布族 默认的连接函数 binomial (link = "logit") gaussian (link = "identity") gamma (link = "inverse") inverse.gaussian (lin

[读书笔记] R语言实战 (十三) 广义线性模型

广义线性模型扩展了线性模型的框架,它包含了非正态的因变量分析 广义线性模型拟合形式: $$g(\mu_\lambda) = \beta_0 + \sum_{j=1}^m\beta_jX_j$$ $g(\mu_\lambda)为连接函数$. 假设响应变量服从指数分布族中某个分布(不仅仅是正态分布),极大扩展了标准线性模型,模型参数估计的推导依据是极大似然估计,而非最小二乘法. 可以放松Y为正态分布的假设,改为Y服从指数分布族中的一种分布即可 glm()函数:glm(formula,family=f

R语言︱异常值检验、离群点分析、异常值处理

在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数据清洗:删除原始数据集中的无关数据.重复数据.平滑噪声数据.处理缺失值.异常值等 缺失值处理:删除记录.数据插补和不处理 主要用到VIM和mice包 install.packages(c("VIM","mice")) 1.处理缺失值的步骤 步骤: (1)识别缺失数据:

R语言实战(五)方差分析与功效分析

本文对应<R语言实战>第9章:方差分析:第10章:功效分析 ==================================================================== 方差分析: 回归分析是通过量化的预测变量来预测量化的响应变量,而解释变量里含有名义型或有序型因子变量时,我们关注的重点通常会从预测转向组别差异的分析,这种分析方法就是方差分析(ANOVA).因变量不只一个时,称为多元方差分析(MANOVA).有协变量时,称为协方差分析(ANCOVA)或多元协方差分析

R语言数据挖掘实战系列(5)

R语言数据挖掘实战系列(5)--挖掘建模 一.分类与预测 分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值. 1.实现过程 (1)分类 分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别.分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习. (2)预测 预测是建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制.

《R语言实战》(中文完整版)pdf

下载地址:网盘下载 基本介绍 编辑 原作名: R in Action[2] 作者: Robert I. Kabacoff 译者: 高涛 / 肖楠 / 陈钢 出版社: 人民邮电出版社 出版年: 2013-1 页数: 388 定价: 79.00元 装帧: 平装 ISBN: 978-711-529-990-1 内容简介 编辑 数据时代已经到来,但数据分析.数据挖掘人才却十分短缺.由于"大数据"对每个领域的决定性影响,相对于经验和直觉,在商业.经济及其他领域中基于数据和分析去发现问题并作出科学

数据分析,R语言

数据结构 创建向量和矩阵 1 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 1 函数mean(), sum(), min(), max(), var(), sd(), prod() 帮助文档 1 函数help() 生成向量 1 seq() 生成字母序列letters 新建向量 1 Which()函数,rev()函数,sort()函数 生成矩阵 1 函数matrix() 矩阵运算 1 函数t(),矩阵加减 矩阵运算 1

R语言实战(四)回归

本文对应<R语言实战>第8章:回归 回归是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量.效标变量或结果变量)的方法.通常,回归分析可以用来挑选与相应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量. 回归分析的各种变体 回归类型 用途 简单线性 用一个量化的解释变量预测一个量化的响应变量 多项式 用一个量化的解释变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性 用两个或多个量化的解释变量预测一个

[译]用R语言做挖掘数据《四》

回归 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令2. GVim:非常好用的编辑器,最简单的用法可以参考课程Vim编辑器3. R:在命令行输入‘R’进入交互式环境,下面的代码都是在交互式环境运行. 3. 环境使用 使用R语言交互式环境输入实验