数据分析真不是一门省油的灯,搞的人晕头转向,而且涉及到很多复杂的计算,还是书读少了,小学毕业的我,真是死了不少脑细胞,

学习二元Logistic回归有一段时间了,今天跟大家分享一下学习心得,希望多指教!

二元Logistic,从字面上其实就可以理解大概是什么意思,Logistic中文意思为“逻辑”但是这里,并不是逻辑的意思,而是通过logit变换来命名的,二元一般指“两种可能性”就好比逻辑中的“是”或者“否”一样,

Logistic 回归模型的假设检验——常用的检验方法有似然比检验(likelihood ratio test) 和 Wald检验)
似然比检验的具体步骤如下:

1:先拟合不包含待检验因素的Logistic模型,求对数似然函数值INL0

2:再拟合包含待检验因素的Logistic模型,求新的对数似然函数值InL1

3:最后比较两个对数似然函数值的差异,若两个模型分别包含l个自变量和P个自变量,记似然比统计量G的计算公式为 G=2(InLP - InLl). 在零假设成立的条件下,当样本含量n较大时,G统计量近似服从自由度为 V = P-l 的 x平方分布,如果只是对一个回归系数(或一个自变量)进行检验,则 v=1.

wald 检验,用u检验或者X平方检验,推断各参数βj是否为0,其中u= bj / Sbj,  X的平方=(bj / Sbj),  Sbj 为回归系数的标准误

这里的“二元”主要针对“因变量”所以跟“曲线估计”里面的Logistic曲线模型不一样,二元logistic回归是指因变量为二分类变量是的回归分析,对于这种回归模型,目标概率的取值会在(0-1),但是回归方程的因变量取值却落在实数集当中,这个是不能够接受的,所以,可以先将目标概率做Logit变换,这样它的取值区间变成了整个实数集,再做回归分析就不会有问题了,采用这种处理方法的回归分析,就是Logistic回归

设因变量为y, 其中“1” 代表事件发生, “0”代表事件未发生,影响y的 n个自变量分别为 x1,  x2 ,x3 xn等等

记事件发生的条件概率为 P

那么P=   事件未发生的概理为 1-P

事件发生跟”未发生的概率比 为( p / 1-p ) 事件发生比,记住Odds

将Odds做对数转换,即可得到Logistic回归模型的线性模型:

还是以教程“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值跟模型拟合度有一定的关联,发生奇异值,会影响分析结果。如果有太多奇异值,应该单独进行深入研究!

SPSS—回归—二元Logistic回归案例分析的更多相关文章

  1. Logistic回归分析之二元Logistic回归

    在研究X对于Y的影响时,如果Y为定量数据,那么使用多元线性回归分析(SPSSAU通用方法里面的线性回归):如果Y为定类数据,那么使用Logistic回归分析. 结合实际情况,可以将Logistic回归 ...

  2. 从Softmax回归到Logistic回归

    Softmax回归是Logistic回归在多分类问题上的推广,是有监督的. 回归的假设函数(hypothesis function)为,我们将训练模型参数,使其能够最小化代价函数: 在Softmax回 ...

  3. Softmax回归 softMax回归与logistic回归的关系

    简介 在本节中,我们介绍Softmax回归模型,该模型是logistic回归模型在多分类问题上的推广,在多分类问题中,类标签  可以取两个以上的值. Softmax回归模型对于诸如MNIST手写数字分 ...

  4. SPSS数据分析—配对Logistic回归模型

    Lofistic回归模型也可以用于配对资料,但是其分析方法和操作方法均与之前介绍的不同,具体表现 在以下几个方面1.每个配对组共有同一个回归参数,也就是说协变量在不同配对组中的作用相同2.常数项随着配 ...

  5. 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法

    课程大纲 欠拟合的概念(非正式):数据中某些非常明显的模式没有成功的被拟合出来.如图所示,更适合这组数据的应该是而不是一条直线. 过拟合的概念(非正式):算法拟合出的结果仅仅反映了所给的特定数据的特质 ...

  6. 机器学习之逻辑回归(logistic回归)

    前言            以下内容是个人学习之后的感悟,转载请注明出处~ 逻辑回归 一.为什么使用logistic回归   一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大 ...

  7. SPSS数据分析—二分类Logistic回归模型

    对于分类变量,我们知道通常使用卡方检验,但卡方检验仅能分析因素的作用,无法继续分析其作用大小和方向,并且当因素水平过多时,单元格被划分的越来越细,频数有可能为0,导致结果不准确,最重要的是卡方检验不能 ...

  8. 第七篇:Logistic回归分类算法原理分析与代码实现

    前言 本文将介绍机器学习分类算法中的Logistic回归分类算法并给出伪代码,Python代码实现. (说明:从本文开始,将接触到最优化算法相关的学习.旨在将这些最优化的算法用于训练出一个非线性的函数 ...

  9. logistic回归介绍以及原理分析

    1.什么是logistic回归? logistic回归虽然说是回归,但确是为了解决分类问题,是二分类任务的首选方法,简单来说,输出结果不是0就是1 举个简单的例子: 癌症检测:这种算法输入病理图片并且 ...

随机推荐

  1. kafka 修改partition,删除topic,查询offset

    修改分区个数: ./kafka-topics./kafka/<id_of_kafka> --alter --partitions 10 --topic test_topic 上面命令将te ...

  2. Delphi 操作键盘按下和释放操作

    Unit Unit1; Interface Uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ...

  3. Springboot IDEA eclipse 打包

    在开发springboot项目中,我们会进行打包发布项目,springboot推荐以jar包方式发布,相对之下 jar运行的效率比起war项目快很多. 打包切记: 1.查看项目里面有没有其他的main ...

  4. mac安装protobuf2.4.1时报错./include/gtest/internal/gtest-port.h:428:10: fatal error: 'tr1/tuple' file not found和google/protobuf/message.cc:175:16: error: implicit instantiation of undefined template

    通过网上下载的protobuf2.4.1的压缩文件,然后进行安装,./configure和make时遇到了两个问题. 正常的安装步骤如下: ./configure make  make check m ...

  5. IIS中的MIME类型设置

    https://www.cnblogs.com/David-Young/p/5323949.html

  6. poj1661 (DP)

    题目链接:http://poj.org/problem?id=1661 思路: 把初始位置看成左,右端点均为x0,即长度为0,高度为y0的一个平台,按照平台高度从低到高排序.用dp[i][0],dp[ ...

  7. 64位tomcat不能配32位的JDK使用

    警告: The APR based Apache Tomcat Native library failed to load. The error reported was [D:\apache-tom ...

  8. SVN常见问题I

    TortoiseSVN ->Settings 把权限给清空,不让用户A的权限再保留在里面 右键->SVN Checkout 之后需要在A账户和B账户之间来回切换

  9. Codeforces Round #534 (Div. 2)

    B. Game with string 题意: 给出一个字符串s只包括小写字母.当轮到一个玩家的时候,他可以选择两个连续且相等的字母并且删除它.当一个玩家没得删的时候他就输了. 题解: 乍一看有点懵, ...

  10. 修改UITextView光标高度

    自定义UITextView文字字体时,经常出现光标与字体的高度不匹配,可以通过下面代码修改默认的光标高度, //创建子类重写UITextView方法 - (CGRect)caretRectForPos ...