数学建模【多元线性回归模型】

一、多元线性回归模型简介

回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的任务就是,通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。

常见的回归分析有五类:线性回归、0-1回归、定序回归、计数回归和生存回归,其划分的依据是因变量Y的类型。本篇主要讲解多元线性回归以及lasso回归。

回归分析的目的

  • 识别重要变量
  • 判断相关性的方向
  • 要估计权重(回归系数)

回归分析分类

类型模型Y的特点例子
线性回归OLS、GLS(最小二乘)连续数值型变量GDP、产量、收入
0-1回归logistic回归二值变量(0-1)是否违约、是否得病
定序回归probit定序回归定序变量等级评定(优良差)
计数回归泊松回归(泊松分布)计数变量每分钟车流量
生存回归Cox等比例风险回归生存变量(截断数据)企业、产品的寿命

二、适用赛题

解释类问题

  • 问一个因变量y由多个自变量x决定,探究这多个x和y的关系
  • 解释哪个x和y关系更紧密

预测类问题

  • 由于回归模型会得到一个拟合曲线,进而可以由这个曲线去预测一些值
  • 不过注意,当要用拟合曲线预测的时候,拟合优度一定要大

三、模型流程

四、流程分析

注:回归模型其中涉及到矩阵论、概率论与数理统计的知识,本篇不展开证明和讲解。且推荐使用Stata软件来进行多元线性回归分析。

1.处理变量

我们得到了一组数据,要对数据进行分类

横截面数据

  • 在某一时点收集的不同对象的数据
  • 例如:我们自己发放问卷得到的数据,全国各省份2018年GDP的数据,大一新生今年体测的得到的数据

时间序列数据

  • 对同一对象在不同时间连续观察所取得的数据
  • 例如:从出生到现在,你的体重的数据(每年生日称一次),中国历年来GDP的数据,在某地方每隔一小时测得的温度数据

面板数据

  • 横截面数据与时间序列数据综合起来的一种数据资源
  • 例如:2008-2018年,我国各省份GDP的数据
数据类型常见建模方法
横截面数据多元线性回归
时间序列数据移动平均、指数平滑、ARIMA、GARCH、VAR、 协积
面板数据固定效应和随机效应、静态面板和动态面板

现在给出多元线性回归方程

无内生性(no endogeneity)要求所有解释变量均与扰动项不相关,这个假定通常太强,因为解释变量一般很多(比如,5-15个解释变量),且需要保证它们全部外生。是否可能弱化此条件?答案是肯定的,如果你的解释变量可以区分为核心解释变量与控制变量两类。

  • 核心解释变量:我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值)
  • 控制变量:我们可能对于这些变量本身并无太大兴趣,而之所以把它们也放入回归方程,主要是为了“控制住”那些对被解释变量有影响的遗漏因素
  • 在实际应用中,我们只要保证核心解释变量与μ不相关即可

如果自变量中有定性变量,例如性别、地域等,在回归中要怎么处理呢?例如:我们要研究性别对于工资的影响(性别歧视)。这时候可以用到虚拟变量

Female就是一个虚拟变量。

为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1。例如男女是两类,就引入了一个Female;如果是区别全国34个省的人,就可以设置33个虚拟变量。

2.初次回归

利用Stata得到初次回归的结果后,需要检验结果的可靠性,如果可靠就可以解释系数完成工作如果不可靠,还需要调整方法继续回归。

问题出在扰动项

横截面数据容易出现异方差的问题;时间序列数据容易出现自相关的问题。

①异方差
如果扰动项存在异方差
  • OLS估计出来的回归系数是无偏、一致的
  • 假设检验无法使用(构造的统计量失效了)
  • OLS估计量不再是最优线性无偏估计量(BLUE)
如何检验是否存在异方差

BP检验

原假设:扰动项不存在异方差。P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。

怀特检验

原假设:扰动项不存在异方差。P值小于0.05,说明在95%的置信水平下拒绝原假设,即我们认为扰动项存在异方差。

②多重共线性

自相关的问题就是多重共线性的问题

