python多元线性回归实例_利用Python进行数据分析之多元线性回归案例

线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量)。例如,餐厅根据每天的营业数据(包括菜谱价格、就餐人数、预定人数、特价菜折扣等)预测就餐规模或营业额;网站根据访问的历史数据(包括新用户的注册量、老用户分活跃度、网页内容的更新频率等)预测用户的支付转化率。

在开始多元线性模型前介绍下一元线性模型。数学公式可以表示为:

一个因变量,一个自变量。参数求解公式为:

多元线性回归模型与一元线性回归模型的区别就是,自变量的增加。其数学表达式为:

可以简写为:

β代表多元线性回归模型的偏回归系数,e代表了模型拟合后每一个样本的误差项。利用最小二乘法求解β,可以得到:

将相应的x值,y值代入公式即可求得β。

我们构建模型的目的是为了预测,即根据已知的自变量X值预测未知的因变量y的值。本文是利用Python 实现这一目标。

这里以某产品的利润数据集为例,该数据集包含5个变量,分别是产品的研发成本、管理成本、市场营销成本、销售市场和销售利润。其中销售利润Profit为因变量,其他变量为自变量。

回归模型的建模和预测

将导入数据的数据进行切割,训练集用来训练模型,测试集用来预测。

测试集删除因变量Profit,剩下的自变量进行预测,结果用来跟删除的因变量进行对比,比较模型的预测能力。

数据集中的State变量为字符型的离散变量,需要进行哑变量处理。将State套在C()中,表示将其当作分类(Category)变量处理。以上默认State(California)为对照组。

接下来通过pandas中的get_dummies函数生成哑变量,以New York作为对照组。

如上结果所示,从离散变量State中衍生出来的哑变量在回归系数的结果里只保留了Florida和California,而New York作为了参照组。得到的结果表示该模型公式为:

Profit=58068.05+0.80RD_Spend-0.06Administation+0.01Marketing_Spend+1440.86Florida+513.47California

如何解释该模型呢,以RD_Spend和Florida为例,在其他变量不变的情况下,研发成本每增加2美元,利润会增加0.80美元;在其他变量不变的情况下,以New York为基准线,如果在Florida销售产品,利润会增加1440.86美元。

虽然模型已经建成,但是模型的好坏还需要模型的显著性检验和回归系数的显著性检验。

回归模型的假设检验

模型的显著性检验使用F检验。

手工计算F值和模型自带的F统计值计算完全一致。,接下俩将计算得出的F统计值和理论F分布的值进行比较。

计算出的F统计值远远大于理论F值,这里可以拒绝原假设,即认为多元线性回归是显著的,也就是回归模型的偏回归系数不全为0。

回归系数的显著性检验t检验

如上结果所示,模型的概览信息包含三个部分,第一部分主要是有关模型的信息,例如模型的判决系数R2,用来衡量自变量对因变量的解释程度,模型的F统计值,用来检验模型的显著性;第二部分主要包含偏回归系数的信息,例如回归系数的Coef、t统计量值、回归系数的置信区间等;第三部分主要涉及模型的误差项e的有关信息。

在第二部分的内容中,含有每个偏回归系数的t统计量值,它的计算就是由估计值coef和标准差std err的商所得的,同时也有t统计量值对应的概率值p,用来判别统计量是否显著的直接办法,通常概率值p小于0.05时表示拒绝原假设。从返回的结果可知,只有截距项Intercept和研发成本RD_Spend对应的值小于0.05,才说明其余变量都没有通过系数的显著性检验,即在模型中这些变量不是影响利润的重要因素。

回归模型的诊断

当回归模型建好之后,并不意味着建模过程的结束,还需要进一步对模型进行诊断。由统计学知识可知,线性回归模型需要满足一些假设前提,只有满足了这些假设,模型才是合理的。需满足:误差e服从正态分布,无多重共线性,线性相关性,误差项e的独立性,方差齐性。

