IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> R|广义线性模型知识点归纳 -> 正文阅读

[人工智能]R|广义线性模型知识点归纳

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

目录

引言

1. 广义线性模型

(1)二分变量

(2)类型变量

(3)计数型变量

①泊松对数线性模型

②零膨胀计数模型

2. 相关R代码


引言

????????在经典线性模型中,y是连续的,同时服从正态分布。但是很多情况下y是离散的,比如y表示是否贷款(0/1变量),或者优/良/差(类型变量),或者医院病人数(计数型变量)。所以引入了广义线性模型来进行回归拟合。

1. 广义线性模型

图1

(1)二分变量

当y为0/1二分变量的时候,可以用logistic模型进行回归拟合,模型设定如下:

设?y_i?服从参数为?p_i?的二项分布,则?\mu_i = E(y_i)=p_i?,采用逻辑连接函数,即:

g(\mu_i) = logit(p_i) = log\frac{p_i}{1-p_i} = X^{T}\beta

也可以用probit模型进行回归拟合,模型设定如下:

?设?y_i?服从参数为?p_i?的二项分布,则?\mu_i = E(y_i)=p_i?,采用逻辑连接函数,即:

g(\mu)=probit(p)=\Phi ^{-1}(p)=X\beta

在得到回归结果 y = \beta_0+\beta_1 x_1+...+\beta_i x_i 之后,两个模型的区别在于

logistic模型中P(y=1)=\frac{exp(\hat{y})}{1+exp(\hat{y})}

probit模型中P(y=1) = \Phi(\hat{y})

(2)类型变量

当y有多个类型,比如优/良/差的时候,可以用多项logit模型,模型设定如下:

假如对于第i个观测值,因变量?y_i?有M个取值,自变量为?x_i?,则多项logit回归模型为

P(y_i = k) = \frac{exp(x_i\beta_i)}{1+\sum_{j=2}^{M}(exp(x_i\beta_i))}

P(y_i = 1) = 1-\sum_{j=2}^{M}P(y_i=j) = \frac{1}{1+\sum_{j=2}^{M} {exp(x_i\beta_j)}}

同时,\sum_{k=1}^{M}{P(y_i = k)}=1

?最终得到的结论是第 i 个样本为?y_k?的概率

(3)计数型变量

????????①泊松对数线性模型

????????当y服从泊松分布的时候,可以用此模型,模型设定如下:

设y服从参数为λ的泊松分布,则\mu = E(y)=\lambda

采用对数连接函数,即

g(\mu) = ln(\lambda) = \beta_0+\beta_1x_1+...+\beta_px_p

最终得到

?lny = \beta_0 + \beta_1x_1 +...+\beta_px_p

为了更加方便解释y,上式可以变形为:

=> y = exp(\beta_0 + \beta_1x_1 +...+\beta_px_p)

=>y = e^{\beta_0}*e^{\beta_1x_1}*...*e^{\beta_px_p}

=>y=\beta_0^{'}*(\beta_1^{'})^{x_1}*...*(\beta_p^{'})^{x_p}

表示的意思是,每当?x_p?上升一个单位,就有?y^{'}=y*(\beta_p^{'})?,则说明y变动了(\beta_p^{'}-1)*100%

????????②零膨胀计数模型

当y含有非常多0,分布右偏的时候,用泊松对数线性模型可能产生偏差,可以用零膨胀计数模型,模型设定如下:

????????设y服从参数为λ的泊松分布,则有\mu = E(y) = \lambda?,但是P(y=0)可能比较大,这种分布的数据叫做 “零膨胀数据”,需要用零膨胀计数模型进行拟合,模型可以分为两个部分:

(i) 零点处:用 logistic模型或者probit模型进行拟合

假设零点的点密度为\pi,那么此处logistic模型的设定为ln\frac{\pi}{1-\pi} = X^{T}\beta

或者此处的probit模型的设定为\pi = \Phi(X\beta)

(ii) 非零点处:用泊松分布模型进行拟合

则非零处的?\mu = E(y) = \lambda?,此处的泊松对数线性模型设定为?ln(\lambda) = Z^{T}\alpha

? ? ? ? 综上,零膨胀密度为:

f(y)=\pi I_{(0)}(y) + (1-\pi)f_c(y)

? ? ? ? 其中,\pi?为零点的点密度,I_{(0)}(y)?为(i)中的模型设定,f_c(y)?为(ii)中的模型设定;

? ? ? ? 进一步地,整个模型的均值为:

\mu = \pi*0+(1-\pi)\lambda=(1-\pi)\lambda

2. 相关R代码

# 数据介绍:被解释变量为y,解释变量为x1,x2,x3,
# 其中x1是连续数值变量;x2是0/1变量,x3是分类变量(即取值为1,2,3)

#1 读入数据
setwd("C:/...")
dat <- read.csv("file.csv", header = T)


#2 数据检查 

##1) 检查一下响应变量分布情况
barplot(table(dat$y))

##2) 解释变量是分类变量的时候,需要进行因子化
dat_x3 <- as.factor(dat$x3)


#3 选择模型回归并查看结果

##1) logistic模型
glm_logit <- glm(y~x1+x2+x3, family=binomial(link=logit), data=dat)
summary(glm_logit) #输出结果
y1<-predict(glm_logit, data.frame(x1=20,x2=1,x3=1))
p1<-exp(y1)/(1+exp(y1)) #估计x1=20,x2=1,x3=1时y=1的概率

##2) probit模型
glm_probit<- glm(y~x1+x2+x3, family=binomial(link=probit), data=dat)
summary(glm_probit) #输出结果
#估计满足条件时y=1的概率

y2 <- predict(glm_probit, data.frame(x1=20,x2=1,x3=1),type="response") 

##3) 多项probit模型
mlog<-multinom(y~x1+x2+x3,data=dat) #建立模型
summary(mlog)
predict(mlog,data.frame(x1=20,x2=1,x3=1),type="p") #估计y=1,2,...,M的概率

##4) 泊松对数线性模型
glm_ln<-glm(y~x1+x2+x3,family=poisson(link=log),data=dat)
summary(glm_ln)
exp(coef(glm_ln)) # 计算因变量为y而不是lny时变量的系数

##5) 零膨胀计数模型
#[|]前是非零设定模型,后面是零值时设定的模型
glm_zero <- zeroinfl(y~x1+x2+x3|y~x1+x2+x3,data=dat) 
summary(glm_zero )


#备注:优化模型
#如果出现某个变量不太显著的问题,可以用逐步回归优化,假设之前回归结果为 fx1
fx1_step <- step(fx1)

如果你看到这里了,可以给个赞吗,辛苦码字2小时耶!

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:32:32  更:2022-03-24 00:37:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:34:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码