如何检验是否存在多重共线性

3.处理问题
①如何解决异方差
  • 使用OLS + 稳健的标准误。如果发现存在异方差,一种处理方法是,仍然进行OLS回归,但使用稳健标准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的情况下,若使用稳健标准误,则所有参数估计、假设检验均可照常进行。换言之,只要使用了稳健标准误,就可以与异方差“和平共处”了
  • 广义最小二乘估计法GLS。原理:方差较大的数据包含的信息较少,我们可以给予信息量大的数据(即方差较小的数据更大的权重)缺点:我们不知道扰动项真实的协方差矩阵,因此我们只能用样本数据来估计,这样得到的结果不稳健,存在偶然性
  • Stock and Watson (2011)推荐,在大多数情况下应该使用“OLS +稳健标准误”
②如何处理多重共线性
  • 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计
  • 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有多重共线性,则只会更加显著
  • 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对模型设定进行修改
③逐步回归分析

没有太好的方法处理多重共线性问题,可以调整回归的方式

向前逐步回归(Forward selection)

  • 将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型
  • 缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉

向后逐步回归(Backward elimination)

  • 与向前逐步回归相反,先将所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的变异是否有显著变化,之后将最没有解释力的那个自变量剔除。此过程不断迭代,直到没有自变量符合剔除的条件
  • 缺点:一开始把全部变量都引入回归方程,这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了

注意事项

  • 向前逐步回归和向后逐步回归的结果可能不同
  • 不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题(后面会介绍lasso回归)
  • 有没有更加优秀的筛选方法?有的,那就是每种情况都尝试一次,最终一共有2的k次方 - 1种可能。如果自变量很多,那么计算相当费时
4.解释系数

这里也可以看到,引入了新的自变量价格后,对回归系数的影响非常大。这就是遗漏变量导致的内生性的造成的。

伍德里奇的《计量经济学导论,现代观点》里,第六章176 -177页有详细的论述。取对数意味着原被解释变量对解释变量的弹性,即百分比的变化而不是数值的变化。目前,对于什么时候取对数还没有固定的规则,但是有一些经验法则

  • 与市场价值相关的,例如,价格、销售额、工资等都可以取对数
  • 以年度量的变量,如受教育年限、工作经历等通常不取对数
  • 比例变量,如失业率、参与率等,两者均可
  • 变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y)

取对数的好处

  • 减弱数据的异方差性
  • 如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布
  • 模型形式的需要,让模型具有经济学意义

下面有四类模型回归系数的解释

  • 一元线性回归:y = a + bx + μ,x每增加1个单位,y平均变化b个单位
  • 双对数模型: lny = a + blnx + μ,x每增加1%,y平均变化b%
  • 半对数模型: y = a + blnx + μ,x每增加1%,y平均变化b/100个单位
  • 半对数模型: lny = a + bx + μ,x每增加1个单位,y平均变化(100b)%
5.再次回归

在前面已经介绍了如何解决存在异方差的情况。但是对于多重共线性并未有一个较好的解决方法,解决方法中的增大样本量显然不太现实,找点数据已经不容易了,还要增大样本量。所以在不用后面的方法的情况下,一般都是将导致严重共线性的变量删除。下面我们介绍lasso回归。

和lasso回归一起出来的,还有岭回归。事实上,回归中关于自变量的选择大有门道, 变量过多时可能会导致多重共线性问题造成回归系数的不显著,甚至造成OLS估计的失效。本篇介绍到的岭回归和lasso回归在OLS回归模型的损失函数上加上了不同的惩罚项,该惩罚项由回归系数的函数构成。一方面,加入的惩罚项能够识别出模型中不重要的变量,对模型起到简化作用,可以看作逐步回归法的升级版;另一方面,加入的惩罚项能够让模型变得可估计,即使之前的数据不满足列满秩。

和前面一样,还是推荐使用Stata软件分析。但大多数博客或讲义上都是使用Python来做岭回归和lasso回归的,因此有Python机器学习基础的同学可以自己查阅相关的调用代码。

