python实现逐步回归分析_Python实现逐步回归(stepwise regression)

逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优的。

依据上述思想,可利用逐步回归筛选并剔除引起多重共线性的变量,其具体步骤如下:先用被解释变量对每一个所考虑的解释变量做简单回归,然后以对被解释变量贡献最大的解释变量所对应的回归方程为基础,再逐步引入其余解释变量。经过逐步回归,使得最后保留在模型中的解释变量既是重要的,又没有严重多重共线性。

至今,我们已经有更好算法跳过共线性问题,没有必要在商业脚本里加入逐步回归代码。实际中变量相互关联,因此通过逐步回归思路删除变量解决共线性问题并非最佳思路。更好算法可参考课程《python风控建模实战lendingClub》:http://dwz.date/b626

本文作为学术探讨,介绍逐步回归原理和python代码。当基于最小二乘法训练线性回归模型而发生过拟合现象时,最小二乘法没有办法阻止学习过程。前向逐步回归的引入则可以控制学习过程中出现的过拟合,它是最小二乘法的一种改进或者说调整,其基本思想是由少到多地向模型中引入变量,每次增加一个,直到没有可以引入的变量为止。最后通过比较在预留样本上计算出的错误进行模型的选择。

实现代码如下:

wine_data的表结构如下图所示:

wine_data中部分属性的统计信息如下:

上述代码的输出结果为:

上述代码绘制的图像如下:

RMSE与属性数量的关系图像:

错误直方图:

实际值与预测值的散点图:

逐步回归练习和代码

python信用评分卡建模(附代码):

https://ke.qq.com/course/3063615?tuin=dcbf0ba

逐步回归的基本思想是将变量逐个引入模型,每引入一个解释变量后都要进行F检验,并对已经选入的解释变量逐个进行t检验,当原来引入的解释变量由于后面解释变量的引入变得不再显著时,则将其删除。以确保每次引入新的变量之前回归方程中只包含显著性变量。这是一个反复的过程,直到既没有显著的解释变量选入回归方程,也没有不显著的解释变量从回归方程中剔除为止。以保证最后所得到的解释变量集是最优的。

本例的逐步回归则有所变化,没有对已经引入的变量进行t检验,只判断变量是否引入和变量是否剔除,“双重检验”逐步回归,简称逐步回归。例子的链接:(原链接已经失效),4项自变量,1项因变量。下文不再进行数学推理,进对计算过程进行说明,对数学理论不明白的可以参考《现代中长期水文预报方法及其应用》汤成友,官学文,张世明著;论文《逐步回归模型在大坝预测中的应用》王晓蕾等;

逐步回归的计算步骤:计算第零步增广矩阵。第零步增广矩阵是由预测因子和预测对象两两之间的相关系数构成的。

引进因子。在增广矩阵的基础上,计算每个因子的方差贡献,挑选出没有进入方程的因子中方差贡献最大者对应的因子,计算该因子的方差比,查F分布表确定该因子是否引入方程。

剔除因子。计算此时方程中已经引入的因子的方差贡献,挑选出方差贡献最小的因子,计算该因子的方差比,查F分布表确定该因子是否从方程中剔除。

矩阵变换。将第零步矩阵按照引入方程的因子序号进行矩阵变换,变换后的矩阵再次进行引进因子和剔除因子的步骤,直到无因子可以引进,也无因子可以剔除为止,终止逐步回归分析计算。

a.以下代码实现了数据的读取,相关系数的计算子程序和生成第零步增广矩阵的子程序。

注意:pandas库读取csv的数据结构为DataFrame结构,此处转化为numpy中的(n-dimension array,ndarray)数组进行计算

b.第二部分主要是计算公差贡献和方差比。

c.第三部分调用定义的函数计算方差贡献值

计算结果:

此处没有编写判断方差贡献最大的子程序,因为在其他计算中我还需要变量的具体物理含义所以不能单纯的由计算决定对变量的取舍,此处看出第四个变量的方查贡献最大

计算第四个预测因子的方差比(粘贴在了代码中),并查F分布表3.280进行比对,22.8>3.28,引入第四个预报因子。(前三次不进行剔除椅子的计算)

d.第四部分进行矩阵的变换。

e.进行完矩阵变换就循环上面步骤进行因子的引入和剔除

再次计算各因子的方差贡献

前三个未引入方程的方差因子进行排序,得到第一个因子的方差贡献最大,计算第一个预报因子的F检验值,大于临界值引入第一个预报因子进入方程。

