数学建模笔记(六)利用Stata进行多元回归分析知识点笔记及代码操作

本文主要是介绍数学建模笔记(六)利用Stata进行多元回归分析知识点笔记及代码操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

回归分析:

回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。

  • 回归分析的任务:
    通过研究自变量X和因变量Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。
  • 常见的回归分析有五类:
    线性回归、0‐1回归、定序回归、计数回归、生存回归
    其划分的依据是因变量Y的类型
    在这里插入图片描述
  • Y:俗称因变量,即因为别人的改变,而改变的变量。在实际应用中,Y常常是我们需要研究的那个核心变量。
  • 例:
    • 经济学家研究经济增长的决定因素,那么Y可以选取GDP增长率 (连续数值型变量)
    • P2P公司要研究借款人是否能按时还款,那么Y可以设计成一个二值变
      量,Y=0时代表可以还款,Y=1时代表不能还款 (0‐1型变量)
    • 消费者调查得到的数据(1表示非常不喜欢,2表示有点不喜欢,3表示一般般,4表示有点喜欢,5表示非常喜欢)(定序变量)
    • 管理学中RFM模型:F代表一定时间内,客户到访的次数,次数其实就是一个非负的整数 (计数变量)
    • 研究产品寿命、企业寿命甚至是人的寿命(这种数据往往不能精确的观测,例如现在要研究吸烟对于寿命的影响,如果选取的样本中老王60岁,现在还活的非常好,我们不可能等到他去世了再做研究,那怎么办呢?直接记他的寿命为60+,那这种数据就是截断的数据)(生存变量)
  • 回归分析要完成的三个使命:
    第一、识别重要变量;
    第二、判断相关性的方向;
    第三、要估计权重(回归系数)。

不同数据类型的处理方法

在这里插入图片描述

  • 建模比赛中,前两种数据类型最常考到;面板数据较为复杂,是经管类学生在中级计量经济学中才会学到的模型。

  • 横截面数据往往可以使用回归来进行建模,我们通过回归可以得到自变量与因变量之间的相关关系以及自变量的重要程度。

  • 时间序列数据往往需要进行我们进行预测,时间序列模型的选择也很多,需要根据题的情况选择合适的模型对数据进行建模。

一元线性回归

在这里插入图片描述
具体讲解可参考:
https://blog.csdn.net/weixin_47066458/article/details/113826330

对于线性的理解:

线性假定并不要求初始模型都呈y=β0 + β1*xi + μi 的严格线性关系,自变量与因变量可以通过变量替换而转化成线性模型,如:
在这里插入图片描述
在使用线性回归模型前,需要对数据进行预处理。(用Excel、Matlab、Stata等软件)

内生性的研究:

在这里插入图片描述
如果满足误差项μ和所有自变量x均不相关,则称该回归模型具有外生性
如果相关,则存在内生性,内生性会导致回归系数估计的不准确——不满足无偏性和一致性。
即μ包含了所有与y相关,但未添加到回归模型中的变量,如果这些变量和我们已经添加的自变量相关,则存在内生性。

内生性的蒙特卡洛模拟:
%% 蒙特卡洛模拟:内生性会造成回归系数的巨大误差
times = 300;  % 蒙特卡洛的次数
R = zeros(times,1);  % 用来储存扰动项u和x1的相关系数
K = zeros(times,1);  % 用来储存遗漏了x2之后,只用y对x1回归得到的回归系数
for i = 1: timesn = 30;  % 样本数据量为nx1 = -10+rand(n,1)*20;   % x1在-10和10上均匀分布,大小为30*1u1 = normrnd(0,5,n,1) - rand(n,1);  % 随机生成一组随机数x2 = 0.3*x1 + u1;   % x2与x1的相关性不确定, 因为我们设定了x2要加上u1这个随机数% 这里的系数0.3我随便给的,没特殊的意义,你也可以改成其他的测试。u = normrnd(0,1,n,1);  % 扰动项u服从标准正态分布y = 0.5 + 2 * x1 + 5 * x2 + u ;  % 构造yk = (n*sum(x1.*y)-sum(x1)*sum(y))/(n*sum(x1.*x1)-sum(x1)*sum(x1)); % y = k*x1+b 回归估计出来的kK(i) = k;u = 5 * x2 + u;  % 因为我们回归中忽略了5*x2,所以扰动项要加上5*x2r = corrcoef(x1,u);  % 2*2的相关系数矩阵R(i) = r(2,1);
end
plot(R,K,'*')
xlabel("x_1和u'的相关系数")
ylabel("k的估计值")
核心解释变量和控制变量:
  • 无内生性(no endogeneity)要求所有解释变量均与扰动项不相关。这个假定通常太强,因为解释变量一般很多(比如,5‐15个解释变量),且需要保证它们全部外生。

  • 是否可能弱化此条件?答案是肯定的。解释变量可以区分为核心解释变量控制变量两类。

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

回归系数的两种解释:
  • 第一种解释:
    如:y=5.3 + 0.19x1 - 1.74x2,其中x1表示品质评分,x2表示该产品的价格,y为产品的销量。
    0.19:在保持其他变量不变的情况下,评分每增加一个单位,该产品的平均销量增加0.19;
    -1.74:在保持其他变量不变的情况下,价格每增加一个单位,该产品的平均销量减少1.74;
  • 第二种解释:
    在这里插入图片描述
四类模型回归系数的解释:

