广义线性模型(GLMs)及算法介绍

  一般我们了解的线性模型是针对连续性变量,并且服从正态分布的,但是在实际应用上显得非常的局限。因为我们我看到的数据很多都是离散的,而且不是服从正态分布的。针对这种情况,对传统线性模型进行推广,行成了现在的广义线性模型。广义线性模型使得变量从正态分布拓展到指数分布族,从连续型变量拓展到离散型变量,这就使得在现实中有着很好的运用,下面开始介绍广义线性模型。

广义线性模型(GLM)定义

由以下三部分组成:
1 随机部分
  随机样本 Y 1 , Y 2 , . . . , Y n 服从的分布来自指数分布族,即 Y i 的分布形式为

f ( y i ; θ i , ϕ ) = e x p { y i θ i b ( θ i ) a ( ϕ ) + c ( y i , ϕ ) }

其中参数 θ i 叫做正则参数,并且随着指数 i i = 1 , 2 , . . . , n 而变化,但是扰乱因子 ϕ 是个常数。
2 系统部分
  对于第 i 个观测 Y i ,我们有一个称为系统部分的线性预测值,即所研究变量的线性组合,即
η i = x i T β = j = 1 p x i j β j , i = 1 , 2 , . . . n

3 连接函数
  有一个单调可微函数 g ( ) 称为连接函数,它将随机部分的期望和系统部分连接起来,通过下面的等式
g ( μ i ) = η i = x i T β , i = 1 , 2 , . . . n ,
其中 μ i = E ( Y i ) Y i 的期望。
  矩阵表示:
η = [ η 1 η 2 η n ] n × 1 , μ = [ μ 1 μ 2 μ n ] n × 1 , X = [ x 1 x 2 x n ] n × p

那么连接函数可以用矩阵形式表示
g ( μ ) = η = X β

连接函数介绍

1、正如 G L M s 的定义所指出的那样,连接函数是单调可微的,用于连接随机部分的期望和系统部分的线性预测值
2、选择与分布相关的自然参数作为连接函数,在这种情况下,它被称为点则连接。具体而言,如果连接函数 g ( ) 采用与自然参数相同的函数形式,那么它被称为点则连接函数。
3、点则连接的优点是它可以带来非常好的统计特性,并且使用起来很方便。例如,对于最常用的分布,我们有以下点则连接函数。

Normal μ = η   (identity-link)
Poisson l o g μ = η   (log-link)
Bernoulli l o g π 1 π = η   (logistic-link)
Binomial l o g π 1 π = η   (logistic-link)

4、然而,点则连接并不是连接函数的唯一选择。其他可能的 G L M s 连接函数包括
(a)二项分布的Probit连接: η = Φ 1 ( π ) ; 0 < π < 1 ,其中 Φ ( ) 叫做累计分布函数(不是点则连接呦)
(b)补充的二项分布的log-log连接

η = l o g { l o g ( 1 π ) } , 0 < π < 1