正态性检验,由y=Xβ+e来说,等式右边的自变量属于已知变量,而等式左边的因变量服从正态分布,要求残差项要求正态分布,但其实质就是要求因变量服从正态分布。关于正态性检验通常运用两类方法,分别是定性的图形法(直方图、PP图或QQ图)和定量的非参数法(Shapiro检验和K-S检验),以下是直方图法,

从图中看,和密度曲线和正态分布密度曲线的趋势比较吻合,故直观上可以认为利润变量服从正态分布。以下是PP图和QQ图法,

PP图思想是对比正态分布的累计概率值和实际分布的累计概率值,而QQ图则比正态分布的分位数和实际分布的分位数。判断变量是否近似服从正态分布的标准是:如果散点都比较均匀地散落在直线上,就说明近似服从正态分布,否则就认为数据不服从正态分布。如图所知,不管是PP图还是QQ图,绘制的散点均落在直线的附近,没有较大的偏离,故认为利润变量近似服从正态分布。

多重共线性检验

多重共线性是指模型中的自变量之间存在较高的线性相关关系,它的存在给模型带来严重的后果。可以使用方差膨胀因子VIF来鉴定,如果VIF大于10,则说明变量间存在多重共线性;如果如果VIF大于100,则表明变量之间存在严重的多重共线性。VIF的计算公式为:

如上计算所示,两个自变量对应的方差膨胀因子均小于10,说明构建模型的数据并不存在多重共线性。

线性相关性检验

线性相关性即用于建模的因变量和自变量之间存在线性相关关系,可以使用Pearson相关系数和可视化方法进行识别,皮尔逊计算公式为:

如上图结果所示,自变量中只有研发成本和市场营销成本与利润之间存在较高的相关系数,相关系数分别达到0.978和0.739,而其他变量与利润之间几乎没有线性相关性可言。以管理成本Administration为例,与利润之间的相关系数只有0.2,被认定为不相关,但是能说明两者不具有线性相关关系,当存在非线性相关关系时,皮尔逊系数也会很小,因此需要可视化的方法观测因变量和自变量之间的散点关系。可以使用seaborn模块中的pairplot函数。

从图中结果可知,研发成本和利润之间的散点图几乎为一条向上倾斜的直线(左下角),说明这两种变量之间确实存在很强的线性相关;市场营销成本与利润之间的散点图同样向上倾斜,但也有很多点的分布还是比较分散的(见第一列第三行);管理成本和利润之间的散点图呈水平趋势,而且分布也比较宽,说明两者之间确实没有任何关系(第一列第二行)。

以重构的model2为例,综合考虑相关系数,散点图矩阵和t检验的结果,最终确定只保留model2中的RDSpend和Marketing_Spend两个自变量,下面重新对该模型做修正。

异常值检验

由于多元线性回归模型容易受到极端值的影响,故需要利用统计方法对观测样本进行异常点检测。如果在建模过程发现异常数据,需要对数据集进行整改,如删除异常值或衍生出是否为异常值的哑变量。对于线性回归模型,通常利用帽子矩阵,DFFITS准则,学生化残差或cook距离进行异常点检测。基于get_influence方法获得四种统计量的值。

以上合并了四种统计量的值,这里使用标准化残差法将异常值查询出来,当标准化残差大于2时,即可认为对应的数据点为异常值。

异常比例为2.5%,比较小,故考虑将其删除。

新的模型公式为:Profit=51827.42+0.80RD_Spend+0.02Marketing_Spend

独立性检验

残差e的独立性检验也就是因变量y的独立性检验。通常使用Durbin-Watson统计值来测试,如果DW值在2 左右,则表明残差之间时不相关的;如果与2偏离的教员,则说明不满足残差的独立性假设。

DW统计量的值为2.065,比较接近于2,故可以认为模型的残差项之间是满足独立性这个假设前提的。

方差齐性检验

