最近在研究GWPR,参考了很多广义线性模型,特别是泊松回归的相关内容,知识琐碎且繁杂,做个笔记。

泊松回归

定义

泊松回归(Poisson regression)是用来为计数资料和列联表建模的一种回归分析.泊松回归假设反应变量Y是泊松分布,并假设它期望值的对数可被未知参数的线性组合建模.泊松回归模型有时(特别是当用作列联表模型时)又被称作对数-线性模型.需要注意的是,对数线性模型和泊松回归模型并不完全相同,通常对数线性回归的响应变量是连续的,而泊松回归则是离散的.再给出泊松回归模型的形式之前,我们先考虑几个概念:

  • e的概念
    lim⁡n→∞(1−1n)n=elim⁡n→∞(1−λn)n=eλ\lim_{n\to\infty}(1-\frac{1}{n})^n=e \\ \lim_{n\to\infty}(1-\frac{\lambda}{n})^n=e^\lambda \\ n→∞lim​(1−n1​)n=en→∞lim​(1−nλ​)n=eλ

  • 二项式分布
    P(X=k)=(nk)pk(1−p)n−kP(X=k)=\binom{n}{k}p^k(1-p)^{n-k} P(X=k)=(kn​)pk(1−p)n−k
    如果我们令p=λ/np=\lambda/np=λ/n,当n→∞n\to\inftyn→∞时PPP的极限是:
    lim⁡n→∞P(X=k)=lim⁡n→∞(nk)pk(1−p)n−k=lim⁡n→∞n!(n−k)!k!(λn)k(1−λn)n−k=lim⁡n→∞[n!nk(n−k)!](λkk!)(1−λn)n⏟→exp⁡(−λ)(1−λn)−k⏟→1=lim⁡n→∞[(1−1n)(1−2n)⋯(1−k−1n)](λkk!)(1−1n)n(1−λn)−k=(λkk!)exp⁡{−λ}\begin{aligned} \lim_{n\to\infty}P(X=k)&=\lim_{n\to\infty}\binom{n}{k}p^k(1-p)^{n-k} \\ &=\lim_{n\to\infty}\frac{n!}{(n-k)!k!} \left( \frac{\lambda}{n} \right)^k\left( 1-\frac{\lambda}{n} \right)^{n-k} \\ &=\lim_{n\to\infty}\left[\frac{n!}{n^k(n-k)!}\right] \left( \frac{\lambda^k}{k!}\right) \underbrace{ \left( 1-\frac{\lambda}{n} \right) ^n }_{\to\exp(-\lambda)}\underbrace{\left( 1-\frac{\lambda}{n} \right) ^{-k} }_{\to1}\\ &=\lim_{n\to\infty} \left[ \left( 1-\frac{1}{n} \right) \left( 1-\frac{2}{n} \right)\cdots \left( 1-\frac{k-1}{n} \right)\right]\left( \frac{\lambda^k}{k!} \right) \left( 1-\frac{1}{n} \right)^n \left( 1-\frac{\lambda}{n} \right)^{-k} \\ &=\left( \frac{\lambda^k}{k!} \right)\exp\{-\lambda\} \end{aligned} n→∞lim​P(X=k)​=n→∞lim​(kn​)pk(1−p)n−k=n→∞lim​(n−k)!k!n!​(nλ​)k(1−nλ​)n−k=n→∞lim​[nk(n−k)!n!​](k!λk​)→exp(−λ)(1−nλ​)n​​→1(1−nλ​)−k​​=n→∞lim​[(1−n1​)(1−n2​)⋯(1−nk−1​)](k!λk​)(1−n1​)n(1−nλ​)−k=(k!λk​)exp{−λ}​
    这也说明当n→∞n\to\inftyn→∞时,二项式分布可以近似至泊松分布

  • 泊松分布与泊松回归
    P(X=k)=λkk!e−λ,k=0,1,⋯P(X=k)=\frac{\lambda^k}{k!}e^{-\lambda},k=0,1,\cdots P(X=k)=k!λk​e−λ,k=0,1,⋯
    其中有E(X)=λ,Var(X)=λE(X)=\lambda,Var(X)=\lambdaE(X)=λ,Var(X)=λ,为导出泊松回归的形式,我们记上式为YYY,则有:
    Y=λkk!e−λ,k=0,1,⋯Y=\frac{\lambda^k}{k!}e^{-\lambda},k=0,1,\cdots Y=k!λk​e−λ,k=0,1,⋯
    做对数变换:
    log(Y;λ)=log(e−λλk)−log(k!)=log(e−λ)+log(λk)−log(k!)=−λ+klog(λ)−log(k!)\begin{aligned} log(Y;\lambda)&=log(e^{-\lambda}\lambda^k)-log(k!)\\ &=log(e^{-\lambda})+log(\lambda^k)-log(k!)\\ &=-\lambda+klog(\lambda)-log(k!) \\ \end{aligned} log(Y;λ)​=log(e−λλk)−log(k!)=log(e−λ)+log(λk)−log(k!)=−λ+klog(λ)−log(k!)​
    再做指数变换:
    elog(Y;λ)=f(Y;λ)=exp⁡{klog(λ)−λ−log(k!)}e^{log(Y;\lambda)}=f(Y;\lambda)=\exp\{klog(\lambda)-\lambda-log(k!) \} elog(Y;λ)=f(Y;λ)=exp{klog(λ)−λ−log(k!)}
    其中log(Y)log(Y)log(Y)称为链接函数,由此得到了泊松回归模型的形式.那么为什么说泊松回归模型是一种广义线性模型(GLM)呢?首先考虑线性回归模型:
    y=Xβ+eη=Xβμ=E(y)y=X\beta+e \\ \eta=X\beta\\ \mu=E(y) y=Xβ+eη=Xβμ=E(y)
    在广义线性模型中,我们不再要求yyy服从N(μ,σ2)N(\mu,\sigma^2)N(μ,σ2)而是服从于指数分布族,例如Normal;Poisson;Gamma;Binomial.现证明泊松回归属于指数分布族,首先考虑指数分布族的定义:
    f(y;θ,ϕ)=exp⁡{(yθ−b(θ))a(ϕ)+c(y,ϕ)}f(y;\theta,\phi)=\exp\left\{ \frac{(y\theta-b(\theta))}{a(\phi)} +c(y,\phi)\right\} f(y;θ,ϕ)=exp{a(ϕ)(yθ−b(θ))​+c(y,ϕ)}
    现在我们回顾一下泊松回归模型的形式:
    f(Y;λ)=exp⁡{klog(λ)−λ−log(k!)}f(Y;\lambda)=\exp\{klog(\lambda)-\lambda-log(k!) \} f(Y;λ)=exp{klog(λ)−λ−log(k!)}
    记θ=log(λ),λ=exp⁡{θ}\theta=log(\lambda),\lambda=\exp\{\theta\}θ=log(λ),λ=exp{θ},则有:
    f(Y=k;θ,ϕ)=exp⁡{yθ−exp⁡{θ}−log(k!)}=exp⁡{yθ−exp⁡{θ}1+(−)log(k!)}\begin{aligned} f(Y=k;\theta,\phi)&=\exp\{y\theta-\exp\{\theta\}-log(k!) \} \\ &=\exp\left\{ \frac{y\theta-\exp\{\theta\}}{1}+(-)log(k!)\right\} \end{aligned} f(Y=k;θ,ϕ)​=exp{yθ−exp{θ}−log(k!)}=exp{1yθ−exp{θ}​+(−)log(k!)}​
    所以泊松回归模型也属于指数分布族

