导读
因变量为定性变量时,可以考虑使用logistic回归筛选自变量和预测因变量。该模型属于广义线性模型(Generalized Linear Model)的一种,最早由Nelder与Wedderburn在1972年于Journal of Royal Statistical Society上发表。其中的非条件二分类logistic回归最常用,这里的非条件指的是非匹配设计,二分类指的是因变量为二分类变量。
非条件二分类logistic回归模型可写成:ln(Odds)=b0+b1x1+b2x2+…+bm*xm,其中Odds=P/(1-P)。
在R中,可以直接使用glm函数实现非条件二分类logistic回归。下面以R自带数据集Titanic作示范。
Titanic数据集有5个变量,其中Freq变量用来加权。各变量赋值如下:
变量 | 赋值 |
---|---|
Class | 1st, 2nd, 3rd, Crew |
Sex | Male, Female |
Age | Child, Adult |
Survived | No, Yes |
Freq | 实际人数 |
由于因变量取值是字符,所以glm会以其取值的字符排序靠后(即Yes,代表生还)的概率P作为方程中计算Odds的依据。
1. 拟合logistic回归模型。
fit <- glm(Survived ~ Class+Sex+Age, family=binomial(link='logit'), data=Titanic,
weights=Freq)
2. 显示回归系数及假设检验结果
summary(fit)

由结果可见,三个变量都有统计学意义。此处所有变量是以哑变量的形式列出。例如,Class2nd代表Class变量的2nd这个水平,它的系数是-1.0181,表示比 1st的系数0要小1.0181。
据此可以写出回归方程为:
ln(Odds)=0.6853+01st-1.01812nd-1.7783rd-0.8577Crew+0Male+2.4201Female+0Child-1.0615Adult
3. 计算Odds ratio
exp(coef(fit))

对Class2nd的结果解释:在Sex和Age都相同的情况下,Class为2nd的乘客相比1st的乘客生还概率低,Odds大约降低64.9%。
4. 计算OR的95% CI
exp(confint(fit))

5. 预测Class为3rd、Sex为Male、Age为Adult的乘客生还概率
pr <- predict(fit, newdata= data.frame(Class='3rd',
Sex='Male',Age='Adult')) # 计算ln(Odds)
exp(pr)/(1+exp(pr)) # 计算概率
结果为0.1039594。
预测这里也可以手动代入回归方程计算ln(Odds):
#其中3rd、Male、Adult取值1即可。
ln(Odds)=0.6853-1.778*3rd +0*Male -1.0615*Adult
注意事项:利用glm函数拟合logistic回归时,注意因变量的赋值;结果为哑变量时,注意参照水平。
网友评论