回归模型——多元线性回归分析

个人学习笔记,课程为数学建模清风付费课程

目录

一、回归分析

1.1回归的思想

1.1.1 相关性

1.1.2Y

1.1.3X

1.2回归分析使命 

1.3回归分析分类

 二、数据

2.1数据的分类

2.1.1横截面数据

2.1.2时间序列数据

2.1.3面板数据

2.2不同数据的处理方式

2.2.1简述

2.3数据的收集 

三、一元线性回归

3.1引入

3.2对于线性的理解

3.3回归系数的解释 

3.4内生性

3.4.1探究

3.4.2内生性的蒙特卡罗模拟 

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

3.6回归系数的解释

3.7什么时候取对数?

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

3.8.1一元线性回归

3.8.2双对数模型

3.8.3半对数模型

3.8.4半对数模型

3.9特殊的自变量:虚拟变量X

3.10含有交互项的自变量 

四、Stata

4.1简介

4.2导入数据

4.3代码保存

4.4数据的描述性统计

4.3.1定量数据

4.3.2定性数据 

4.511个指标的总体情况介绍​编辑

4.6EXCEL数据透视表 

4.7Stata回归的语句 

4.8加入虚拟变量回归

4.9拟合优度R^2较低怎么办

4.9标准化回归系数 

4.10Stata标准化回归命令 

4.11代码 

五、扰动项

5.1扰动项要满足的条件

5.2异方差 

5.3检验异方差 

5.4拟合值出现负数的原因

5.5异方差的假设检验

5.6怀特检验 

5.7异方差的处理方法 

5.8使用OLS + 稳健的标准误 

六、多重共线性 

6.1简述

6.2检验多重共线性

6.3多重共线性处理方法 

6.4完全多重共线性的错误 

七、逐步回归分析 

7.1向前逐步回归Forward selection

7.2向后逐步回归Backward elimination 

7.3Stata实现逐步回归法 

7.4逐步回归的说明 

 八、完整代码



一、回归分析

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

1.1回归的思想

1.1.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.1.3X

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

1.2回归分析使命 

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

1.3回归分析分类

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

 二、数据

2.1数据的分类

2.1.1横截面数据

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

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

2.1.2时间序列数据

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

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

2.1.3面板数据

横截面数据与时间序列数据综合起来的一种数据资源。
例如:
2008‐2018 年,我国各省份 GDP 的数据。

2.2不同数据的处理方式

2.2.1简述

数据类型常见建模方法
横截面数据
多元线性回归
时间序列数据
移动平均、指数平滑、 ARIMA GARCH VAR 、协积
面板数据
固定效应和随机效应、静态面板和动态面板
       建模比赛中,前两种数据类型最常考到;面板数据较为复杂,是经管类学生在中级计量经济学中才会学到的模型。
       横截面数据往往可以使用回归来进行建模,我们通过回归可以得到自变量与因变量之间的相关关系以及自变量的重要程度。
       时间序列数据往往需要进行我们进行预测,时间序列模型的选择也很多,大家需要选择合适的模型对数据进行建模。

2.3数据的收集 

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

三、一元线性回归

3.1引入

 3.2对于线性的理解

3.3回归系数的解释 

可以看到,引入了新的自变量价格后,对回归系数的影响非常大!!!
原因:遗漏变量导致的内生性

3.4内生性

3.4.1探究

包含了所有与y相关,但未添加到回归模型中的变量
如果这些变量和我们已经添加的自变量相关,则存在内生性

3.4.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.5核心解释变量和控制变量 

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

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

3.6回归系数的解释

3.7什么时候取对数?

取对数意味着原被解释变量对解释变量的弹性,即百分比的变化而不是数值的变化;
目前,对于什么时候取对数还没有固定的规则,但是有一些经验法则:
(1)与市场价值相关的,例如,价格、销售额、工资等都可以取对数;
(2)以年度量的变量,如受教育年限、工作经历等通常不取对数;
(3)比例变量,如失业率、参与率等,两者均可;
(4)变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y);
取对数的好处: (1)减弱数据的异方差性(2)如果变量本身不符合正态分布,取了对数后 可能渐近服从正态分布( 3 )模型形式的需要,让模型具有经济学意义。

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

3.8.1一元线性回归

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

3.8.2双对数模型

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

3.8.3半对数模型

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

3.8.4半对数模型

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

3.9特殊的自变量:虚拟变量X

举例:

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

3.10含有交互项的自变量 

四、Stata

4.1简介

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

以这个题目为例:

4.2导入数据

文件 导入 – Excel表格 

4.3代码保存

4.4数据的描述性统计

4.3.1定量数据

summarize 变量 1 变量 2 ... 变量 n
(加粗的sum表示可以写为sum 变量 1 变量 2 ... 变量 n)