参数估计

  • 似然函数
    再给出了模型的形式以后,进一步需要对参数进行估计,采用极大似然估计法,从总体(Y,X)(Y,X)(Y,X)中抽取容量为nnn的随机样本,此时有似然函数:
    L(β)=∏i=1nf(β;yi,xi)=∏i=1nexp⁡{yiXiTβi−exp⁡(XiTβi)−log⁡(yi!)}L(\beta)=\prod_{i=1}^nf(\beta;y_i,x_i)=\prod_{i=1}^n\exp\{ y_iX_i^{\rm{T}}\beta_i-\exp(X_i^{\rm{T}}\beta_i)-\log(y_i!)\} L(β)=i=1∏n​f(β;yi​,xi​)=i=1∏n​exp{yi​XiT​βi​−exp(XiT​βi​)−log(yi​!)}
    对数似然:
    l(β)=∑i=1n[yixiβi−exp⁡(xiβi)−log⁡(yi!)]l(\beta)=\sum_{i=1}^n[y_ix_i\beta_i-\exp(x_i\beta_i)-\log(y_i!)] l(β)=i=1∑n​[yi​xi​βi​−exp(xi​βi​)−log(yi​!)]
    对βi\beta_iβi​求偏导:
    ∂l(β)∂βi=∑i=1n[yixi−xiexp⁡(xiβi)]=0\frac{\partial l(\beta)}{\partial\beta_i}=\sum_{i=1}^n[y_ix_i-x_i\exp(x_i\beta_i)]=0 ∂βi​∂l(β)​=i=1∑n​[yi​xi​−xi​exp(xi​βi​)]=0
    上式方程组一般情况下并没有解析解,但我们可以通过牛顿拉夫逊迭代法求解:
    F(β)=[∑i=1n[yi−exp⁡(xiβi)]∑i=1n[yixi1−xi1exp⁡(xiβi)]⋮∑i=1n[yixiq−xiqexp⁡(xiβi)]]F(\beta)= \begin{bmatrix} \sum_{i=1}^n [y_i-\exp(x_i\beta_i)] \\ \sum_{i=1}^n [y_ix_{i1}-x_{i1}\exp(x_i\beta_i)] \\ \vdots\\ \sum_{i=1}^n [y_ix_{iq}-x_{iq}\exp(x_i\beta_i)] \end{bmatrix} F(β)=⎣⎢⎢⎢⎡​∑i=1n​[yi​−exp(xi​βi​)]∑i=1n​[yi​xi1​−xi1​exp(xi​βi​)]⋮∑i=1n​[yi​xiq​−xiq​exp(xi​βi​)]​⎦⎥⎥⎥⎤​
    其中β0=1,x0=1\beta_0=1,x_0=1β0​=1,x0​=1.则F(βi)F(\beta_i)F(βi​)关于β\betaβ的雅克比矩阵:
    J(β)=∂2l(β)∂βk∂βj=−∑i=1nxixikexp⁡(XTβ),k=0,1,⋯,q;j=0,1,⋯,q.J(\beta)=\frac{\partial^2l(\beta)}{\partial\beta_k\partial\beta_j}=-\sum_{i=1}^nx_ix_{ik}\exp(X^T\beta),k=0,1,\cdots,q;j=0,1,\cdots,q. J(β)=∂βk​∂βj​∂2l(β)​=−i=1∑n​xi​xik​exp(XTβ),k=0,1,⋯,q;j=0,1,⋯,q.
    此时有Newton-Raphson算法:
    β(m+1)=β(m)−[J(β(m))]−1F(β(m)),m=0,1,⋯\beta^{(m+1)}=\beta^{(m)}-[J(\beta^{(m)})]^{-1}F(\beta^{(m)}),m=0,1,\cdots β(m+1)=β(m)−[J(β(m))]−1F(β(m)),m=0,1,⋯
    在这个迭代过程中,需要给定β\betaβ的初值和精度ε\varepsilonε,不断计算上述过程直至∣β(m+1)−β(m)∣<ε|\beta^{(m+1)}-\beta^{(m)}|<\varepsilon∣β(m+1)−β(m)∣<ε收敛后结束.
    同时附上MATLAB代码
