1 数据说明
我们以bankloan.sav的数据为例进行演示,根据信用卡用户的行为来判断其是否会违约,如下图所示,其中1代表违约,0代表未违约。
2 判别分析
2.1 加载数据
> library(haven)
> bankData=read_sav("D:/Desktop/bankloan.sav")
2.2 先验概率相等的贝叶斯判别(结果等价于Fisher判别)
> fit_lda1=lda(违约~年龄+教育+工龄+地址+收入+负债率+信用卡负债+其他负债,data=bankData,prior=c(1,1)/2)
> fit_lda1
Call:
lda(违约 ~ 年龄 + 教育 + 工龄 + 地址 + 收入 + 负债率 + 信用卡负债 +
其他负债, data = bankData, prior = c(1, 1)/2)
Prior probabilities of groups:
0 1
0.5 0.5
Group means:
年龄 教育 工龄 地址 收入 负债率 信用卡负债 其他负债
0 35.51451 1.659574 9.508704 8.945841 47.15474 8.679304 1.245493 2.773409
1 33.01093 1.901639 5.224044 6.393443 41.21311 14.727869 2.423865 3.862807
Coefficients of linear discriminants:
LD1
年龄 0.015331213
教育 0.078357754
工龄 -0.124220534
地址 -0.046452296
收入 0.004865162
负债率 0.096027989
信用卡负债 0.276338074
其他负债 -0.057146598
2.3 先验概率不相等的贝叶斯判别
> fit_lda2=lda(违约~年龄+教育+工龄+地址+收入+负债率+信用卡负债+其他负债,data=bankData)
> fit_lda2
Call:
lda(违约 ~ 年龄 + 教育 + 工龄 + 地址 + 收入 + 负债率 + 信用卡负债 +
其他负债, data = bankData)
Prior probabilities of groups:
0 1
0.7385714 0.2614286
Group means:
年龄 教育 工龄 地址 收入 负债率 信用卡负债 其他负债
0 35.51451 1.659574 9.508704 8.945841 47.15474 8.679304 1.245493 2.773409
1 33.01093 1.901639 5.224044 6.393443 41.21311 14.727869 2.423865 3.862807
Coefficients of linear discriminants:
LD1
年龄 0.015331213
教育 0.078357754
工龄 -0.124220534
地址 -0.046452296
收入 0.004865162
负债率 0.096027989
信用卡负债 0.276338074
其他负债 -0.057146598
2.4 预测
> predict(fit_lda1,bankData[3,])
$class
[1] 0
Levels: 0 1
$posterior
0 1
1 0.9448197 0.05518029
$x
LD1
1 -1.963369
说明:以bankloan第3行作为样本,采用fit_lad1模型进行预测,违约为0的概率为0.9448197,违约为1的概率为0.05518029,因而预测该样本不会违约。
> predict(fit_lda2,bankData[3,])
$class
[1] 0
Levels: 0 1
$posterior
0 1
1 0.9797461 0.02025392
$x
LD1
1 -1.61823
说明:以bankloan第3行作为样本,采用fit_lad1模型进行预测,违约为0的概率为0.9797461,违约为1的概率为0.02025392,因而预测该样本不会违约。