1、一元线性回归:𝑦 = 𝑎 + 𝑏𝑥 + 𝜇,x每增加1个单位,y平均变化b个单位;
2、双对数模型:𝑙𝑛𝑦 = 𝑎 + 𝑏𝑙𝑛𝑥 + 𝜇,x每增加1%,y平均变化b%;
3、半对数模型:𝑦 = 𝑎 + 𝑏𝑙𝑛𝑥 + 𝜇,x每增加1%,y平均变化b/100个单位;
4、半对数模型:𝑙𝑛𝑦 = 𝑎 + 𝑏𝑥 + 𝜇,x每增加1个单位,y平均变化(100b)%。

需要取对数后构成线性的情况:
  • 目前,对于什么时候取对数没有固定的规则,但是有些经验法则:

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

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

如果自变量中有定性变量,例如性别、地域等,在
回归中要怎么处理呢?
例如:我们要研究性别对于工资的影响(性别歧视)
在这里插入图片描述Female的解释:
在这里插入图片描述
为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1,例如上例中我们只引入了Female而没有同时引入Female和Male。

含有交互项的自变量

例如:
在这里插入图片描述

利用Stata回归

当跑出来的拟合优度R方较低
  1. 回归分为解释型回归和预测型回归。 预测型回归一般才会更看重𝑅方;
    解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可。

  2. 可以对模型进行调整,例如对数据取对数或者平方后再进行回归。

  3. 数据中可能有存在异常值或者数据的分布极度不均匀。

关于拟合优度和调整后的拟合优度:

我们引入的自变量越多,拟合优度会变大。但我们倾向于使用调整后的拟合优度,如果新引入的自变量对SSE的减少程度特别少,那么调整后的拟合优度反而会减小。

标准化回归系数

为了更为精准的研究影响评价量的重要因素(去除量纲的影响),可考虑使用标准化回归系数。对数据进行标准化,就是将原始数据减去它的均数后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数。
标准化系数的绝对值越大,说明对因变量的影响就越大(只关注显
著的回归系数)

扰动项要满足的条件

在之前的回归分析中,我们都默认了扰动项是球型扰动项。

  • 球型扰动项:满足“同方差”和“无自相关”两个条件。
    横截面数据容易出现异方差的问题;
    时间序列数据容易出现自相关的问题。
解决异方差问题:
1.如果扰动项存在异方差:

(1)OLS估计出来的回归系数是无偏、一致的。
(2)假设检验无法使用(构造的统计量失效了)。
(3)OLS估计量不再是最优线性无偏估计量(BLUE)。

2.怎么解决异方差:

(1)使用OLS + 稳健的标准误
如果发现存在异方差,一 种处理方法是,仍然进行OLS 回归,但使用稳健标
准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的情况下,若使用稳健标准误,则所 有参数估计、假设检验均可照常进行。换言之,只要使用了稳健标准误,就可以与异方差“和平共处”了。
(2)广义最小二乘估计法GLS
原理:方差较大的数据包含的信息较少,我们可以给予信息量大的数据(即方差较小的数据更大的权重)
缺点:我们不知道扰动项真实的协方差矩阵,因此我们只能用样本数据来估计,这样得到的结果不稳健,存在偶然性。

注: 我们常用第一种方法来解决异方差

3.异方差的假设检验:

(1).BP检验
(2).怀特检验

我们无需掌握两种检验的原理,只需知道二者的异同:
BP检验与怀特检验的区别在于,后者还包括平方项与交叉项。因此,BP检验可以看成是怀特检验的特例。BP检验的优点在于其建设性,即可以帮助确认异方差的具体形式。

原假设:扰动项不存在异方差
通过P值来检验扰动项是否存在异方差

多重共线性

在Stata中利用reg可以消除多重共线性,但是无法消除非常接近于多重共线性的项,这就有可能导致我们得到的结果不准确

检验多重共线性:

在这里插入图片描述

多重共线性的处理方法:

如果发现存在多重共线性,可以采取以下处理方法。

  • 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计;
  • 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有多重共线性,则只会更加显著。
  • 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对模型设定进行修改。
逐步回归分析
  • 向前逐步回归Forward selection:将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型。
    (缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉。)

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

    注意:
    (1)向前逐步回归和向后逐步回归的结果可能不同。
    (2)在我们的科研论文中不要轻易使用逐步回归分析,因为剔除了自变量后很有可能会产生新的问题,例如内生性问题。但是建模比赛中可以使用逐步回归分析。

这篇关于数学建模笔记(六)利用Stata进行多元回归分析知识点笔记及代码操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/171744

相关文章

Go使用pprof进行CPU,内存和阻塞情况分析

《Go使用pprof进行CPU,内存和阻塞情况分析》Go语言提供了强大的pprof工具,用于分析CPU、内存、Goroutine阻塞等性能问题,帮助开发者优化程序,提高运行效率,下面我们就来深入了解下... 目录1. pprof 介绍2. 快速上手:启用 pprof3. CPU Profiling:分析 C

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

Linux使用cut进行文本提取的操作方法

《Linux使用cut进行文本提取的操作方法》Linux中的cut命令是一个命令行实用程序,用于从文件或标准输入中提取文本行的部分,本文给大家介绍了Linux使用cut进行文本提取的操作方法,文中有详... 目录简介基础语法常用选项范围选择示例用法-f:字段选择-d:分隔符-c:字符选择-b:字节选择--c

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O