数学建模7 多元线性回归分析
作者:互联网
1、回归思想
相关性(不是因果性)
Y:因变量,常常是我们需要研究的核心变量,分为连续值型,0-1型,定序变量,计数变量,生存变量
X:自变量(解释变量)
回归分析:研究x和y之间的相关性的分析,尝试去解释Y的形成机制,进而达到通过x去预测y的目的。
回归分析的目的:
1.变量选择,识别重要变量(逐步回归法)
2. 正相关还是副相关?
3. 不同变量的重要性(估计权重)
2、回归分析分类
3、线性回归
1、数据的分类
2、数据的收集
4、一元线性回归
1、一元线性
对于线性的理解:并不要求初始模型成上述严格线性关系,自变量和因变量可通过变量变换转化成线性模型。
2、回归系数的解释
1.内生性:误差项u和所有的自变量x均相关,导致回归系数估计不准确,不满足无偏和一致性
2.当加入新的自变量后,对回归系数影响非常大。(内生性)
3. 内生性的蒙特卡罗模拟
蒙特卡罗模拟
%% 蒙特卡洛模拟:内生性会造成回归系数的巨大误差
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这个随机数
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 = x2 + u; % 因为我们忽略了x2,所以扰动项要加上x2
r = corrcoef(x1,u); % 2*2的相关系数矩阵
R(i) = r(2,1);
end
plot(R,K,'*')
xlabel("x_1和u'的相关系数")
ylabel("k的估计值")
4.核心解释变量和控制变量:在实际应用中,我们只要保证核心解释变量与u不相关即可
回归系数:在控制其他自变量不变的情况下,x每增加一个单位,对y造成的变化,可以用偏导数来定义
3、取对数
取对数意味着原被解释变量对解释变量的弹性,即百分比的变化而不是数值的变化; 目前,对于什么时候取对数还没有固定的规则,但是有一些经验法则:
(1)与市场价值相关的,例如,价格、销售额、工资等都可以取对数;
(2)以年度量的变量,如受教育年限、工作经历等通常不取对数;
(3)比例变量,如失业率、参与率等,两者均可;
(4)变量取值必须是非负数,如果包含0,则可以对y取对数ln(1+y);
取对数的好处
(1)减弱数据的异方差性。
(2)如果变量本身不符合正态分布,取了对数后可能渐近服从正态分布。
(3)模型形式的需要,让模型具有经济学意义。
4、四类模型回归系数的解释
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20200204124234885.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzQ0NDY4Nw==,size_16,color_FFFFFF,t_不变 70)
含有虚拟变量:为了避免完全多重共线性的影响,引入虚拟变量的个数一般是分类数减1。
含有交互自变量:
5、利用stata软件进行回归分析
1.导入数据
2.数据的描述性统计,定量数据 summarize, 定性 tabulate
3. 回归语句 regress
4. 加入虚拟变量回归
5. 标准化回归系数 regress ,b
代码如下:
// 清除所有变量
clear
// 清屏 和 matlab的clc类似
cls
import excel "/Users/tian.e.y/Downloads/A01所有课件/第1-14讲和番外篇课件和代码(12月26日修订版本)/第7讲.多元回归分析/代码和例题数据/课堂中讲解的奶粉数据.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
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.如果扰动项存在异方差:
(1)OLS估计出来的回归系数是无偏、一致的。
(2)假设检验无法使用(构造的统计量失效了)。
(3)OLS估计量不再是最优线性无偏估计量(BLUE)。
2.怎么解决异方差:
(1)使用OLS + 稳健的标准误
(2)广义最小二乘估计法GLS
原理:方差较小的数据包含的信息较多,我们可以给予信息量大的数据更大的权 重(即方差较小的数据给予更大的权重)
// 画出残差图
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
// 补充语法 (大家不需要具体的去学Stata软件,掌握我课堂上教给大家的一些命令应对数学建模比赛就可以啦)
// 事实上大家学好Excel,学好后应对90%的数据预处理问题都能解决
// (1) 用已知变量生成新的变量
generate lny = log(评价量)
generate price_square = 团购价元 ^2
generate interaction_term = 团购价元*商品毛重kg
// (2) 修改变量名称,因为用中文命名变量名称有时候可能容易出现未知Bug
rename 团购价元 price
3.异方差假设检验(回归之前)
bp检验
// 异方差BP检验
estat hettest ,rhs iid
怀特检验(常用)
// 异方差怀特检验
estat imtest,white
4.解决异方差
广义最小二乘法GLS
原理:方差较大的数据包含的信息较少,我们可以给予信息量大的数据(即方差 较小的数据更大的权重)
缺点:我们不知道扰动项真实的协方差矩阵,因此我们只能用样本数据来估计, 这样得到的结果不稳健,存在偶然性。
Stock and Watson (2011)推荐,在大多数情况下应该使用“OLS + 稳健标准误”。
使用OLS + 稳健的标准误
如果发现存在异方差,一 种处理方法是,仍然进行OLS 回归,但使用稳健标 准误。这是最简单,也是目前通用的方法。只要样本容量较大,即使在异方差的 情况下,若使用稳健标准误,则所 有参数估计、假设检验均可照常进行。换言之, 只要使用了稳健标准误,就可以与异方差“和平共处”了。
// 使用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
6、多重共线性
1、检验多重共线性
计算自变量VIF的命令(在回归结束后使用)
// 计算VIF
estat vif
vif>10,存在多重共线性。
如果发现存在多重共线性,可以采取以下处理方法。
(1)如果不关心具体的回归系数,而只关心整个方程预测被解释变量的能力,则 通常可以 不必理会多重共线性(假设你的整个方程是显著的)。这是因为,多 重共线性的主要后果是使得对单个变量的贡献估计不准,但所有变量的整体效 应仍可以较准确地估计。
(2)如果关心具体的回归系数,但多重共线性并不影响所关心变量的显著性,那 么也可以不必理会。即使在有方差膨胀的情况下,这些系数依然显著;如果没有 多重共线性,则只会更加显著。
(3) 如果多重共线性影响到所关心变量的显著性,则需要增大样本容量,剔除导 致严重共线性的变量(不要轻易删除哦,因为可能会有内生性的影响),或对 模型设定进行修改。(删除)
7、逐步回归
1、向前逐步回归
将自变量逐个引入模型,每引入一个自变量后都要进行检验,显著时才加入回归模型。 (缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了, 但是,并没有将其及时从回归方程中剔除掉。)
2、向后逐步回归
与向前逐步回归相反,先将所有变量均放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的 变异是否有显著变化,之后将最没有解释力的那个自变量剔除;此过程不断迭代, 直到没有自变量符合剔除的条件。(缺点:一开始把全部变量都引入回归方程, 这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少 一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了)
// 逐步回归(一定要注意完全多重共线性的影响)
// 向前逐步回归
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)
// 向后逐步回归
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)
3、逐步回归法
向前逐步回归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,即标准化回归系数或稳健标准误
标签:共线性,变量,方差,建模,多元,线性,x1,回归系数,自变量 来源: https://blog.csdn.net/weixin_43444687/article/details/104159000