方差齐性是要求模型残差项的方差不随自变量的变动而呈现某种趋势,否则,残差的趋势就可以被自变量刻画。关于方差齐性的检验,一般可以使用两种方法,即图形法(散点图)和统计检验法(BP检验)。

如图所示,标准化残差没有随自变量的变动而呈现喇叭性,所有的散点几乎均匀的分布在参考线y=0的附近。所以,可以说明模型的残差项满足方差齐性的前提假设。

经过前文的模型构造、假设检验和模型诊断,最新红确定合理的模型model4。接下来就是利用测试集完成预测。

如上图所示,绘制了有关模型在测试集上的预测值和实际值的散点图。两者非常接近,散点在直线附近波动,说明模型的预测效果还是不错的。

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

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

相关文章

NTLM

NTLM HTTP认证 过程如下&#xff1a; 1: C --> S GET ... 2: C <-- S 401 Unauthorized WW-Authenticate: NTLM 3: C --> S GET ... Authorization: NTLM <base64-encoded type-1-message> 4: C <-- S 401 Unauthorized WWW-Authenticate: NTLM …

ChatGPT和DALLE-2级联后,输出效果震撼了…

源&#xff5c;机器之心 文&#xff5c;张倩、袁铭怿生成式 AI 正在变革内容的生产方式。在过去的一周&#xff0c;相信大家都被 ChatGPT 刷了屏。这个强大的对话 AI 仅用 5 天时间用户量就突破了 100 万。大家用各种方式测试着它的能力上限&#xff0c;其中一种测试方式就是让…

域用户频繁被锁定怎么解决_Oracle11g用户频繁锁定并且解锁后不允许登录

原因有可能是oracle的密码过期机制导致的&#xff1a;一、由于Oracle中默认在default概要文件中设置了“PASSWORD_LIFE_TIME180天”所导致。解决办法&#xff1a;1、查看用户用的哪种profile策略&#xff0c;一般是default&#xff1a;select username,profile from dba_users;…

LeetCode 1290. 二进制链表转整数

1. 题目 给你一个单链表的引用结点 head。 链表中每个结点的值不是 0 就是 1。 已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101…

jmeter性能测试报告_用 JMeter 做接口测试的优劣浅析

2018年由软件质量报道做的调查报告表明&#xff0c;受调查的测试人员中约有40.67%的人使用JMeter作为接口测试的自动化测试工具(排在商业化或者开源工具中的第一)&#xff0c;剩下的为Postman(28%)&#xff0c;以及SoapUI(17.33%)。不过值得关注的是另外还有44.13%的采用了自研…

关于Hibernate

Hibernate是对象/关系映射&#xff08;ORM&#xff09;的解决方案。就是将java对象与对象关系映射至关系型数据库中的表格与表格之间的关系。 hibernate各个组件的关系 核心组件&#xff1a; Configuration类&#xff1a;用于读取Hibernian配置文件&#xff0c;并生成Sessio&am…

研究了一堆英语学习软件,发现了一个美国宝藏口语App,国内也能用!

图片来源&#xff1a;爱奇艺《一年一度喜剧大会》最近看《二喜》看到逗逗的这句话&#xff0c;我真的太同感了——一个人不知道做什么的时候&#xff0c;好像总会想到学英语这件事。“英语好”确实可以成为一剂强心针——更好的学业机会和更好的职业选择。《当代国人英语学习调…

jdbctemplate 开启事务_Spring(四):事务管理

事务首先&#xff0c;我们要知道事务是什么构成单一逻辑工作单元的操作集合称为事务事务的ACID特性原子性&#xff1a;不可分割的最小操作单位&#xff0c;要么同时成功&#xff0c;要么同时失败一致性&#xff1a;事务操作前后&#xff0c;数据总量不变隔离性&#xff1a;多个…

LeetCode 58. 最后一个单词的长度

1. 题目 给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s&#xff0c;返回其最后一个单词的长度。 如果字符串从左向右滚动显示&#xff0c;那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词&#xff0c;请返回 0 。 说明&#xff1a;一个单词是指仅由字母组…

