回归模型-多元线性回归分析★★★★★

该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili

目录

1回归分析

1.1相关性

1.2Y

1.3X

1.4使命

1.5分类

2数据分类

2.1横截面数据

2.2时间序列数据

2.3面板数据

 2.4处理方法

2.5数据的收集

3一元线性回归

3.1引入

 3.2理解

3.2.1回归系数 

3.2.2内生性

 3.2.3核心解释变量和控制变量

3.2.4取对数

3.3四类模型回归系数的解释

3.3.1一元线性回归 

3.3.2双对数模型

3.3.3半对数模型

3.3.4半对数模型

 3.4虚拟变量X

3.5含有交互项的自变量

4stata

4.1导入数据

4.2数据的描述性统计

4.2.1定量数据

4.2.2定性数据

4.3回归语句 

4.4加入虚拟变量回归

 4.5标准化回归系数

4.6代码

5扰动项

5.1异方差

5.1.1残差图检验异方差

5.1.2BP检验

5.1.3怀特检验

5.1.4处理方法

6多重共线性

6.1检验

6.2处理方法

7逐步回归分析

8代码 

9总结


 

名称重要性难度
多元线性回归模型★★★★★★★★★★

1回归分析

研究 X Y 之间相关性的分析。

1.1相关性

1.2Y

Y 是什么?俗称 因变量 。取义,因为别人的改变,而改变的变量。在实际应用中,Y 常常是我们需要研究的那个核心变量。
1 )经济学家研究经济增长的决定因素,那么 Y 可以选取 GDP 增长率 (连续 数值型变量)。
2 P2P 公司要研究借款人是否能按时还款,那么 Y 可以设计成一个二值变量,Y=0 时代表可以还款, Y=1 时代表不能还款 0‐1 型变量)。
3 )消费者调查得到的数据( 1 表示非常不喜欢, 2 表示有点不喜欢, 3 表示一般般,4 表示有点喜欢, 5 表示非常喜欢) (定序变量)。
4 )管理学中 RFM 模型: F 代表一定时间内,客户到访的次数,次数其实就是一个非负的整数。(计数变量)
5 )研究产品寿命、企业寿命甚至是人的寿命(这种数据往往不能精确的观测,例如现在要研究吸烟对于寿命的影响,如果选取的样本中老王60 岁,现在还活的非常好,我们不可能等到他去世了再做研究,那怎么办呢?直接记他的寿命为60+ ,那这种数据就是截断的数据) (生存变量)

1.3X

Y 因变量 ( 因为别人的改变,而改变的变量 )
X 是用来解释 Y 的相关变量,所以 X 被称为 自变量
当然,另一套定义方法是: X 为解释变量, Y 为被解释变量。
回归分析的任务就是,通过研究X Y的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。

1.4使命

使命 1 回归分析要去识别并判断: 哪些 X 变量是同 Y 真的相关,哪些不是。统计学中有一个非常重要的领域,叫做“变量选择”。(逐步回归法)
使命 2 去除了那些同 Y 不相关的 X 变量,那么剩下的,就都是重要的、有用的 X 变量了。 接下来回归分析要回答的问题是:这些有用的 X 变量同 Y 的相关 关系是正的呢,还是负的?
使命 3 在确定了重要的 X 变量的前提下,我们还想 赋予不同 X 不同的权重, 也就是不同的回归系数,进而我们可以知道不同变量之间的相对重要性。
这就是回归分析要完成的三个使命:
第一、识别重要变量;
第二、判断相关性的方向;
第三、要估计权重(回归系数)

1.5分类

2数据分类

2.1横截面数据

在某一时点收集的不同对象的数据。

例如:
1 )我们自己发放问卷得到的数据
2 )全国各省份 2018 GDP 的数据
3 )大一新生今年体测的得到的数据

2.2时间序列数据

对同一对象在不同时间连续观察所取得的数据。

例如:
1 )从出生到现在,你的体重的数据(每年生日称一次 )
2 )中国历年来 GDP 的数据。
3 )在某地方每隔一小时测得的温度数据。

2.3面板数据

横截面数据与时间序列数据综合起来的一种数据资源。

例如:
2008‐2018 年,我国各省份 GDP 的数据。

 2.4处理方法

        建模比赛中,前两种数据类型最常考到;面板数据较为复杂,是经管类学生在中级计量经济学中才会学到的模型。
        横截面数据往往可以使用回归来进行建模,我们通过回归可以得到自变量与因变量之间的相关关系以及自变量的重要程度。
        时间序列数据往往需要进行我们进行预测,时间序列模型的选择也很多,大家需要选择合适的模型对数据进行建模。

2.5数据的收集