另外,Stata中对于岭回归的估计有点bug,因此推荐用lasso回归。

那么,什么时候用lasso回归呢?

我们首先使用最一般的OLS对数据进行回归,然后计算方差膨胀因子VIF,如果VIF > 10则说明存在多重共线性的问题,此时我们需要对变量进行筛选。

在前面我们提到可以使用逐步回归法来筛选自变量,让回归中仅留下显著的自变量来抵消多重共线性的影响,知道lasso回归后,我们完全可以把lasso回归视为逐步回归法的进阶版,我们可以使用lasso回归来帮我们筛选出不重要的变量,步骤如下

  1. 判断自变量的量纲是否一样,如果不一样则首先进行标准化的预处理;
  2. 对变量使用lasso回归,记录下lasso回归结果表中回归系数不为0的变量,这些变量就是最终我们要留下来的重要变量,其余未出现在表中的变量可视为引起多重共线性的不重要变量

在得到了重要变量后,我们实际上就完成了变量筛选,此时我们只将这些重要变量视为自变量,然后进行回归,并分析回归结果即可。(注意:此时的变量可以是标准化前的,也可以是标准化后的,因为lasso只起到变量筛选的目的)

五、补充

1.拟合优度较低怎么办
  • 回归分为解释型回归和预测型回归。预测型回归一般才会更看重R²。解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可
  • 可以对模型进行调整,例如对数据取对数或者平方后再进行回归
  • 数据中可能有存在异常值或者数据的分布极度不均匀
2.标准化回归系数

为了更为精准的研究影响评价量的重要因素(去除量纲的影响),我们可考虑使用标准化回归系数。

对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。

标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显著的回归系数哦)。

3.对于线性的理解

线性假定并不要求初始模型都呈上述的严格线性关系,自变量与因变量可通过变量替换而转化成线性模型。比如下面的都是线性模型

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

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

相关文章

Linux配置网卡功能

提示:工具下载链接在文章最后 目录 一.network功能介绍二.配置network功能2.1 network_ip配置检查 2.2 network_br配置2.2.1 配置的网桥原先不存在检查2.2.2 配置的网桥已存在-修改网桥IP检查2.2.3 配置的网桥已存在-只添加网卡到网桥里检查 2.3 network_bond配置检查 2.4 netw…

Access AR Foundation 5.1 in Unity 2022

如果已经下载安装了ARF但版本是5.0.7 可以通过下面的方式修改 修改后面的数字会自动更新 更新完成后查看版本 官方文档 Access AR Foundation 5.1 in Unity 2021 | AR Foundation | 5.1.2

【知识整理】Git 使用实践问题整理

问题1、fatal: refusing to merge unrelated histories 一、Git 的报错 fatal: refusing to merge unrelated histories 新建了一个仓库之后,把本地仓库进行关联提交、拉取的时候,出现了如下错误: fatal: master does not appear to be a g…

电脑无法开启虚拟化

vm开启虚拟化失败 如果出现以下错误,需要进入bios界面,不同电脑进入界面的方式不一样。这里以hp为例: 1、关机后,按住开机键和f10,进入如下界面(语言在主菜单里面) 2、选择先进和下面的系统选…

c语言游戏实战(10):坤坤的篮球回避秀

前言: 这款简易版的球球大作战是博主耗时两天半完成的,玩家需要控制坤坤在游戏界面上移动,来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写,旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代…

Vue使用高德地图定位到当前位置,并显示天气信息

