多项分类Logistic回归分析的功能与意义
我们经常会遇到因变量有多个取值而且无大小顺序的情况,比如职业、婚姻情况等等,这时一般的线性回归分析无法准确地刻画变量之间的因果关系,需要用其它回归分析方法来进行拟合模型。SPSS的多项分类Logistic回归便是一种简便的处理该类因变量问题的分析方法。
例子:下表给出了对山东省某中学20名视力低下学生视力监测的结果数据。试用多项分类Logistic回归分析方法分析视力低下程度(由轻到重共3级)与年龄、性别(1代表男性,2代表女性)之间的关系。
山东省某中学20名学生视力监测结果数据 编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 视力低下程度 1 1 2 2 3 3 2 2 1 3 1 1 1 2 1 1 3 1 1 2 性别 1 1 1 2 2 2 2 1 1 2 1 2 1 1 2 2 2 1 1 2 年龄 15 15 14 16 16 17 17 18 14 18 17 17 15 18 15 15 17 15 15 16 分析步骤: 1、进入SPSS,打开“分析”|“回归”|“多项Logistic” 命令。 2、选择进行Logistic 回归的变量。如下图所示对话框左侧的列表中,选中“视力低下程度”
并单击向右的箭头按钮使之进入“因变量”列表框,选择“性别”使之进入“因子”列表框,选择“年龄”使之进入“协变量”列表框。
6.jpg (38.14 KB, 下载次数: 47) 下载附件 2012-8-13 23:20 上传 3、其它设置使用系统默认设置即可。 4、设置完毕,单击“确定”按钮,等待输出结果。 模型拟合信息 模型拟合标准 模型 -2 倍对数似然值 仅截距 最终 32.633 18.804 卡方 13.828 df 4 显著水平 .008 似然比检验 伪 R 方 Cox 和 Snell Nagelkerke McFadden .499 .572 .336
似然比检验 模型拟合标准 效应 简化后的模型的 -2 倍对数似然值 截距 年龄 性别 18.804 25.442 25.306 .000 6.638 6.502 0 2 2 . .036 .039 卡方 df 显著水平 似然比检验 参数估计 听力低下程度a 截距 年龄 1 [性别=1] [性别=2] 截距 年龄 B 34.338 -2.112 21.272 标准误 19.553 1.181 1.183 Wald 3.084 3.197 323.095 df 1 1 1 显著水平 .079 .074 .000 Exp(B) 的置信区间 95% Exp(B) 下限 .121 1.731E+09 .012 1.702E+08 上限 1.225 1.761E+10 0 20.974 -1.277 . 19.066 1.141 . 1.210 1.251 0 1 1 . .271 .263 . .279 . .030 . 2.613 2 [性别=1] 20.540 .000 . 1 . 8.321E+08 8.321E+08 8.321E+08 [性别=2] 0 . . 0 . . . .
还是以教程“blankloan.sav\"数据为例,研究银行客户贷款是否违约(拖欠)的问题,数据如下所示:
上面的数据是大约700个申请贷款的客户,我们需要进行随机抽样,来进行二元Logistic回归分析,上图中的“0”表示没有拖欠贷款,“1”表示拖欠贷款,接下来,步骤如下: 1:设置随机抽样的随机种子,如下图所示:
选择“设置起点”选择“固定值”即可,本人感觉200万的容量已经足够了,就采用的默认值,点击确定,返回原界面、
2:进行“转换”—计算变量“生成一个变量(validate),进入如下界面:
在数字表达式中,输入公式:rv.bernoulli(0.7),这个表达式的意思为:返回概率为0.7的bernoulli分布随机值
如果在0.7的概率下能够成功,那么就为1,失败的话,就为\"0\"
为了保持数据分析的有效性,对于样本中“违约”变量取缺失值的部分,validate变量也取缺失值,所以,需要设置一个“选择条件” 点击“如果”按钮,进入如下界面:
如果“违约”变量中,确实存在缺失值,那么当使用\"missing”函数的时候,它的返回值应该为“1”或者 为“true\", 为了剔除”缺失值“所以,结果必须等于“0“ 也就是不存在缺失值的现象 点击 ”继续“按钮,返回原界面,如下所示:
将是“是否曾经违约”作为“因变量”拖入因变量选框,分别将其他8个变量拖入“协变量”选框内, 在方法中,选择:forward.LR方法
将生成的新变量“validate\" 拖入\"选择变量“框内,并点击”规则“设置相应的规则内容,如下所示:
设置validate 值为1,此处我们只将取值为1的记录纳入模型建立过程,其它值(例如:0)将用来做结论的验证或者预测分析,当然你可以反推,采用0作为取值记录 点击继续,返回,再点击“分类”按钮,进入如下页面
在所有的8个自变量中,只有“教育水平”这个变量能够作为“分类协变量” 因为其它变量都没有做分类,本例中,教育水平分为:初中,高中,大专,本科,研究生等等, 参考类别选择:“最后一个” 在对比中选择“指示符” 点击继续按钮,返回 再点击—“保存”按钮,进入界面:
在“预测值\"中选择”概率, 在“影响”中选择“Cook距离” 在“残差”中选择“学生化” 点击继续,返回,再点击“选项”按钮,进入如下界面:
分析结果如下:
1:在“案例处理汇总”中可以看出:选定的案例489个,未选定的案例361个,这个结果是根据设定的validate = 1得到的,在“因变量编码”中可以看出“违约”的两种结果“是”或者“否” 分别用值“1“和“0”代替, 在“分类变量编码”中教育水平分为5类, 如果选中“为完成高中,高中,大专,大学等,其中的任何一个,那么就取值为 1,未选中的为0,如果四个都未被选中,那么就是”研究生“ 频率分别代表了处在某个教育水平的个数,总和应该为 489个
1:在“分类表”中可以看出: 预测有360个是“否”(未违约) 有129个是“是”(违约) 2:在“方程中的变量”表中可以看出:最初是对“常数项”记性赋值,B为-1.026, 标准误差为:0.103
那么wald =( B/S.E)²=(-1.026/0.103)² = 99.2248, 跟表中的“100.029几乎接近,是因为我对数据进行的向下舍入的关系,所以数据会稍微偏小, B和Exp(B) 是对数关系,将B进行对数抓换后,可以得到:Exp(B) = e^-1.026 = 0.358, 其中自由度为1, sig为0.000,非常显著
1:从“不在方程中的变量”可以看出,最初模型,只有“常数项”被纳入了模型,其它变量都不在最初模型内
表中分别给出了,得分,df , Sig三个值, 而其中得分(Score)计算公式如下:
(公式中 (Xi- X¯) 少了一个平方)
下面来举例说明这个计算过程:(“年龄”自变量的得分为例)
从“分类表”中可以看出:有129人违约,违约记为“1” 则 违约总和为 129, 选定案例总和为489
那么: y¯ = 129/489 = 0.2638036809816
x¯ = 16951 / 489 = 34.664621676892 所以:∑(Xi-x¯)² = 30074.9979
y¯(1-y¯)=0.2638036809816 *(1-0.2638036809816 )=0.19421129888216 则:y¯(1-y¯)* ∑(Xi-x¯)² =0.19421129888216 * 30074.9979 = 5 840.9044060372 则:[∑Xi(yi - y¯)]^2 = 43570.8 所以:
=43570.8 / 5 840.9044060372 =
7.4595982010876 = 7.46 (四舍五入)
计算过程采用的是在 EXCEL 里面计算出来的,截图如下所示:
从“不在方程的变量中”可以看出,年龄的“得分”为7.46,刚好跟计算结果吻合!!答案得到验证~
1:从“块1” 中可以看出:采用的是:向前步进 的方法, 在“模型系数的综合检验”表中可以看出: 所有的SIG 几乎都为“0” 而且随着模型的逐渐步进,卡方值越来越大,说明模型越来越显著,在第4步后,终止,
根据设定的显著性值 和 自由度,可以算出 卡方临界值, 公式为:=CHIINV(显著性值,自由度) ,放入excel就可以得到结果
2:在“模型汇总“中可以看出:Cox&SnellR方 和 Nagelkerke R方 拟合效果都不太理想,最终理想模型也才:0.305 和 0.446,
最大似然平方的对数值 都比较大,明显是显著的
似然数对数计算公式为:
计算过程太费时间了,我就不举例说明 计算过程了 Cox&SnellR方的计算值 是根据:
1:先拟合不包含待检验因素的Logistic模型,求对数似然函数值INL0 (指只包含“常数项”的检验)
2:再拟合包含待检验因素的Logistic模型,求新的对数似然函数值InLB (包含自变量的检验)
再根据公式:
即可算出:Cox&SnellR方的值!
提示: 将Hosmer 和 Lemeshow 检验 和“随机性表” 结合一起来分析
1:从 Hosmer 和 Lemeshow 检验表中,可以看出:经过4次迭代后,最终的卡方统计量为:11.919, 而临界值为:CHINV(0.05,8) = 15.507
卡方统计量< 临界值,从SIG 角度来看: 0.155 > 0.05 , 说明模型能够很好的拟合整体,不存在显著的差异。 2:从Hosmer 和 Lemeshow 检验随即表中可以看出: ”观测值“和”期望值“几乎是接近的,不存在很大差异,说明模型拟合效果比较理想,印证了“Hosmer 和 Lemeshow 检验”中的结果
而“Hosmer 和 Lemeshow 检验”表中的“卡方”统计量,是通过“Hosmer 和 Lemeshow 检验随即表”中的数据得到的(即通过“观测值和”预测值“)得到的,计算公式如下所示: x²(卡方统计量) = ∑(观测值频率- 预测值频率)^2 / 预测值的频率 举例说明一下计算过程:以计算 \"步骤1的卡方统计量为例 \"
1:将“Hosmer 和 Lemeshow 检验随即表”中“步骤1 ” 的数据,复制到 excel 中,得到如下所示结果:
从“Hosmer 和 Lemeshow 检验”表中可以看出, 步骤1 的卡方统计量为:7.567, 在上图中,通过excel计算得到,结果为 7.566569 ~~7.567 (四舍五入),结果是一致的,答案得到验证!!
1:从“分类表”—“步骤1” 中可以看出: 选定的案例中,“是否曾今违约”总计:489个,其中 没有违约的 360个,并且对360个“没有违约”的客户进行了预测,有 340个预测成功,20个预测失败,预测成功率为:340 / 360 =94.4%
其中“违约”的有189个,也对189个“违约”的客户进行了预测,有95个预测失败, 34个预测成功,预测成功率:34 / 129 = 26.4% 总计预测成功率:(340 + 34)/ 489 = 76.5%
步骤1 的 总体预测成功率为:76.5%, 在步骤4终止后,总体预测成功率为:83.4,预测准确率逐渐提升 76.5%—79.8%—81.4%—83.4。 83.4的预测准确率,不能够算太高,只能够说还行。
从“如果移去项则建模”表中可以看出:“在-2对数似然中的更改” 中的数值是不是很眼熟,跟在“模型系数总和检验”表中“卡方统计量\"量的值是一样的 将“如果移去项则建模”和 “方程中的变量”两个表结合一起来看
1:在“方程中的变量”表中可以看出: 在步骤1中输入的变量为“负债率” ,在”如果移去项则建模“表中可以看出,当移去“负债率”这个变量时,引起了74.052的数值更改,此时模型中只剩下“常数项”-282.152为常数项的对数似然值
在步骤2中,当移去“工龄”这个自变量时,引起了44.543的数值变化(简称:似然比统计量),在步骤2中,移去“工龄”这个自变量后,还剩下“负债率”和“常量”,此时对数似然值 变成了:-245.126,此时我们可以通过公式算出“负债率”的似然比统计量:计算过程如下:
似然比统计量 = 2(-245.126+282.152)=74.052 答案得到验证
2:在“如果移去项则建模”表中可以看出:不管移去那一个自变量,“更改的显著性”都非常小,几乎都小于0.05,所以这些自变量系数跟模型显著相关,不能够剔去!! 3:根据\" 方程中的变量“这个表,我们可以得出 logistic 回归模型表达式:
= 1 / 1+ e^-(a+∑βI*Xi) 我们假设 Z
=
那么可以得到简洁表达式:
P(Y) = 1 / 1+e^ (-z)
将”方程中的变量“ —步骤4中的参数代入 模型表达式中,可以得到 logistic回归 模型 如下所示:
P(Y) = 1 / 1 + e ^ -(-0.766+0.594*信用卡负债率+0.081*负债率-0.069*地址-0.249*功龄)
从”不在方程中的变量“表中可以看出: 年龄,教育,收入,其它负债,都没有纳入模型中,其中:sig 值都大于 0.05,所以说明这些自变量跟模型显著不相关。
在”观察到的组和预测概率图”中可以看出:
1:the Cut Value is 0.5, 此处以 0.5 为切割值,预测概率大于0.5,表示客户“违约”的概率比较大,小于0.5表示客户“违约”概率比较小。
2:从上图中可以看出:预测分布的数值基本分布在“左右两端”在大于0.5的切割值中,大部分都是“1” 表示大部分都是“违约”客户,( 大约230个违约客户) 预测概率比较准,而在小于0.5的切割值中,大部分都是“0” 大部分都是“未违约”的客户,(大约500多个客户,未违约) 预测也很准
在运行结束后,会自动生成多个自变量,如下所示:
1:从上图中可以看出,已经对客户“是否违约”做出了预测,上面用颜色标记的部分-PRE_1 表示预测概率,
上面的预测概率,可以通过 前面的 Logistic 回归模型计算出来,计算过程不演示了 2:COOK_1 和 SRE_1 的值可以跟 预测概率(PRE_1) 进行画图,来看 COOK_1 和 SRE_1 对预测概率的影响程度,因为COOK值跟模型拟合度有一定的关联,发生奇异值,会影响分析结果。如果有太多奇异值,应该单独进行深入研究!
PSS 10.0高级教程十三:分类资料的Logistic回归分析
(2009-02-05 15:32:54) 转载
▼
所谓Logistic模型,或者说Logistic回归模型,就是人们想为两分类的应变量作一个回归方程出来,可概率的取值在0~1之间,回归方程的应变量取值可是在实数集中,直接做会出现0~1范围之外的不可能结果,因此就有人耍小聪明,将率做了一个Logit变换,这样取值区间就变成了整个实数集,作出来的结果就不会有问题了,从而该方法就被叫做了Logistic回归。 随着模型的发展,Logistic家族也变得人丁兴旺起来,除了最早的两分类Logistic外,还有配对Logistic模型,多分类Logistic模型、随机效应的Logistic模型等。由于SPSS的能力所限,对话框只能完成其中的两分类和多分类模型,下面我们就介绍一下最重要和最基本的两分类模型。
10.3.1 界面详解与实例
例11.1 某研究人员在探讨肾细胞癌转移的有关临床病理因素研究中,收集了一批行根治性肾切除术患者的肾癌标本资料,现从中抽取26例资料作为示例进行logistic回归分析(本例来自《卫生统计学》第四版第11章)。
• i:标本序号
• x1:确诊时患者的年龄(岁)
• x2:肾细胞癌血管内皮生长因子(VEGF),其阳性表述由低到高共3个等级 • x3:肾细胞癌组织内微血管数(MVC)
• x4:肾癌细胞核组织学分级,由低到高共4级 • x5:肾细胞癌分期,由低到高共4期
• y:肾细胞癌转移情况(有转移y=1; 无转移y=0)。
i x1 x2 x3 x4 x5 y 1 59 2 43.4 2 1 0 2 36 1 57.2 1 1 0 3 61 2 190 2 1 0 4 58 3 128 4 3 1 5 55 3 80 3 4 1 6 61 1 94.4 2 1 0 7 38 1 76 1 1 0 8 42 1 240 3 2 0 9 50 1 74 1 1 0 10 58 3 68.6 2 2 0 11 68 3 132.8 4 2 0 12 25 2 94.6 4 3 1 13 52 1 56 1 1 0 14 31 1 47.8 2 1 0 15 36 3 31.6 3 1 1
16 42 1 66.2 2 1 0 17 14 3 138.6 3 3 1 183****423019 35 1 40.2 2 1 0 20 70 3 177.2 4 3 1 21 65 2 51.6 4 4 1 22 45 2 124 2 4 0 23 68 3 127.2 3 3 1 24 31 2 124.8 2 3 0 25 58 1 128 4 3 0 26 60 3 149.8 4 3 1
在菜单上选择Analyze==》Regression==》Binary Logistic...,系统弹出Logistic回归对话框如下:
左侧是候选变量框,右上角是应变量框,选入二分类的应变量,下方的Covariates框是用于选入自变量的,只不过这里按国外的习惯被称为了协变量。两框中间的是BLOCK系列按扭,我在上一课已经讲过了,不再重复。中下部的>a*b>框是用于选入交互作用的,和其他的对话框不太相同(我也不知道为什么SPSS偏在这里做得不同),下方的Method列表框用于选择变量进入方法,有进入法、前进法和后退法三大类,三类之下又有细分。最下面的四个按钮比较重要,请大家听我慢慢道来:
• Select>>钮:用于限定一个筛选条件,只有满足该条件的记录才会被纳入分析,单击
它后对话框会展开让你填入相应的条件。不过我觉得该功能纯属多余,和专门的Select对话框的功能重复了。
•
Categorical钮:如果你的自变量是多分类的(如血型等),你必须
要将它用哑变量的方式来分析,那么就要用该按钮将该变量指定为分类变量,如果有必要,可用里面的选择按钮进行详细的定义,如以哪个取值作为基础水平,各水平间
比较的方法是什么等。当然,如果你弄不明白,不改也可以,默认的是以最大取值为基础水平,用Deviance做比较。
o Save钮:将中间结果存储起来供以后分析,共有预测值、影响强度因子和残差三大
类。
o Options钮:这一部分非常重要,但又常常被忽视,在这里我们可以对模型作精确定
义,还可以选择模型预测情况的描述方式,如Statistics and Plots中的Classification plots就是非常重要的模型预测工具,Correlations of estimates则是重要的模型诊断工具,Iteration history可以看到迭代的具体情况,从而得知你的模型是否在迭代时存在病态,下方则可以确定进入和排除的概率标准,这在逐步回归中是非常有用的。
好,根据我们的目的,应变量为Y,而X1~X5为自变量,具体的分析操作如下: 1. Analyze==》Regression==》Binary Logistic... 2. Dependent框:选入Y 3. Covariates框:选入x1~x5 4. OK钮:单击
10.3.2 结果解释 Logistic Regression
上表为记录处理情况汇总,即有多少例记录被纳入了下面的分析,可见此处因不存在缺失值,26条记录均纳入了分析。
上表为应变量分类情况列表,没什么好解释的。
Block 0: Beginning Block
此处已经开始了拟合,Block 0拟合的是只有常数的无效模型,上表为分类预测表,可见在17例观察值为0的记录中,共有17例被预测为0,9例1也都被预测为0,总预测准确率为65.4%,这是不纳入任何解释变量时的预测准确率,相当于比较基线。
上表为Block 0时的变量系数,可见常数的系数值为-0.636。
上表为在Block 0处尚未纳入分析方程的侯选变量,所作的检验表示如果分别将他们纳入方程,则方程的改变是否会有显著意义(根据所用统计量的不同,可能是拟合优度,Deviance值等)。可见如果将X2系列的哑变量纳入方程,则方程的改变是有显著意义的,X4和X5也是如此,由于Stepwise方法是一个一个的进入变量,下一步将会先纳入P值最小的变量X2,然后再重新计算该表,再做选择。
Block 1: Method = Forward Stepwise (Conditional)
此处开始了Block 1的拟合,根据我们的设定,采用的方法为Forward(我们只设定了一个Block,所以后面不会再有Block 2了)。上表为全局检验,对每一步都作了Step、Block和Model的检验,可见6个检验都是有意义的。
此处为模型概况汇总,可见从STEP1到STEP2,DEVINCE从18降到11,两种决定系数也都有上升。
此处为每一步的预测情况汇总,可见准确率由Block 0的65%上升到了84%,最后达到96%,效果不错,最终只出现了一例错判。
上表为方程中变量检验情况列表,分别给出了Step 1和Step 2的拟合情况。注意X4的P值略大于0.05,但仍然是可以接受的,因为这里用到的是排除标准(默认为0.1),该变量可以留在方程中。以Step 2中的X2为例,可见其系数为2.413,OR值为11。
上表为假设将这些变量单独移出方程,则方程的改变有无统计学意义,可见都是有统计学意义的,因此他们应当保留在方程中。
最后这个表格说明的是在每一步中,尚未进入方程的变量如果再进入现有方程,则方程的改变有无统计学意义。可见在Step 1时,X4还应该引入,而在Step 2时,其它变量是否引入都无关了。
10.3.3 模型的进一步优化与简单诊断
10.3.3.1 模型的进一步优化
前面我们将X1~X5直接引入了方程,实际上,其中X2、X4、X5这三个自变量为多分类变量,我们并无证据认为它们之间个各等级的OR值是成倍上升的,严格来说,这里应当采用
哑变量来分析,即需要用Categorical钮将他们定义为分类变量。但本次分析不能这样做,原因是这里总例数只有26例,如果引入哑变量模型会使得每个等级的记录数非常少,从而分析结果将极为奇怪,无法正常解释,但为了说明哑变量模型的用法,下面我将演示它是如何做的,毕竟不是每个例子都只有26例。
默认情况下定义分类变量非常容易,做到如上图所示就可以了,此时分析结果中的改变如下:
上表为自变量中多分类变量的哑变量取值情况代码表。左侧为原变量名及取值,右侧为相应的哑变量名及编码情况:以X5为例,表中可见X5=4时,即取值最高的情况被作为了基线水平,这是多分类变量生成哑变量的默认情况。而X5(1)代表的是X5=1的情况(X5为1时取1,否则取0),X5(2)代表的是X5=2的情况,依此类推。同时注意到许多等级值有几个记录,显然后面的分析结果不会太好。
相应的,分析结果中也以哑变量在进行分析,如下所示:
上表出现了非常有趣的现象:所有的检验P值均远远大于0.05,但是所有的变量均没有被移出方程,这是怎么回事?再看看下面的这个表格吧。
这个表格为方程的似然值改变情况的检验,可见在最后Step 2生成的方程中,无论移出X2还是X4都会引起方程的显著性改变。也就是说,似然比检验的结果和上面的Walds检验结果冲突,以谁为准?此处应以似然比检验为准,因为它是全局性的检验,且Walds检验本身就不太准,这一点大家记住就行了,实在要弄明白请去查阅相关文献。
请注意:上面的哑变量均是以最高水平为基线水平,这不符合我们的目的,我们希望将最低水平作为基线水平。比如以肾细胞癌第一期为基线水平,需要这样做只要在Categoriacl框中选中相应的变量,在Reference Category处选择First,再单击Change即可,此时变量旁的标示会做出相应的改变如下:
分析结果中也会做出相应的改变,此处略。
10.3.3.2 模型的简单诊断
SPSS本身提供了几种用于模型诊断的工具,基本上都集中在Options对话框中,除了大家熟悉的残差分析外,这里这种介绍三种简单而有非常有用的工具:迭代记录、相关矩阵和分类图。
上表为Block 1的迭代记录,可见无论是似然值,还是三个系数值,均是从迭代开始就向着一个方向发展,最终达到收敛,这说明整个迭代过程是健康的,问题不大;如果中途出现波折,尤其是当引入新变量后变化方向改变了,则提示要好好研究。
上表为方程中变量的相关矩阵,可见X2和常数相关性较强,当引入X4后仍然如此,提示要关注这一现象,以防因自变量间的共线性导致方程系数不稳(此时迭代记录多半也会有波动)。当然,由于本例只有26条记录,这一问题是没有办法深入研究的。
上图是Step 1结束时,即只引入X2时的预测图,0和1代表实际取值,当预测的概率值大于0.5时,则预测结果为1,反之为0,由上图可见,该模型对0的预测是比较好的,多数的概率都在0附近,但对1的预测不准,即使正确的,计算出的概率也在0.8左右,并且有好几个都判错了。
上图为Step 2结束后模型的预测状况,可见此时预测结果有了较大的改善,概率精度提高了许多,只有一例0被错判为了1,并且从分布上看,这一例可能是极端情况,再引入其它变量也不见的能将预测效果改变多少
因篇幅问题不能全部显示,请点此查看更多更全内容