上面的数据多半都是宏观数据,微观数据市面上很少
大家可以在人大经济论坛搜索
https://bbs.pinggu.org/
另外也可以自己学习爬虫
1 Python 等软件爬取(需要编程基础,实际学习起来不困难)
网易云课堂:零基础 21 天搞定 Python 分布爬虫
2 )傻瓜式软件爬取(八爪鱼)
免费分享给大家,请见本节配套课件的拓展资料文件夹

3一元线性回归

3.1引入

 3.2理解

3.2.1回归系数 

3.2.2内生性

扰动项和所有自变量均不相关才是满足外生性。

内生性的蒙特卡罗模拟: 

代码摘自清风老师:

%% 蒙特卡洛模拟:内生性会造成回归系数的巨大误差
times = 300;  % 蒙特卡洛的次数
R = zeros(times,1);  % 用来储存扰动项u和x1的相关系数
K = zeros(times,1);  % 用来储存遗漏了x2之后,只用y对x1回归得到的回归系数
for i = 1: times
    n = 30;  % 样本数据量为n
    x1 = -10+rand(n,1)*20;   % x1在-10和10上均匀分布,大小为30*1
    u1 = 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 ;  % 构造y
    k = (n*sum(x1.*y)-sum(x1)*sum(y))/(n*sum(x1.*x1)-sum(x1)*sum(x1)); % y = k*x1+b 回归估计出来的k
    K(i) = k;
    u = 5 * x2 + u;  % 因为我们回归中忽略了5*x2,所以扰动项要加上5*x2
    r = corrcoef(x1,u);  % 2*2的相关系数矩阵
    R(i) = r(2,1);
end
plot(R,K,'*')
xlabel("x_1和u'的相关系数")
ylabel("k的估计值")

 3.2.3核心解释变量和控制变量

无内生性( no endogeneity )要求所有解释变量均与扰动项不相关。
这个假定通常太强,因为解释变量一般很多(比如, 5‐15 个解释变量),且需要保证它们全部外生。
是否可能弱化此条件?答案是肯定的,如果你的解释变量可以区分为核心解释变量与控制变量两类。
核心解释变量: 我们最感兴趣的变量,因此我们特别希望得到对其系数的一致估计(当样本容量无限增大时,收敛于待估计参数的真值 )。
控制变量: 我们可能对于这些变量本身并无太大兴趣;而之所以把它们也放入回归方程,主要是为了 “控制住” 那些对被解释变量有影响的遗漏因素。
在实际应用中,我们只要保证核心解释变量与 𝝁 不相关即可
参考资料: 再论 OLS :核心变量与控制变量的区别

3.2.4取对数

3.3四类模型回归系数的解释

3.3.1一元线性回归 

𝑦 𝑎 𝑏𝑥 𝜇 x 每增加 1 个单位, y 平均变化 b 个单位

3.3.2双对数模型

𝑙𝑛𝑦 𝑎 𝑏𝑙𝑛𝑥 𝜇 x 每增加 1% y 平均变化 b%

3.3.3半对数模型

y=   𝑎 𝑏𝑙𝑛𝑥 + 𝜇 x 每增加 1% y 平均变化 b/100 个单位

3.3.4半对数模型

𝑙𝑛𝑦= 𝑎 𝑏𝑥 + 𝜇 x 每增加 1 个单位, y 平均变化 (100b)%

 3.4虚拟变量X

举例:

3.5含有交互项的自变量

4stata

Stata是一个统计分析软件,但它也具有很强的程序语言功能,这给用户提供了一个广阔的开发应用的天地,用户可以充分发挥自己的聪明才智,熟练应用各种技巧,真正做到随心所欲。事实上,Stata的ado文件(高级统计部分)都是用Stata自己的语言编写的。 Stata其统计分析能力远远超过了SPSS,在许多方面也超过了SAS!由于Stata在分析时是将数据全部读入内存,在计算全部完成后才和磁盘交换数据,因此计算速度极快(一般来说, SAS的运算速度要比SPSS至少快一个数量级,而Stata的某些模块和执行同样功能的SAS模块比,其速度又比SAS快将近一个数量级!)Stata也是采用命令行方式来操作,但使用上远比SAS简单。其生存数据分析、纵向数据(重复测量数据)分析等模块的功能甚至超过了SAS。用Stata绘制的统计图形相当精美,很有特色。

4.1导入数据

4.2数据的描述性统计

4.2.1定量数据

4.2.2定性数据