prompt终于在机器人领域杀疯了

编&#xff5c;杜伟、陈萍源&#xff5c;机器之心谷歌机器人团队等在机器人领域构建了一个多任务 transformer 模型&#xff0c;显著改进了对新任务、环境和对象的零样本泛化。我们知道&#xff0c;机器学习&#xff08;ML&#xff09;多个子领域&#xff08;如 NLP 和 CV&…

python打开excel数据库_使用python导入excel文件中的mssql数据库数据

我试图用python导入excel文件中的mssql数据库数据。我的数据在excel表格中的顺序不正确。e、 g它显示第1列数据&#xff0c;然后是第3列&#xff0c;第2列&#xff0c;然后是第4列&#xff0c;依此类推。我使用以下脚本&#xff1a;import pyodbcimport csvconnection pyodbc.…

雷鸟安装的插件

lightning日历功能 同步lightning和google日历的插件&#xff1a;provider_for_google_calendar 使用可以参考&#xff1a;http://jackbin.blogspot.com/2008/02/lightning-5.html 导入OE邮件时用了ImportExportTools转载于:https://www.cnblogs.com/cerxp/archive/2008/09/28/…

LeetCode 66. 加一

1. 题目 给定一个由整数组成的非空数组所表示的非负整数&#xff0c;在该数的基础上加一。 最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解…

ChatGPT的前世今生

作者&#xff5c;符尧等整理&#xff5c;李rumor最近有幸看到了一篇十分深度剖析GPT系列模型的文章&#xff0c;读到后赶紧与作者联系&#xff0c;没想到他们很快就翻译成了中文&#xff0c;在这里分享给大家。英文原版:https://franxyao.github.io/blog.html作者&#xff1a;符…

文件管理(一)

文件是同一类型元素的有序集合&#xff0c;是内存与外设间传输数据的渠道。一些外设如显示器、键盘、打印机等都可以看作文件&#xff0c;但最常用的还是磁盘文件&#xff0c;这也是本章我们主要讨论的对象。 Delphi继承了Object Pascal的文件管理功能&#xff0c;并有很大的发…

LeetCode 95. 不同的二叉搜索树 II(递归)

1. 题目 给定一个整数 n&#xff0c;生成所有由 1 … n 为节点所组成的二叉搜索树。 示例: 输入: 3 输出: [[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结构的二叉搜索树&#xff1a;1 3 3 …

离谱!以AI数据标注为名,偷拍女性上厕所?

源&#xff5c;新智元文&#xff5c;好困 David你绝对想不到&#xff0c;自己在家上厕所的「实时动态」&#xff0c;不仅被拿去给AI做了训练数据&#xff0c;而且还被发到了网上&#xff01;最近&#xff0c;《麻省理工科技评论》在一篇万字长文调查中&#xff0c;就曝光了这样…

treemap怎么保证有序_干货!208道面试题教你怎么通过面试!

[如您对本文感兴趣&#xff0c;请点击标题下方蓝色“拓达IT训练营”添加关注&#xff0c;每天都有精彩实用文章呈现给您]一、Java 基础1.JDK 和 JRE 有什么区别&#xff1f;2. 和 equals 的区别是什么&#xff1f;3.两个对象的 hashCode()相同&#xff0c;则 equals()也一定为 …

看美女无数

看美女无数——代腾飞 2008年9月30日 于成都漫漫长假&#xff0c;却不知如何渡大千世界&#xff0c;却找不到去处只好独自骑着车儿压马路 来来往往&#xff0c;美女无数虽闭城不出&#xff0c;却也大饱眼福知足&#xff0c;知足 坐看春熙路&#xff0c;看美女购物熙来攘往&am…

LeetCode 107. 二叉树的层次遍历 II(队列)

1. 题目 给定一个二叉树&#xff0c;返回其节点值自底向上的层次遍历。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向右遍历&#xff09; 例如&#xff1a; 给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7 返回其自底向上的层次遍历为…