分布族family和连接函数log
logistic regression 一般用在用一些预测变量预测二元值变量,是回归与分类的结合体,然而我们不能直接用连续值的回归方法来预测一个离散值 Y(0,1) ,所以我们就转而考虑利用离散值的概率分布的期望来代替:
首先我们就要先考虑离散值的概率分布,一般考虑为二项分布Binomial(2),我们由 Y 的概率分布的期望可以得到分布的一个参数
p=E(Y) 因为0-1分布的期望就等于成功概率p
所以实际上我们只要估计这样的参数p就可以了,一般利用 MLE , 但是由于考虑到要把预测变量的影响加进去,我们就必须建立一个从期望 E(Y) 到预测变量 z⃗ 的一个线性关系,这个时候连接函数就派上用场了
logit(p(zi→))=β⃗ ′⋅zi→ 1
这样给定一组 Y 值我们就可以利用
MLE 得到关于 p 的似然函数,而p 又由连接函数得到与 zi→ 的关系,这样我们就得到关于 β⃗ 的似然函数(已知 Yi(i=1…n) 和 zi→(i=1…n) )L(p)=∏ni=1pYi⋅(1−p)Yi
L(β⃗ )=∏ni=1exp(Yi(β⃗ ′⋅zi→))∏ni=1(1+exp(β⃗ ′⋅zi→))这样我们就得到了关于 β⃗ 的 MLE 估计
R实现
######family是响应变量的概率分布,()内是连接函数
fit2 <- glm (affairs ~ age + yearsmarried + religiousness + rating, data = Affairs,family = binomial (logit))
summary (fit2)
###############################################################
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.93083 0.61032 3.164 0.001558 **
age -0.03527 0.01736 -2.032 0.042127 *
yearsmarried 0.10062 0.02921 3.445 0.000571 ***
religiousness -0.32902 0.08945 -3.678 0.000235 ***
rating -0.46136 0.08884 -5.193 2.06e-07 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
####################指数化之后,我们可以更方便的指出预测变量和响应变量之间的定量关系,当rating加一,则odds*0.63;若rating 加10,则odds*0.63^10
exp(coefficients(fit2))
(Intercept) age yearsmarried religiousness rating
6.8952321 0.9653437 1.1058594 0.7196258 0.6304248
################预测,观察type不同得到预测值不同
test <-data.frame(rating = 1:5, age = mean(age),yearsmarried = mean(yearsmarried), religiousness = mean (religiousness))
a <-predict(fit2, newdata = test)
b <-predict(fit2, newdata = test,type = "response")
exp(a)/(1+exp(a))
b
#####
> exp(a)/(1+exp(a))
1 2 3 4 5
0.5302296 0.4157377 0.3096712 0.2204547 0.1513079
> b
1 2 3 4 5
0.5302296 0.4157377 0.3096712 0.2204547 0.1513079
- 所以在加了response 类型之后的预测值是直接给出了
p
,而没加response则是给出了
logit(p)
在 Poisson Regression 中,我们使用的是 log(λ)=β⃗ ′⋅z⃗
, 其中 λ 是 Poisson Regression 的期望,而不是用odds
补充
如果响应变量取值不是二元而是多元,比如多项分布,有
n
个参数
log(pk1pk2)=β⃗ ′⋅xk1→
log(pk2pk3)=β⃗ ′⋅xk2→
⋯
log(pknpkn−1)=β⃗ ′⋅xkn−1→
∑nk=1pk=1
这样的
n
个方程构成的方程组就可以把
f(x1=m1,x2=m2,⋯,xn=mn)=M∏nk=1mk!∏nk=1pmkk (M=∑nk=1mk)
- 这里为什么会用log(odds)来连接
p
和
z⃗ 呢,就是因为 β⃗ ′⋅z⃗ 的取值是 (−∞,∞) ,而通过这样的一个变换之后就可以把 p 的取值变成(0,1) 了。同理,对于 Poisson Regression , log(λ) 把 (−∞,∞) 变成 λ 的取值范围 (0,∞) ↩