基本统计信息

  • Source: 数据来源的说明。
  • SS (Sum of Squares): 平方和,分为模型平方和(Model SS)、残差平方和(Residual SS)和总平方和(Total SS)。这些值用于计算模型的拟合优度。
  • df (Degrees of Freedom): 自由度,表示在估计统计量时可以自由变化的值的数量。
  • MS (Mean Square): 均方,是平方和除以自由度的结果。
  • Number of obs: 观测值的数量,这里是846个。
  • F(2, 843): F统计量,用于检验模型中所有自变量(团购价元和商品毛重)作为一个整体对评价量是否有显著影响。括号中的2和843分别代表模型中的自变量数量和残差自由度。
  • Prob > F: F统计量的P值,用于判断模型是否显著。这里P值接近于0(0.0000),表示模型非常显著。
  • R-squared 和 Adj R-squared: 决定系数和调整后的决定系数,用于衡量模型对数据的拟合程度。R-squared越高,模型拟合度越好,但会受到自变量数量的影响,因此常用Adj R-squared进行校正。
  • Root MSE (Root Mean Square Error): 均方根误差,衡量模型预测值与实际值之间的差异。

回归系数

  • Coef. (Coefficient): 回归系数,表示自变量对因变量的影响大小。例如,团购价元的系数为-35.39873,表示在其他条件不变的情况下,团购价每增加1元,评价量平均减少35.39873分(或评级)。商品毛重的系数为正,但不显著(P值>0.05)。
  • Std. Err. (Standard Error): 标准误,表示回归系数的估计误差。
  • t: t统计量,用于检验每个回归系数是否显著不为0。
  • P>|t|: P值,用于判断回归系数是否显著。团购价元的P值接近于0,表示其系数显著不为0;商品毛重的P值大于0.05,表示其系数不显著。
  • [95% Conf. Interval]: 95%置信区间,表示回归系数真实值的可能范围

4.3回归语句 

4.4加入虚拟变量回归

为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1

拟合优度R^{2}较低怎么办 :

 4.5标准化回归系数

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

4.6代码

代码全部摘自清风老师

// 按键盘上的PageUp可以使用上一次输入的代码(Matlab中是上箭头)
// 清除所有变量
clear
// 清屏 和 matlab的clc类似
cls 
// 导入数据(其实是我们直接在界面上粘贴过来的,我们用鼠标点界面导入更方便 本条请删除后再复制到论文中,如果评委老师看到了就知道这不是你写的了)
// import excel "C:\Users\hc_lzp\Desktop\数学建模视频录制\第7讲.多元回归分析\代码和例题数据\课堂中讲解的奶粉数据.xlsx", sheet("Sheet1") firstrow
import excel "课堂中讲解的奶粉数据.xlsx", sheet("Sheet1") firstrow
// 定量变量的描述性统计
summarize 团购价元 评价量 商品毛重kg
// 定性变量的频数分布,并得到相应字母开头的虚拟变量
tabulate 配方,gen(A)
tabulate 奶源产地 ,gen(B)
tabulate 国产或进口 ,gen(C)
tabulate 适用年龄岁 ,gen(D)
tabulate 包装单位 ,gen(E)
tabulate 分类 ,gen(F)
tabulate 段位 ,gen(G)
// 下面进行回归
regress 评价量 团购价元 商品毛重kg
// 下面的语句可帮助我们把回归结果保存在Word文档中
// 在使用之前需要运行下面这个代码来安装下这个功能包(运行一次之后就可以注释掉了)
// ssc install reg2docx, all replace
// 如果安装出现connection timed out的错误,可以尝试换成手机热点联网,如果手机热点也不能下载,就不用这个命令吧,可以自己做一个回归结果表,如果觉得麻烦就直接把回归结果截图。
est store m1  //储存为m1模型
reg2docx m1 using m1.docx, replace
// *** p<0.01  ** p<0.05 * p<0.1

// Stata会自动剔除多重共线性的变量
regress 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4
est store m2
reg2docx m2 using m2.docx, replace

// 得到标准化回归系数
regress 评价量 团购价元 商品毛重kg, b 

5扰动项

扰动项要满足的条件

同方差(Homoskedasticity)

同方差指的是在给定解释变量X的条件下,扰动项ε的方差是一个常数,不随X的变化而变化。具体来说,对于任意的X值,扰动项ε的方差都等于σ²。

无自相关(No Autocorrelation)

无自相关指的是不同观测值之间的扰动项是相互独立的,即它们之间不存在线性关系。

5.1异方差

5.1.1残差图检验异方差

5.1.2BP检验

5.1.3怀特检验

5.1.4处理方法

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

6多重共线性

6.1检验

6.2处理方法

如果发现存在多重共线性,可以采取以下处理方法。
(1) 如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效应仍可以较准确地估计。
(2) 如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著; 如果没有多重共线性,则只会更加显著。
(3)  如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导 致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对 模型设定进行修改。

7逐步回归分析

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

 Stata实现逐步回归法:

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

8代码 

代码全部摘自清风老师