进行矩阵变换,计算方差贡献

可以看出还没有引入方程的因子2和3,方差贡献较大的是因子2,计算因子2的f检验值5.026>3.28,故引入预报因子2

继续进行矩阵转换,计算方差贡献

这一步需要考虑剔除因子了,有方差贡献可以知道,已引入方程的因子中方差贡献最小的是因子4,分别计算因子3的引进f检验值0.0183

和因子4的剔除f检验值1.863,均小于3.28(查F分布表)因子3不能引入,因子4需要剔除,此时方程中引入的因子数为2

在此对矩阵进行变换,计算方差贡献

,已引入因子(因子1和2)方差贡献最小的是因子1,为引入因子方差贡献最大的是因子4,计算这两者的引进f检验值和剔除f检验值

不能剔除也不能引进变量,此时停止逐步回归的计算。引进方程的因子为预报因子1和预报因子2,借助上一篇博客写的多元回归。对进入方程的预报因子和预报对象进行多元回归。输出多元回归的预测结果,一次为常数项,第一个因子的预测系数,第二个因子的预测系数。

参考:

《Python机器学习——预测分析核心算法》Michael Bowles著

https://baike.baidu.com/item/%E9%80%90%E6%AD%A5%E5%9B%9E%E5%BD%92/585832?fr=aladdin

https://blog.csdn.net/qq_41080850/article/details/86506408

https://blog.csdn.net/qq_41080850/article/details/86764534

https://blog.csdn.net/Will_Zhan/article/details/83311049

如果想了解更多相关知识,欢迎同学报名学习python金融风控评分卡模型和数据分析:http://dwz.date/b9vv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二维数组最大子数组和

一.实验题目 求一个二维数组中和最大的子数组。 二.实验思路 基于我们第一次合作时求的一位数组最大子数组,加上一层循环来遍历二维数组中的所有子矩阵的情况。 第一步:先利用上次的方法求每一行的情况,将每行结果存入…

木炭怎么获得_木炭机一体化流程中制做木炭是怎么完成的

关注我们获得更多精彩内容木炭机一体化流程中制做木炭是怎么完成的,木炭机生产线中炭化炉是核心设备。炭化炉炭化过程决定了木炭质量和效果。木炭机生产线中炭化过程需要经历三个不同温度阶段。三个不同温度阶段对薪棒的炭化作用不同。炭化好坏标志着木炭机制炭效果…

HDU 4540

简单得不能再简单的DP了。 #include<iostream> const int inf1<<30; using namespace std; int map[22][22]; int dp[22][22];//表示前i个时刻在第j个位置时的最小消耗能量 int n,m;int main(){while(~scanf("%d%d",&n,&m)){for(int i1;i<n;i…

esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机

arduino开发ESP8266学习笔记四—–舵机使用时发现会有ESP8266掉电的情况&#xff0c;应该是板上的稳压芯片的限流导致的&#xff0c;观测波形&#xff0c;发现当舵机运转时&#xff0c;电源线3.3V不再是稳定的3.3V&#xff0c;大概是在3.0V到3.3V范围内高频振动&#xff0c;这应…

【转载】网易将军令工作原理

最近开始玩梦幻手游&#xff0c;为了领以前端游的返利必须输入将军令&#xff0c;那个已经一年没用了&#xff0c;输入了几次都提示错误&#xff08;后来证实是系统繁忙而已&#xff09;&#xff0c;我以为是将军令时间不对了&#xff0c;所以用了下官网的修复功能。也对将军令…

返回数据_多层数据返回匹配值

↑↑↑点击上方图片&#xff0c;了解详情Access Switch函数示例&#xff0c;分享源码。一、问题描述&#xff1a;想实现如下功能&#xff0c;发现用iff嵌套方式太复杂&#xff0c;有没有更简单的方法&#xff1f; A1≤750 返回5.0 750&#xff1c;A1≤865 返回5.…

通知中心 NSNotificationCenter 的简单使用方法

