最近在研究GWPR,参考了很多广义线性模型,特别是泊松回归的相关内容,知识琐碎且繁杂,做个笔记。
泊松回归
定义
泊松回归(Poisson regression)是用来为计数资料和列联表建模的一种回归分析.泊松回归假设反应变量Y是泊松分布,并假设它期望值的对数可被未知参数的线性组合建模.泊松回归模型有时(特别是当用作列联表模型时)又被称作对数-线性模型.需要注意的是,对数线性模型和泊松回归模型并不完全相同,通常对数线性回归的响应变量是连续的,而泊松回归则是离散的.再给出泊松回归模型的形式之前,我们先考虑几个概念:
- e的概念
- 二项式分布
如果我们令,当时的极限是:
这也说明当时,二项式分布可以近似至泊松分布 - 泊松分布与泊松回归
其中有,为导出泊松回归的形式,我们记上式为,则有:
做对数变换:
再做指数变换:
其中称为链接函数,由此得到了泊松回归模型的形式.那么为什么说泊松回归模型是一种广义线性模型(GLM)呢?首先考虑线性回归模型:
在广义线性模型中,我们不再要求服从而是服从于指数分布族,例如Normal;Poisson;Gamma;Binomial.现证明泊松回归属于指数分布族,首先考虑指数分布族的定义:
现在我们回顾一下泊松回归模型的形式:
记,则有:
所以泊松回归模型也属于指数分布族
参数估计
- 似然函数
再给出了模型的形式以后,进一步需要对参数进行估计,采用极大似然估计法,从总体中抽取容量为的随机样本,此时有似然函数:
对数似然:
对求偏导:
上式方程组一般情况下并没有解析解,但我们可以通过牛顿拉夫逊迭代法求解:
其中.则关于的雅克比矩阵:
此时有Newton-Raphson算法:
在这个迭代过程中,需要给定的初值和精度,不断计算上述过程直至收敛后结束.
同时附上MATLAB代码
function F = PoissionRegressopt(b,Y,X)
n = length(Y);
F = 0;
for k = 1:n
F = 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:n
F = F + Y(k)*X(k,:)'- exp(X(k,:)*b)*X(k,:)';
end
function JM = PoissionJM(b,Y,X)
n = length(Y);
JM = zeros(size(b,1));
for k = 1:n
JM = JM + exp(X(k,:)*b)*X(k,:)'*X(k,:);
end
function [ 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);