(c)属于任何幂族分布的连接
η = { μ λ , i f λ 0 l o g μ , i f λ = 0

最大似然估计(MLE)的一般原则

  假设我们对未知参数 θ 的对数似然函数,比如说 l ( θ ) 我们想找出 θ 的最大似然估计(MLE) θ ^ ,即

θ ^ a r g m a x θ Ω { l ( θ ) }

这是估计方程的解
l ( θ ) θ = 0

1、在这种情况下,例如,对于正态分布参数 θ 的最大似然估计 θ ^ 可以有一个明确的数学表达式 μ = 1 n i = 1 n l n x i
2、一般来说,最大似然估计 θ 没有没有明确的数学解。相反,需要某些数值优化方法。
3、统计学中最常用的两种优化方法是Newton-Raphson算法和Fisher得分算法,他们都涉及计算 l ( θ ) θ 的2次偏导数。

Newton-Raphson算法

  该算法计算最大似然估计 θ ^ ,通过下面的迭代:

θ m = θ m 1 + [ l ( θ ( m 1 ) ) ] 1 [ l ( θ ( m 1 ) ) ] 1

其中 m = 1 , 2 , . . . 这里,
l ( θ ( m 1 ) ) = l ( θ ) θ | θ = θ ( m 1 )
l ( θ ( m 1 ) ) = 2 l ( θ ) θ θ T | θ = θ ( m 1 )
p × 1 p × p 的向量和矩阵 p θ
注1  l ( θ ) θ l ( θ ) θ
注2 算法(1)需要初始值,例如 θ 0 ,以开始迭代过程。初始值的选择通常需要经验。
注3 算法(1)迭代直到收敛。例如,当迭代结果满足
θ ( m ) θ ( m 1 ) θ ( m 1 ) 10 5
则迭代停止。 θ ( m ) 可以认为是最大似然估计 θ ^

Fisher得分算法

  Fisher得分算法与Newton-Raphson算法相同,只是(1)式中的观测矩阵 l ( θ ) 被Fisher信息矩阵所代替

I ( θ ) = E [ l ( θ ) ] = l ( θ | Y ) f Y ( Y | θ ) d Y

注释 Fisher得分算法和Newton-Raphson算法一般收敛于同一解。对于前者,在某些情况下,在信息矩阵的解析式上可能比后者更简单。例如Fisher信息矩阵可能是对角阵或者块对角阵,二观测信息矩阵可能不是。其次作为副产物,这两种算法都提供了极大似然估计的协方差矩阵。

广义线性模型(GLMs)中的最大似然估计(MLE)

  首先,GLMs中的对数似然函数具有这样的形式

l = i = 1 n l o g f ( y i ; θ i , ϕ ) = i = 1 n ( y i θ i b ( θ i ) ) a i ( ϕ ) + i = 1 n c ( y i , ϕ )
其中, β = ( β 1 , β 2 , . . . , β p ) T β j 的得分函数为
U j = l β j = i = 1 n ( y i b ( θ i ) ) a i ( ϕ ) θ i β j = i = 1 n ( y i μ ) a i ( ϕ ) θ i β j 2

其中, μ i = E ( Y i ) = b ( θ i ) V a r ( Y i ) = b ( θ i ) a ( ϕ ) ,我们使用链式法则进行差异化
θ i β j = θ i μ i μ i β j
因为
θ i μ i = 1 μ i θ i = 1 b ( θ i ) = a i ( ϕ ) b ( θ i ) a i ( ϕ ) = a i ( ϕ ) V a r ( Y i )

并且
μ i β j = μ i η i η i β j = μ i η i x i j
其中 x i j x i j ,我们知道
θ i β j = a i ( ϕ ) V a r ( Y i ) μ i η j x i j
因此(2)式就化为了
U j = i = 1 n [ ( y i μ i ) V a r ( Y i ) x i j ( μ i η i ) ] = i = 1 n ( y i μ i ) g ( μ i ) V i x i j 3
其中 V i = V a r ( Y i ) ,并且
μ i η i = 1 η i μ i = 1 g ( μ i )
由于 η i = g ( μ i ) ,因此 β 的得分向量是
U U ( β ) = i = 1 n ( y i μ i ) g ( μ i ) V i x i 4
另一方面,(3)式对 β j 求偏导得
2 l β j β k = U j β k = i = 1 n ( μ i β k ) 1 g ( μ i ) V i x i j + i = 1 n ( y i μ i ) [ 1 g ( μ i ) V i ] β k x i j 5
由于 E ( Y i μ i ) = 0 ,所以(5)式的第二项在进行期望时就消失了。即Fisher信息阵的矩阵形式就变成了
I ( β ) = E ( 2 l β β T ) = i = 1 n 1 g ( μ i ) 2 V i x i j x i k
因此当我们表示 W i = 1 g ( μ i ) 2 V i ,并且
W = d i a g ( W 1 , W 2 , . . . , W n ) = ( W 1 0 0 0 W 2 0 0 0 0 0 W n )
则Fisher信息阵就可以表示为
I ( β ) = X T W X
D = d i a g ( g ( μ 1 ) , g ( μ 2 ) , . . . , g ( μ n ) ) ,这样(4)式就可以写成
U = U ( β ) = X T W D ( y μ )

计算最大似然估计(MLE)参数 β 的算法

  假设我们有一个估计 β ( m 1 ) ,基于这个估计我们计算

μ ( m 1 ) = μ ( β ( m 1 ) ) W ( m 1 ) = W ( β ( m 1 ) )

并且有
D ( m 1 ) = D ( β ( m 1 ) )
  那么Fisher得分算法就会显示 β 的下一次迭代
β ( m ) = β ( m 1 ) + [ I ( β ( m 1 ) ) ] 1 [ U ( β ( m 1 ) ) ] = β ( m 1 ) + [ X T W ( M 1 ) X ] 1 [ X T W ( M 1 ) D ( M 1 ) ( y μ ( m 1 ) ) ]
可以写成
β ( m ) = [ X T W X ] 1 X T W ( m 1 ) [ X β ( m 1 ) + D ( m 1 ) ( y μ ( m 1 ) ) ]
Z ( m 1 ) = X β ( m 1 ) + D ( m 1 ) ( y μ ( m 1 ) )
然后它又可以被写成
β ( m ) = ( X ( T ) W ( m 1 ) X ) 1 X T W m 1 Z ( m 1 ) 6

注释 (6)式意味着,给定参数 β 的解,我们需要计算“工作权重矩阵” W 和“工作响应向量” Z ,然后利用广义加权最小二乘法得到 β 的更新解。

广义线性模型实例解析

  下表中的ARPI事物数据在协变量X的不同处观察到Y,并且数据是服从Poisson分布的。我们利用GLM来解决这个问题。

Y i 2 3 6 7 8 9 10 12 15
x i -1 -1 0 0 0 0 1 1 1

数据即探索Y和X之间的关系。设 Y i 为变量 y 的第 i 个数,表示 E ( Y i ) = μ i 。我们通过建立关系

g ( μ i ) = x i β
  对于这个Poisson数据集,点则连接是对数连接函数。
l o g μ i = β 0 + β 1 x i = ( 1 , x i ) ( β 0 β 1 ) = x i T β
接下来我们要来求 W Z 的表达式。
  我们已知的条件有 g ( μ i ) = 1 μ i ,对于Poisson分布显然有 V i = E ( Y i ) = μ i ,所以
W i = [ ( g ( μ i ) 2 ) V i ] 1 = e x p { x i T β }
并且
Z i = x i T β + g ( μ i ) ( y i μ i ) = x i T β + ( y i μ i ) μ i

  我们选择 β β 0 = 2 β 1 = 1 。结合Fisher迭代算法,代入数据。这个过程一直持续到收敛。结果如下表

m 0   1   2    3   4
β 0 m 2 1.9150 1.8902 1.8892 1.8892
β 1 m 1 0.7235 0.6716 0.6697 0.6697

因此 β M L E β 0 = 1.8892 β 1 = 0.6697

R语言代码

y <- c(2,3,6,7,8,9,10,12,15); 
x <- c(-1,-1,0,0,0,0,1,1,1)
X <- cbind(rep(1,9),x); beta_0 <- c(2,1)
for (i in 1:100){
beta <- beta_0
eta <- X %*% beta
mu <- exp(eta)
W <- diag(as.vector(mu))
Z <- X %*% beta + ((y-mu)*mu^(-1))
XWX <- t(X) %*% W %*% X
XWZ <- t(X) %*% W %*% Z
Cov <- solve(XWX)
beta <- Cov %*% XWZ}
testdata<-data.frame(y,x)
summary(glm(y~x,family=poisson,data=testdata))

猜你喜欢

转载自blog.csdn.net/m0_37788308/article/details/80957509