不要把结果直接截图放到论文中。

 应该选中表格后右键-复制表格,可以先复制到excel将表格变为三线表:

4.3.2定性数据 

tabulate 变量名 ,gen(A)
返回对应的这个变量的频率分布表,并生成对应的虚拟变量 ( A 开头 )

基本统计信息

  • 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.511个指标的总体情况介绍

4.6EXCEL数据透视表 

4.7Stata回归的语句 

regress y x1 x2 … xk
(默认使用的 OLS :普通最小二乘估计法)

4.8加入虚拟变量回归

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

4.9拟合优度R^2较低怎么办

1 )回归分为解释型回归和预测型回归。
预测型回归一般才会更看重 𝑅^2
解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可。
2 )可以对模型进行调整,例如对数据取对数或者平方后再进行回归。
3 )数据中可能有存在异常值或者数据的分布极度不均匀。
补充:关于拟合优度和调整后的拟合优度:
我们引入的自变量越多,拟合优度会变大。但我们倾向于使用调整后的拟合优度,如果新引入的自变量对SSE 的减少程度特别少,那么调整后的拟合优度反而会减小。

4.9标准化回归系数 

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

4.10Stata标准化回归命令 

regress y x1 x2 … xk,beta

1 )为什么常数项没有标准化回归系数?
常数的均值是其本身,经过标准化后变成了 0。
2 )为啥和之前的回归结果完全相同,除了多了最后那一列标准化回归系数?
对数据进行标准化处理不会影响回归系数的标准误,也不会影响显著性。

4.11代码 

// 按键盘上的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
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.1扰动项要满足的条件

同方差(Homoskedasticity):

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

无自相关(No Autocorrelation):

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

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

5.2异方差 

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

怎么解决异方差:

1 )使用 OLS +  稳健的标准误
2 )广义最小二乘估计法 GLS
原理:方差较小的数据包含的信息较多,我们可以给予信息量大的数据更大的权重(即方差较小的数据给予更大的权重)

 注意:这里的信息和熵权法里面确定权重时的信息不是一个意思。异方差这里出现的信息可以理解为对于模型的稳定程度所做的贡献,异方差是指各个扰动项的方差不相同,那么方差较大的扰动项破坏模型稳定性的程度就较大,我们就说它包含的信息量减少。而在熵权法中,方差越大,说明这个指标对于不同个体而言的变化程度就大,那么我们在评价时就不能轻易忽视这个变量。

5.3检验异方差 

在回归结束后运行命令:
rvfplot (画残差与拟合值的散点图)
rvpplot x ( 画残差与自变量 x 的散点图 )
// 画出残差图
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

 

5.4拟合值出现负数的原因

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

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

5.5异方差的假设检验

Stata 命令(在回归结束后使用):
estat hettest ,rhs iid

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

 BP检验的结果:

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

5.6怀特检验 

怀特检验原假设:不存在异方差
Stata 命令(在回归结束后使用):estat imtest,white

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

 

5.7异方差的处理方法 

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

Stock and Watson (2011)推荐,在大多数情况下应该使用“OLS + 稳健标准误”。 

5.8使用OLS + 稳健的标准误 

regress y x1 x2 … xk,robust

// 使用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

 

六、多重共线性 

6.1简述

6.2检验多重共线性

Stata 计算各自变量 VIF 的命令(在回归结束后使用):
estat vif

// 计算VIF
estat  vif

6.3多重共线性处理方法 

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

6.4完全多重共线性的错误 

七、逐步回归分析 

7.1向前逐步回归Forward selection

将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型。
( 缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了,但是,并没有将其及时从回归方程中剔除掉。)
// 向前逐步回归(后面的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)

 

7.2向后逐步回归Backward elimination 

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

7.3Stata实现逐步回归法 

向前逐步回归 Forward selection
stepwise regress y x1 x2 … xk, pe(#1)
pe(#1) specifies the significance level for addition to the model; terms with p<#1 are  eligible for addition(显著才加入模型中) .
向后逐步回归 Backward elimination
stepwise regress y x1 x2 … xk, pr(#2)
pr(#2)  specifies the significance level for removal from the model; terms with p>= #2  are eligible for removal(不显著就剔除出模型) .
如果你觉得筛选后的变量仍很多,你可以减小 #1 或者 #2
如果你觉得筛选后的变量太少了,你可以增加 #1 或者 #2
:
1 x1 x2 … xk 之间不能有完全多重共线性 ( regress 不同哦 )
2 )可以在后面再加参数 b r ,即标准化回归系数或稳健标准误

7.4逐步回归的说明 

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

 八、完整代码

// 按键盘上的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
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

 

  • 26
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值