NSNotificationCenter(通知中心)【注意】需再dealloc中移除观察者获取通知中心单例对象NSNotificationCenter *center[NSNotificationCenter defaultCenter]; 常用方法:1.注册观察者- (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(…

solaris mysql_配置Solaris下自带的MYSQL

Solaris自带了mysql服务器&#xff0c;省事不少。用的时候只有小小的配置下就可以搞定。1.用ROOT用户登陆系统&#xff0c;在终端输入/usr/sfw/bin/mysql_install_db2.建立mysql user和 group&#xff1a;# groupadd mysql# useradd -g mysql mysql# chgrp -R mysql /var/mysql…

mysql 1786_mysql错误处理之ERROR 1786 (HY000)

ERROR 1786 (HY000)【环境描述】msyql5.6.14【报错信息】执行create table ... select的时候遇到报错&#xff1a;复制代码 代码如下:db1 [test] [23:01:58]> create tablelgmnr_bak select * from lgmnr;ERROR 1786 (HY000): CREATE TABLE ... SELECTis forbidden when GLO…

Java入门第二季

面向对象 对象&#xff1a;世间万物皆对象&#xff0c;所谓对象&#xff0c;并不是一个抽象的概念&#xff0c;泛指我们生活中的各式各样的事物都称之为对象。 类和对象的关系 类是抽象的概念&#xff0c;是对象的模板 对象是具体的事物&#xff0c;是类的具体实例 面向对象…

HDU1114 Piggy-Bank 完全背包

题意&#xff1a; 给出一个存钱罐的空罐时的质量和装了钱之后的质量&#xff0c;再给出一些硬币的质量和相应的价值&#xff0c;问存钱罐里的钱最少可能为多少。 这道题就是完全背包的问题&#xff0c;注意初始化。 完全背包与01背包不同的是第二次遍历的时候要顺序而已。 初始…

mysql备机写binlp_MySQL主从搭建,实现读写分离(基于docker)

一 主从配置原理mysql主从配置的流程大体如图&#xff1a;1)master会将变动记录到二进制日志里面&#xff1b;2)master有一个I/O线程将二进制日志发送到slave;3) slave有一个I/O线程把master发送的二进制写入到relay日志里面&#xff1b;4)slave有一个SQL线程&#xff0c;按照r…

前后台的验证

为什么前台后台都需要验证&#xff1f;客户端的js&#xff0c;可以屏蔽&#xff0c;方法有多中&#xff08;浏览器里面就可以设置屏蔽js&#xff09;所以&#xff0c;服务端也要验证&#xff0c;从安全性角度来讲其中隐藏域也要判断转载于:https://www.cnblogs.com/hupengyin/p…

mysql如何管理空间_管理空间的mysql数据库

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

ubuntu 开启 rewrite 模块

1.sudo a2enmod rewrite 开启Rewrite模块 &#xff08;停用模块&#xff0c;使用 a2dismod&#xff09;2. 在/etc/apache2/ 修改apache2.conf 文件中把AllowOverride none 改成All。 转载于:https://www.cnblogs.com/trey-cn/p/4382533.html

mysql 查看编码方式_Mysql查看编码方式专题

Mysql查看编码方式专题一、查看数据库的字符集show variables like character\_set\_%;输出&#xff1a;----------------------------------| Variable_name | Value |----------------------------------| character_set_client | latin1 || character_set_c…

jquery datatables 学习笔记

最近项目中用到了BootStrap做后台&#xff0c;在选择表格插件的时候发现了jquery datatables。 功能是很强大&#xff0c;但是网上的例子比较少。在经过一段时间的努力可算是搞出来了。 官网地址&#xff1a;http://www.datatables.net/ 官网上的例子比较简单&#xff0c;基础的…

[转]自定义ASP.NET MVC JsonResult序列化结果

本文转自&#xff1a;http://blog.163.com/luckcqyeah/blog/static/17174770720121293437119/ 最近项目中前台页面使用EasyUI的jQuery插件开发中遇到&#xff0c;EasyUI Form中的Datebox组件绑定ASP.NET MVC返回的DateTime类型的数据错误&#xff0c;因为ASP.NET MVC返回的Date…

c# mysql 操作_c#对mysql数据库的基本操作

1 数据库的创建打开已经安装好的数据库&#xff0c;如下流程&#xff1a;step 1&#xff1a;单击 “MySQL Command Line Client-Unicode”step 2:输入密码&#xff0c;进入数据库step 3:建立一个简单的数据库&#xff0c;在这里建立一个名称为“mysql_test”的数据库&#xff0…

jquery右下角自动弹出关闭层

效果体验&#xff1a;http://keleyi.com/keleyi/phtml/jqtexiao/36.htm右下角弹出层后&#xff0c;会在一定时间后自动隐藏。第一版本&#xff1a;http://www.cnblogs.com/jihua/archive/2012/10/10/youxiajiao.htmlhtml代码&#xff1a; <!DOCTYPE HTML> <html xmlns…