// 按键盘上的PageUp可以使用上一次输入的代码(Matlab中是上箭头)
// 清除所有变量
clear
// 清屏 和 matlab的clc类似
cls 
// 导入数据(其实是我们直接在界面上粘贴过来的,我们用鼠标点界面导入更方便 本条请删除后再复制到论文中,如果评委老师看到了就知道这不是你写的了)
// import excel "C:\Users\hc_lzp\Desktop\数学建模视频录制\第7讲.多元回归分析\代码和例题数据\课堂中讲解的奶粉数据.xlsx", sheet("Sheet1") firstrow
import excel "课堂中讲解的奶粉数据.xlsx", sheet("Sheet1") firstrow
// 定量变量的描述性统计
summarize 团购价元 评价量 商品毛重kg
// 定性变量的频数分布,并得到相应字母开头的虚拟变量
tabulate 配方,gen(A)
tabulate 奶源产地 ,gen(B)
tabulate 国产或进口 ,gen(C)
tabulate 适用年龄岁 ,gen(D)
tabulate 包装单位 ,gen(E)
tabulate 分类 ,gen(F)
tabulate 段位 ,gen(G)
// 下面进行回归
regress 评价量 团购价元 商品毛重kg
// 下面的语句可帮助我们把回归结果保存在Word文档中
// 在使用之前需要运行下面这个代码来安装下这个功能包(运行一次之后就可以注释掉了)
// ssc install reg2docx, all replace
// 如果安装出现connection timed out的错误,可以尝试换成手机热点联网,如果手机热点也不能下载,就不用这个命令吧,可以自己做一个回归结果表,如果觉得麻烦就直接把回归结果截图。
est store m1  //储存为m1模型
reg2docx m1 using m1.docx, replace
// *** p<0.01  ** p<0.05 * p<0.1

// Stata会自动剔除多重共线性的变量
regress 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4
est store m2
reg2docx m2 using m2.docx, replace

// 得到标准化回归系数
regress 评价量 团购价元 商品毛重kg, b 

// 画出残差图
regress 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4
rvfplot 
// 残差与拟合值的散点图
graph export a1.png ,replace
// 残差与自变量团购价的散点图
rvpplot  团购价元
graph export a2.png ,replace

// 为什么评价量的拟合值会出现负数?
// 描述性统计并给出分位数对应的数值
summarize 评价量,d

// 作评价量的概率密度估计图
kdensity 评价量 
graph export a3.png ,replace

// 异方差BP检验
estat hettest ,rhs iid

// 异方差怀特检验
estat imtest,white

// 使用OLS + 稳健的标准误
regress 评价量 团购价元 商品毛重kg A1 A2 A3 B1 B2 B3 B4 B5 B6 B7 B8 B9 C1 C2 D1 D2 D3 D4 D5 E1 E2 E3 E4 F1 F2 G1 G2 G3 G4, r
est store m3
reg2docx m3 using m3.docx, replace

// 计算VIF
estat  vif

// 逐步回归(一定要注意完全多重共线性的影响)
// 向前逐步回归(后面的r表示稳健的标准误)
stepwise reg 评价量 团购价元 商品毛重kg A1 A3 B1 B2 B3 B4 B5 B6 B7 B9 C1 D1 D2 D3 D4 E1 E2 E3 F1 G1 G2 G3,  r pe(0.05)
// 向后逐步回归(后面的r表示稳健的标准误)
stepwise reg 评价量 团购价元 商品毛重kg A1 A3 B1 B2 B3 B4 B5 B6 B7 B9 C1 D1 D2 D3 D4 E1 E2 E3 F1 G1 G2 G3,  r pr(0.05)
// 向后逐步回归的同时使用标准化回归系数(在r后面跟上一个b即可)
stepwise reg 评价量 团购价元 商品毛重kg A1 A3 B1 B2 B3 B4 B5 B6 B7 B9 C1 D1 D2 D3 D4 E1 E2 E3 F1 G1 G2 G3,  r b pr(0.05)


// 补充语法 (大家不需要具体的去学Stata软件,掌握我课堂上教给大家的一些命令应对数学建模比赛就可以啦)
// 事实上大家学好Excel,学好后应对90%的数据预处理问题都能解决
// (1) 用已知变量生成新的变量 
generate lny = log(评价量)  
generate price_square = 团购价元 ^2
generate interaction_term = 团购价元*商品毛重kg

// (2) 修改变量名称,因为用中文命名变量名称有时候可能容易出现未知Bug
rename 团购价元 price

9总结

多元线性回归分析适用于解释或者预测问题,在建立对应的模型时候,扰动项要考虑异方差和多重共线性的问题,所以需要进行检验;当扰动项是球型扰动项之后,可以进行数据描述性统计以及回归分析,其中包括加入虚拟变量的回归分析和标准化回归等。在整个回归过程中可以使用两种逐步回归分析的方法,建议使用向后逐步回归。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值