首先得去高德控制台申请两个 key,一个天气key和一个定位key 获取天气信息的函数: const getWeather function (city) {// 使用 fetch 发送请求获取天气信息fetch(https://restapi.amap.com/v3/weather/weatherInfo?city${city}&keyeefd36557b0250…

哪个有名的工具可以安全记事 私密记事本笔记推荐

在这个数字化的时代,我们的生活已经离不开各种记事工具。它们帮助我们记录生活中的点点滴滴,无论是工作上的重要事项,还是个人的私密心情。然而,当我在寻找一个能够安心记录私密事情的工具时,安全性成为了我最关心的因…

【软件测试】Postman中变量的使用

Postman中可设置的变量类型有全局变量,环境变量,集合变量,数据变量及局部变量。区别则是各变量作用域不同,全局变量适用于所有集合,环境变量适用于当前所选环境(所有集合中均可使用不同环境变量&#xff09…

【CSP试题回顾】202309-2-坐标变换(其二)

CSP-202309-2-坐标变换(其二) 关键点总结 1.输入输出的同步关闭,以加快I/O操作的速度 这一点还是很重要的,本题代码如果不进行输入输出的同步关闭会时间超限。 ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);2.…

K8S中POD的控制器

一、Pod控制器及其功用 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效&am…

Linux基础命令[9]-wc

文章目录 1. wc 命令说明2. wc 命令语法3. wc 命令示例3.1 不加参数3.2 -c(统计字节数)3.3 -m(统计字符数)3.4 -l(统计行数)3.5 -L(最长一行的长度)3.6 -w(统计单词数&am…

Arcgis实现点位空间位置从上到下从左到右排序

效果 背景 工作项目中经常会遇到需要对网格进行编号,而编号是有一定原则的,比如空间位置从上到下从左到右,或者其它原则,那么都可以通过下面的方式来实现 1、准备数据 点shp文件,查看初始FID字段标注,目…

transformer--transformer模型构建和测试

前面几节进行了各种组件的学习和编码,本节将组件组成transformer,并对其进行测试 EncoderDecoder 编码器解码器构建 使用EnconderDecoder实现编码器-解码器结构 # 使用EncoderDeconder类实现编码器和解码器class EncoderDecoder(nn.Module):def __ini…

飞书文档批量导出

背景需求 最近所参与的项目即将结项,需要将飞书中的产品需求文档(PRD)交付给甲方,由于文档较多,大概有两百多个,一个一个的下载导出,太麻烦了(PS:本人比较懒)…

【MySQL】表的约束——空属性、默认值、列描述、zerofill、主键、自增长、唯一键、外键

文章目录 MySQL表的约束1. 空属性2. 默认值3. 列描述4. zerofill5. 主键6. 自增长7. 唯一键8. 外键 MySQL 表的约束 MySQL中的表的约束是一种规则,用于限制或保护表中数据的完整性和合法性。约束可以确保数据在插入、更新或删除时满足特定的条件,从而维护…

MySQL相关问题

MySQL相关问题 一、MySQL支持哪些存储引擎?二、MySQL是如何执行一条SQL的?三、MySQL数据库InnoDB存储引擎是如何工作的?四、如果要对数据库进行优化,该怎么优化?五、MySQL如何定位慢查询?六、如何分析MySQL…

揭秘App访问量背后的秘密:数据统计与分析

在移动互联网时代,App已成为人们日常生活的重要组成部分。对于App运营者来说,了解用户的访问量、行为习惯等数据至关重要。本文将深入探讨如何精准统计App访问量,为运营者提供有价值的数据支持。 一、App访问量统计的重要性 访问量是衡量A…

计算机专业必看的十部电影

计算机专业必看的十部电影 1. 人工智能2. 黑客帝国3. 盗梦空间4. 社交网络5. Her6. 模仿游戏7. 斯诺登8. 头号玩家9. 暗网10. 网络迷踪 计算机专业必看的十部电影,就像一场精彩盛宴! 《黑客帝国》让你穿越虚拟世界,感受高科技的魅力《模仿游戏…

公网IP怎么获取?

公网IP是网络中设备的唯一标识符,用于在Internet上进行通信和定位。对于普通用户来说,了解如何获取自己的公网IP是很有必要的,本文将介绍几种获取公网IP的方法。 方法一:通过路由器查询 大多数家庭和办公室使用的路由器都会有一个…

深入解析Mybatis-Plus框架:简化Java持久层开发(七)

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本章节介绍如何通过Mybatis-Plus删除数据库中的数据。 本章节不需要前置准备,继续使用之前的测试类,数据库表进行操作。 &#x1f4…