1 功能描述
对于分类问题,除了可以使用logistic模型外,还可以使用判别分析模型。判别分析属于经典的统计分类方法,能够在已有划分类别的基础上,根据确定的最优准则判断新的个体应该归属于哪一类别。
2 先验概率相等时的判别分析
我们以bankloan.sav的数据为例进行演示,根据信用卡用户的行为来判断其是否会违约。
双击打开bankloan.sav数据文件,其中违约变量是二分类因变量,1表示违约,0表示没有违约。
在数据窗口中,依次点击“分析/分类/判别”。
在弹出的“判别分析”窗口,将违约变量移到右侧的分组变量框(注意还需要定义范围);
将年龄、教育、工龄、地址、收入、负债率、信用卡负债、其他负债等变量移到右侧的自变量框,并选择下方的使用步进法(这些变量可能存在共线性,所以使用步进法,使对预测违约有显著作用的变量进入模型)。
在“判别分析”窗口,点击定义范围按钮;
在弹出的“判别分析:定义范围”窗口,最小值设为0,最大值设为1。点击继续返回。
在“判别分析”窗口,点击统计按钮;
在弹出的“判别分析:统计”窗口,勾选描述性区块下的单变量ANOVA和Boxs M选项;同时勾选函数系数区块下的fishers和未标准化选项。其他保持默认,点击继续返回。
在“判别分析”窗口,点击分类按钮;
在弹出的“判别分析:分类”窗口,选择先验概率区域下的所有组相等选项(该选项表示bayes判别时不同类别的先验概率相等,选择根据组大小计算则不同类别的先验概率不等)。
勾选输出区块下的摘要表。其他保持默认,点击继续返回。
在“判别分析”窗口,点击保存按钮;
在弹出的“判别分析:保存”窗口,勾选预测组成员、判别分数、组成员概率三个选项。其他保持默认,点击继续返回。
在“判别分析”窗口,设置好参数后,点击确定进行运算。
运算完成后,输出窗口将给出相应的结果。
逐步统计信息表中显示,只有负债率、工龄、信用卡负债、地址四个变量进入判别分析模型。
规范判别式函数的摘要部分。特征值表中特征值只有一个,为0.395,表明只有一个判别函数。规范相关性为0.532,该值越大表明判别函数的效果越好。
Wilks Lambda表中,显著性小于0.05,表明判别函数整体上具有统计学意义。
标准规范判别式函数系数表中,数值反应了各变量对判别函数的重要性。绝对值越大,表明该变量越重要!
2.1 Fisher判别
规范判别式函数系数表给出的是Fisher判别函数的系数,根据该表可以写出Fisher判别函数,即:
Fisher函数=0.058-0.12*工龄-0.037*地址+0.075*负债率+0.312*信用卡负债
组质心中的函数给出了违约(是否)两个类别的中心,分别为-0.373和1.054。将每个样本变量数据带入Fisher函数计算Fisher得分,并分别计算与两个类别中心差的绝对值。哪个绝对值小,就将样本划分到哪个类别。
2.2 bayes判别
组的先验概率表中给出了bayes判别中违约(是否)两个类别的先验概率,这里均是0.5
分类函数系数表则给出了两个bayes判别函数的系数,根据该表可以写出Fisher判别函数,即:
bayes1(否)=-3.446+0.267*工龄+0.153*地址+0.277*负债率-0.643*信用卡负债
bayes2(是)=-3.85+0.096*工龄+0.1*地址+0.384*负债率-0.197*信用卡负债
将每个样本变量数据带入bayes函数计算bayes函数值,哪个值大,就将样本划分到哪个类别。
另外,也可以根据计算出的bayes函数值进一步计算出每个样本的违约概率,进而判别样本的类别。
最后,分类结果表给出了bayes判别分类的精度。
切换到数据视图窗口,SPSS自动计算了违约的预测值,判别函数得分和两个类别的违约概率。
其中Dis_1是bayes判别对违约的预测(SPSS只给出bayes判别的预测值,不会给出Fisher判别的预测值。但是当我们选择相等的先验概率时,bayes判别的预测值和Fisher判别的预测值是相等的)。
Dis1_1是Fisher判别函数得分,通过计算该变量与质心的距离可以对违约进行预测(后面将演示)!
Dis1_2和Dis2_2是bayes判别计算出的违约与否的概率,哪个概率大就把样本划分到哪个类别。
2.3 手动计算Fisher判别函数得分及预测分类
在数据视图窗口,依次点击“转换/计算变量”。
在弹出的“计算变量”窗口,目标变量输入:fisher
数字表达式输入:0.058-0.12*工龄-0.037*地址+0.075*负债率+0.312*信用卡负债
点击确定进行计算。
注意:该表达式根据输出窗口中的规范判别式函数系数表得出。
切换到数据视图窗口,可以发现我们手动计算的fisher变量和SPSS自动计算的Dis1_1变量近似相等!
(1)计算与未违约的距离
在数据视图窗口,依次点击“转换/计算变量”;
在弹出的“计算变量”窗口,目标变量输入:fisher_ds1
数字表达式输入:abs(fisher-(-0.373))
点击确定进行计算。
(2)计算与违约的距离
在数据视图窗口,依次点击“转换/计算变量”;
在弹出的“计算变量”窗口,目标变量输入:fisher_ds2
数字表达式输入:abs(fisher-1.054)
点击确定进行计算。
切换到数据视图窗口,可以发现生成了fisher_ds1和fisher_ds2两个变量,样本中哪个值小就划分到哪个类别(如第一个样本,与不违约的距离是2.19,与违约的距离是0.76,所以该样本划分为违约)。通过与SPSS自动计算的bayes判别的预测值对比,可以发现两者一致。
2.4 手动计算Bayes判别函数值及预测分类
(1)未违约的bayes判别函数值
在数据视图窗口,依次点击“转换/计算变量”;
在弹出的“计算变量”窗口,目标变量输入:bayes_ds1
数字表达式输入:-3.446+0.267*工龄+0.153*地址+0.277*负债率-0.643*信用卡负债
点击确定进行计算。
注意:该表达式根据输出窗口中的分类函数系数表得出。
(2)违约的bayes判别函数值
在数据视图窗口,依次点击“转换/计算变量”;
在弹出的“计算变量”窗口,目标变量输入:bayes_ds2
数字表达式输入:-3.85+0.096*工龄+0.1*地址+0.384*负债率-0.197*信用卡负债
点击确定进行计算。
注意:该表达式根据输出窗口中的分类函数系数表得出。
切换到数据视图窗口,可以发现生成了bayes_ds1和bayes_ds2两个变量,哪个变量值大就将样本划分到哪个类别(例如第一个样本,未违约bayes函数值为-1.80,违约bayes函数值为0.32,0.32大于-1.80,故将该样本划分为违约)。
接着我们将根据bayes_ds1和bayes_ds2和计算得到违约概率,即SPSS自动计算的dis1_2和dis2_2。
在数据视图窗口,依次点击“转换/计算变量”;
在弹出的“计算变量”窗口,目标变量输入:bayes_probit1
数字表达式输入:exp(bayes_ds1-max(bayes_ds1,bayes_ds2))/(exp(bayes_ds1-max(bayes_ds1,bayes_ds2))+exp(bayes_ds2-max(bayes_ds1,bayes_ds2)))
点击确定进行计算。
注意:表达式根据bayes判别函数值与beyes判别概率的理论关系得出。
在数据视图窗口,依次点击“转换/计算变量”;
在弹出的“计算变量”窗口,目标变量输入:bayes_probit2
数字表达式输入:exp(bayes_ds2-max(bayes_ds1,bayes_ds2))/(exp(bayes_ds1-max(bayes_ds1,bayes_ds2))+exp(bayes_ds2-max(bayes_ds1,bayes_ds2)))
点击确定进行计算。
注意:表达式根据bayes判别函数值与beyes判别概率的理论关系得出。
切换到数据视图窗口,可以发现生成的bayes_probit1、bayes_probit2与SPSS自动计算的dis1_2、dis2_2近似相等。我们也可以根据此概率来对样本进行分类。
3 先验概率不相等时的判别分析
在数据窗口中,依次点击“分析/分类/判别”。
在弹出的“判别分析”窗口,右侧自变量框仅保留工龄、地址、负债率、信用卡负债四个变量(前面分析已知这四个变量是判别分析的主要变量,其他变量不重要,所以不再加入)。
选择自变量框下的一起输入自变量(已经确定好四个变量,所以不需要再使用步进法)。
在“判别分析”窗口,点击分类按钮;
在弹出的“判别分析:分类”窗口,选择先验概率区块下的“根据组大小计算”选项,其他保持之前的设置,点击继续返回。
在“判别分析”窗口,修改好参数设置后,点击确定进行运算。
运算完成后,输出窗口的“组的先验概率”表中,否的概率为0.739,是的概率为0.261,与之前均为0.5不同。
同时,分类函数系数表中的数值也发生了改变。
切换到数据视图窗口,可以发现当设置先验概率不相等时计算了样本分类预测变量Dis_2,其余先验概率相等时计算的样本分类预测变量Dis_1不同。
Dis1_3为Fisher判别的判别函数得分,其与先验概率相等时的结果一致。
因而先验概率是否相等只会影响bayes判别的结果,不会影响Fisher判别的结果。