function F = PoissionRegressopt(b,Y,X)
n = length(Y);
F = 0;
for k = 1:nF = F + Y(k)*X(k,:)*b - exp(X(k,:)*b);% - factorial(Y(k));
end
F = - F;function F = PoissionF(b,Y,X)
n = length(Y);
F = zeros(size(b));
for k = 1:nF = F + Y(k)*X(k,:)'- exp(X(k,:)*b)*X(k,:)';
endfunction JM  = PoissionJM(b,Y,X)
n = length(Y);
JM  = zeros(size(b,1));
for k = 1:nJM = JM +  exp(X(k,:)*b)*X(k,:)'*X(k,:);
endfunction [ bm fv1,fv2] = PoissionNR(bm0,Y,X)
itermax = 30;
errstol = 1e-4;
iters = 0;
deltabm = ones(size(bm0));
bm1 = bm0 + deltabm;
while (iters<itermax)||(max(abs(deltabm))>errstol)deltabm  = pinv(PoissionJM(bm0,Y,X))*PoissionF(bm0,Y,X);bm1 = bm0 + deltabm;bm0  = bm1;   iters = iters +1;
end
bm = bm0;
fv1 = PoissionF(bm,Y,X);
fv2 = PoissionRegressopt(bm,Y,X);

广义线性模型之泊松回归相关推荐

  1. Python使用sklearn构建广义线性模型:泊松回归(Poisson regression)实战

    Python使用sklearn构建广义线性模型:泊松回归(Poisson regression)实战 目录 Python使用sklearn构建广义线性模型:泊松回归(Poisson regressio ...

  2. Python使用sklearn构建广义线性模型:gamma回归(Gamma regression)实战

    Python使用sklearn构建广义线性模型:gamma回归(Gamma regression)实战 目录 Python使用sklearn构建广义线性模型:gamma回归(Gamma regress ...

  3. Python使用sklearn构建广义线性模型:Tweedie回归(Tweedie regression)实战

    Python使用sklearn构建广义线性模型:Tweedie回归(Tweedie regression)实战 目录 Python使用sklearn构建广义线性模型:Tweedie回归(Tweedie ...

  4. 广义线性模型(逻辑回归、泊松回归)

    线性回归模型也并不适用于所有情况,有些结果可能包含而元数据(比如正面与反面)或者计数数据,广义线性模型可用于解释这类数据,使用的仍然是自变量的线性组合. 目录 逻辑回归 使用statsmodels 使 ...

  5. stats | 广义线性模型(二)——泊松回归

    本篇介绍一种常见的广义线性模型:泊松回归.泊松分布是离散型分布,它的概率分布函数如下: 写成指数族分布的形式如下: 对照指数族分布的通式: 可得, 广义线性模型假设与解释变量存在线性关系,即 又因为泊 ...

  6. 对数线性模型之一(逻辑回归), 广义线性模型学习总结

    经典线性模型自变量的线性预测就是因变量的估计值. 广义线性模型:自变量的线性预测的函数是因变量的估计值.常见的广义线性模型有:probit模型.poisson模型.对数线性模型等等.对数线性模型里有: ...

  7. 大数据分析R中泊松回归模型实例

    如果您知道如何以及何时使用泊松回归,它可能是一个非常有用的工具.在大数据分析R中泊松回归模型实例中,我们将深入研究泊松回归,它是什么以及R程序员如何在现实世界中使用它. 具体来说,我们将介绍: 1)泊 ...

  8. 调整泊松回归中的过度分散

    广义线性模型(Generalized Linear Models) The Poisson regression model naturally arises when we want to mode ...

  9. 泊松分布与泊松回归模型

    泊松分布 Poisson分布(法语:loi de Poisson,英语:Poisson distribution,译名有泊松分布.普阿松分布.卜瓦松分布.布瓦松分布.布阿松分布.波以松分布.卜氏分配等 ...

  10. R语言广义线性模型函数GLM、广义线性模型(Generalized linear models)、GLM函数的语法形式、glm模型常用函数、常用连接函数、逻辑回归、泊松回归、系数解读、过散度分析

    R语言广义线性模型函数GLM.广义线性模型(Generalized linear models).GLM函数的语法形式.glm模型常用函数.常用连接函数.逻辑回归.泊松回归.系数解读.过散度分析 目录

最新文章

  1. 9、 Struts2验证(声明式验证、自定义验证器)
  2. qt调用c语言编写的dll文件,Qt之调用外部DLL - moki_oschina的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 跨链Cosmos(1) 网络拓扑
  4. h5 rtmp推荐控件_H5播放Rtmp之videojs播放
  5. ASP.NET MVC 第一章 我们的第一个MVC例子
  6. ERP平台的自动化测试技术实践
  7. 北京科技大学大小年计算机,【猛戳】本科一批没录满高校名单(参考2015)!报志愿三步走211分8档,985分4档,全在这!...
  8. 《java 程序设计教程》:毕
  9. 深入理解Java三种IO模式和Epoll模型
  10. 输入一个三位数,再反向输出
  11. 基于博弈论的诱饵路由设计及实现
  12. HTML+CSS+JS斗地主 记录局数 可自定义昵称
  13. ZooKeeper JMX enabled by default
  14. 服务器防火墙有哪些功能和作用?
  15. 工作流——流程设计器
  16. 物品分类游戏html5,幼儿物品分类教案
  17. esxi中利用ovf模板迁虚拟机
  18. React中使用SWR处理数据请求
  19. 美团后台开发秋招面经汇总(更新至2021-08-13)
  20. 基于Java+SpringBoot+Vue前后端分离餐厅点餐管理系统设计和实现

热门文章

  1. 独立站运营必知:关于聊天机器人的十大好处
  2. winpe装双系统linux_自制WINPE+MAC安装U盘及双系统存储U盘(增加多系统安装)
  3. 景点评论爬虫之微博爬虫和携程爬虫
  4. 小程序利用云函数获取手机号码
  5. conime.exe是什么?conime.exe病毒的清除方法
  6. Github 汉化插件教程
  7. Python绘制污染玫瑰图
  8. 警察抓小偷打字游戏JAVA_警察抓小偷打字游戏金山打字通游戏
  9. linux转到工作目录,linux工作目录切换命令
  10. 《淘宝技术这十年》之LAMP架构的网站