多元回归分析

来源:数学建模清风学习内容整理


文章目录

  • 回归的定义
    • 01 什么是回归?
    • 02 回归的分类
    • 03 数据
  • 线性回归
    • 回归系数
    • 虚拟变量
  • 回归实例
    • 01 题目
    • 02 描述性统计
    • 03 Stata回归
    • 04 标准化回归系数
    • 05 Stata代码
  • 误差
    • 扰动项
    • 检验异方差
    • 处理异方差
    • 检验多重共线性
    • 多重共线性处理
  • lasso回归和岭回归
    • 01 原理
    • 02 Stata处理lasso回归
    • 03 何时用lasso回归?


回归的定义


01 什么是回归?

  • 回归分析的任务就是,通过研究X和Y的相关关系,尝试去解释Y的形
    成机制,进而达到通过X去预测Y的目的。
  • 回归 = X & Y 的相关性

多元回归分析_第1张图片多元回归分析_第2张图片

多元回归分析_第3张图片

多元回归分析_第4张图片


02 回归的分类

多元回归分析_第5张图片


03 数据

  • 数据类型分为:横截面数据时间序列数据面板数据
    多元回归分析_第6张图片
    多元回归分析_第7张图片
    多元回归分析_第8张图片
    多元回归分析_第9张图片

数据资源网站:

  • 知乎问答汇总
  • 大数据导航
  • 人大经济论坛 (微观数据)
  • 数据导航
  • 虫部落-快搜
  • 也可以自学python和八爪鱼爬取

线性回归

多元回归分析_第10张图片
多元回归分析_第11张图片

回归系数

多元回归分析_第12张图片

多元回归分析_第13张图片

多元回归分析_第14张图片

%% 蒙特卡洛模拟:内生性会造成回归系数的巨大误差

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的估计值')

多元回归分析_第15张图片
多元回归分析_第16张图片

多元回归分析_第17张图片
多元回归分析_第18张图片

多元回归分析_第19张图片

虚拟变量

多元回归分析_第20张图片

多元回归分析_第21张图片

多元回归分析_第22张图片

多元回归分析_第23张图片

多元回归分析_第24张图片


回归实例


01 题目

多元回归分析_第25张图片
多元回归分析_第26张图片

  • 利用Stata软件进行数据处理和回归分析

多元回归分析_第27张图片
在这里插入图片描述

多元回归分析_第28张图片


02 描述性统计

  • 描述性统计也可以用Excel里的数据分析完成
    多元回归分析_第29张图片

多元回归分析_第30张图片
多元回归分析_第31张图片


03 Stata回归

多元回归分析_第32张图片

多元回归分析_第33张图片
多元回归分析_第34张图片


04 标准化回归系数

多元回归分析_第35张图片

  • 要找出哪个影响因素影响力最大,比较标准化回归系数即可
    多元回归分析_第36张图片

05 Stata代码

// 按键盘上的PageUp可以使用上一次输入的代码(Matleb中是上箭头)
// 清除所有变量
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)


// 补充语法
// 事实上大家学好Excel,学好后应对90%的数据预处理问题都能解决
// (1) 用已知变量生成新的变量 
generate lny = log(评价量)  
generate price_square = 团购价元 ^2
generate interaction_term = 团购价元*商品毛重kg

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

// 注意:代码文件仅供参考,一定不要直接用于自己的数模论文中
// 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭

注意:

  1. 数据不要归一化处理,不然回归系数不好解释;

  2. 置信区间如果包含原点0,结果不满意,越少包含零点越好;

  3. 不要引入太多影响因素(自变量),不然不好解释。解释性回归中解释不清楚是大忌;解释性回归最好不要有高次模型;

  4. 描述统计,回归系数、显著性、置信区间 要有;


误差


扰动项

多元回归分析_第37张图片


检验异方差

多元回归分析_第38张图片
多元回归分析_第39张图片

多元回归分析_第40张图片
多元回归分析_第41张图片
多元回归分析_第42张图片
多元回归分析_第43张图片


处理异方差

多元回归分析_第44张图片
多元回归分析_第45张图片


检验多重共线性


多元回归分析_第46张图片

多重共线性处理

多元回归分析_第47张图片
多元回归分析_第48张图片
多元回归分析_第49张图片
多元回归分析_第50张图片
多元回归分析_第51张图片
多元回归分析_第52张图片

多元回归分析_第53张图片


lasso回归和岭回归

  • lasso回归可以用来筛选变量,是逐步回归法的plus版本

01 原理

多元回归分析_第54张图片
多元回归分析_第55张图片
多元回归分析_第56张图片


02 Stata处理lasso回归

多元回归分析_第57张图片
多元回归分析_第58张图片
多元回归分析_第59张图片

  • stata代码
// 清空工作区数据
clear
// 安装lassopack命令,见课件
// findit lassopack   
// 导入数据,注意修改Excel文件的地址
import excel "C:\Users\hc_lzp\Desktop\岭回归和lasso回归\数据和拓展资料\棉花产量论文作业的数据.xlsx", sheet("data") firstrow
// 注意:这里自变量的量纲相同所以不用标准化,如果需要标准化,那么可以借助Matlab的zscore函数,或者直接使用SPSS(分析-描述统计-描述:在描述列表的方框左下角,看到“将标准化得分另存为变量(Z)之后点击打勾,然后确定。)
// Stata中也有相应的标准化变量的命令,不过一次只能标准化一个变量,例如: egen Y = std(单产)   这个代码就表示将单产标准化,得到的变量记为Y
cvlasso 单产 种子费 化肥费 农药费 机械费 灌溉费, lopt seed(520) //可以不断改变括号里的数字来找到最小λ

多元回归分析_第60张图片
多元回归分析_第61张图片


03 何时用lasso回归?

你可能感兴趣的:(数学建模,python,机器学习,数据挖掘)