最近在同学安利下入手华科老学长清风的数学建模课程,在这里记录下笔记。做笔记的目的主要是将较长的视频精简成短时间能看完的文档,方便日后复习用,也希望能给予后来者一点帮助。


数学建模学习笔记之解释型回归

  • 一、数据类型
  • 1.按数据含义分类
  • 2.按数据采集分类
  • 二、回归模型的构造
  • 三、变量考虑不全导致的内生性
  • 四、回归系数的解释
  • 五、回归模型及回归系数的显著性检验
  • 1.回归模型(整体)的联合显著性检验
  • 2.回归系数的逐个显著性检验
  • 六、拟合优度与标准化回归系数
  • 1.拟合优度 R 2 \mathbf{R}^{\mathbf{2}} R2
  • 2.标准化回归系数
  • 七、异方差
  • 1.异方差的现象
  • 2.检验异方差
  • 3.如何处理异方差
  • 八、多重共线性
  • 1.多重共线性现象
  • 2.检验多重共线性
  • 3.如何处理多重共线性
  • 九、逐步回归
  • 十、精简
  • 补充
  • [1]定性变量转成虚拟变量处理
  • [2]Stata拟合回归系数
  • [3]excel数据透视表的使用
  • [4]假如数据分布不均匀...



  研究自变量X和因变量Y之间的关系,可构造Y与X之间的函数表达式(有多种形式,具体取哪种形式需要凭经验或试探),称为回归模型,并根据样本数据,拟合出其系数。回归≈拟合。

一、数据类型

1.按数据含义分类

面板数据机器学习回归 面板数据用什么回归_拟合


  应该还有一种分类变量(又称定性变量),比如1表示男,0表示女。与定序变量的差别是,分类变量的数值仅表示分类,不表示排序。定性变量可以转化为虚拟变量,进而可以用0-1变量的方法来处理。面板数据机器学习回归 面板数据用什么回归_拟合_02

  不同类型的数据变量,需要用不同的方法计算其回归系数,

面板数据机器学习回归 面板数据用什么回归_拟合_03


  本文主要探讨OLS。本文的例题会出现0-1变量和定性变量,但简便起见统一用OLS来计算。

2.按数据采集分类

横截面数据: 在同一时间点采集的不同对象的数据。

时间序列数据: 同一对象在不同时间点观察采集到的数据。

面板数据: 不同时间点采集到的不同对象的数据,即以上两者的混合。

面板数据机器学习回归 面板数据用什么回归_数据_04

本文主要探讨横截面数据。

二、回归模型的构造

面板数据机器学习回归 面板数据用什么回归_方差_05

    其中面板数据机器学习回归 面板数据用什么回归_方差_06是常数。

    其中μ是扰动项,是无法观测但客观存在的。

    注意区分面板数据机器学习回归 面板数据用什么回归_数学建模_07面板数据机器学习回归 面板数据用什么回归_数学建模_08,面板数据机器学习回归 面板数据用什么回归_数学建模_07是残差,即 样本y值 减去拟合面板数据机器学习回归 面板数据用什么回归_数学建模_10值。

  注意,线性回归模型中的“线性”指的是系数线性,x本身可以非线性,比如

    面板数据机器学习回归 面板数据用什么回归_数据_11

  对于不同的问题和数据,要构造不同的模型。具体如何构造模型?需要根据经验和实际情况而定,有时甚至要靠试探和猜测。通常对于数学建模的题,不会涉及到太复杂的模型,一般x都取一次项就够了,最多再对某些x取个对数。

面板数据机器学习回归 面板数据用什么回归_方差_12

  其中第二点,变量如果符合正态分布,之后构造的t统计量及其显著性才有意义。

三、变量考虑不全导致的内生性

面板数据机器学习回归 面板数据用什么回归_方差_05
  理想情况下,所有的自变量都已经考虑进该模型里面,扰动项μ应是完全随机的、且与x无关的。
  但由于实际问题的复杂性,有时候很可能无法把所有变量都考虑到,导致μ中包含有与x有关的项。这种情况会导致回归系数计算不准确。μ与某个xi的相关性越强,xi的回归系数ki就越不准确。这称为内生性
  如果我们只需要了解x1与y的关系,我们就希望x1的回归系数尽可能准确,这时候称x1为核心解释变量。此时,就需要尽可能把与x1有关的其他变量(称为控制变量)都加入到模型中来。假设控制变量x2、x3与x1十分相关,那么它们就必须考虑到模型中来,否则x1的系数会有很大偏差。
  但反过来说,只要与x1相关性很大的控制变量x2、x3都加入到模型中了,那至少x1系数的准确性就有保证了,可以不去关心x2、x3的系数是否准确。扰动项中可能还有与x2、x3相关密切的变量x4没考虑进来导致k2、k3有很大偏差,但我们只关心k1。(问:与x2、x3有关的变量x4,难道不也与x1有关吗?答:x4与x2、x3相关密切,但与x1可能相关性就比较小了,就不会对k1造成太大影响。)

四、回归系数的解释

构造出回归模型后,把模型和样本数据丢入软件中,即可拟合出回归系数。面板数据机器学习回归 面板数据用什么回归_数据_14
接下来要分析各回归系数的含义。这里只考虑x的线性和对数模型。证明略。
1.一元线性回归 面板数据机器学习回归 面板数据用什么回归_面板数据机器学习回归_15
  x每增加一个单位,y平均变化b个单位。
2.双对数模型 面板数据机器学习回归 面板数据用什么回归_数据_16
  x每增加1%,y平均变化b%.
3.x对数模型 面板数据机器学习回归 面板数据用什么回归_方差_17
  x每增加1%,y平均变化b/100个单位。
4.y对数模型 面板数据机器学习回归 面板数据用什么回归_数学建模_18
  x每增加1个单位,y平均变化(100b)%

交互项的回归系数解释

面板数据机器学习回归 面板数据用什么回归_方差_19


虚拟变量的回归系数解释见补充[1]。

五、回归模型及回归系数的显著性检验

1.回归模型(整体)的联合显著性检验

面板数据机器学习回归 面板数据用什么回归_数学建模_20所有回归系数都不显著异于0. 面板数据机器学习回归 面板数据用什么回归_数学建模_21至少有一个回归系数显著异于0.
  H0下可构造出统计量服从F分布(具体如何构造统计量、F分布是多少此处就不说了)。
  软件在拟合回归系数时,会自动帮忙把联合显著性检验对应的F分布值及其p值算出来。如果p值<0.05,说明至少有一个回归系数显著异于0,即这个回归模型是可以用的。

2.回归系数的逐个显著性检验

面板数据机器学习回归 面板数据用什么回归_数学建模_20某个回归系数都不显著异于0. 面板数据机器学习回归 面板数据用什么回归_数学建模_21某个回归系数显著异于0.
  对所有变量的回归系数都作上述检验。具体到每一个变量,如果该变量服从正态分布(一般都假设变量是服从正态分布的。如果实际不是,可以取个对数试试。如果还不是,则算出来的p值无意义)且满足H0,则可构造出统计量服从t分布。
  软件会自动帮忙把各个变量的显著性检验对应的t值及其p值算出来。(t值就是回归系数/标准误,证明略。)如果p值<0.05,说明该回归系数有意义。否则回归系数无意义,可以不用看了。
  注意,某个变量的回归系数无意义(不显著异于0),是否意味着这个变量可以从模型中除去呢?答案是不可以,前面讲内生性的时候解释过这个问题了。

六、拟合优度与标准化回归系数

1.拟合优度面板数据机器学习回归 面板数据用什么回归_拟合_24

面板数据机器学习回归 面板数据用什么回归_数学建模_25大,但本文所述的解释性回归不太看重面板数据机器学习回归 面板数据用什么回归_数学建模_25。(相对地,预测型回归看重显著性,而解释型回归不太看重显著性。)

  如果实在嫌面板数据机器学习回归 面板数据用什么回归_数学建模_25太低看不过去,有几个trick可以提高面板数据机器学习回归 面板数据用什么回归_数学建模_25 : (1)对模型进行调整,比如加入对数项、平方项、交互项等。 (2)检查数据中是否有异常值或数据分布不均匀现象。

  注意,引入自变量越多,面板数据机器学习回归 面板数据用什么回归_数学建模_25会越大,但这样增大面板数据机器学习回归 面板数据用什么回归_数学建模_25的方式是无意义的。因此,在自变量变多的时候,我们需要改变面板数据机器学习回归 面板数据用什么回归_数学建模_25的计算公式,故引入调整拟合优度的概念

面板数据机器学习回归 面板数据用什么回归_数据_32


  这样,如果新引入的自变量对SSE的减少程度很少,那么调整拟合优度的值反而会变小。

2.标准化回归系数

  对数据进行标准化后再进行回归,可以得到各自变量对于因变量的影响程度大小。标准化回归系数越大,说明对因变量的影响越大(注意只看显著的系数)。
  注意,标准化的回归系数不能用于前面第四节的回归系数解释。

七、异方差

1.异方差的现象

面板数据机器学习回归 面板数据用什么回归_数据_33


  在之前的回归分析中,我们都假设扰动项是同方差(各个面板数据机器学习回归 面板数据用什么回归_数据_34的方差都相同,面板数据机器学习回归 面板数据用什么回归_数据_35)和无自相关(面板数据机器学习回归 面板数据用什么回归_数据_36)的。但实际上,横截面数据容易出现异方差(因为各个因变量本身有所不同),时间序列数据容易出现自相关(前一刻和后一刻的同一个因变量显然是有所相关的)。本文只讨论异方差的问题。

  如果扰动项存在异方差,会导致以下问题,

面板数据机器学习回归 面板数据用什么回归_拟合_37

2.检验异方差

(1)看图法

  异方差其实就是采集到的数据或数据本身分布不完美。作出图来,如果能看到数据分布图如上所示,就说明存在异方差。

面板数据机器学习回归 面板数据用什么回归_方差_38


  注意stata要求在回归结束后才能进行异方差检验。

(2)假设检验法
  回归结束后,输入 estat hettest , rhs iid 或 estat imtest , white即可进行BP检验 或 怀特检验(原假设为不存在异方差)。看p值,若p值<0.05则检验通过,即不存在异方差。

3.如何处理异方差

面板数据机器学习回归 面板数据用什么回归_面板数据机器学习回归_39

  在stata中,使用 regress y x1 x2 … xk,robust 即可实现OLS+稳健标准误。结果解读与之前普通OLS是一样的,只不过标准误的计算方式变了。
  一般来说,先试探性地回归一下,回归完之后做异方差检验。如果存在异方差,则需要重新回归,改用稳健标准误。

八、多重共线性

1.多重共线性现象

面板数据机器学习回归 面板数据用什么回归_方差_40中,面板数据机器学习回归 面板数据用什么回归_拟合_41本来是表示B不变、A增大一单位时,Y的变化量;但现在显然无法做到固定B只变A了,也就是说,面板数据机器学习回归 面板数据用什么回归_拟合_41这个系数的值已经完全没有意义了。除了值无意义之外,显著性可能也会受到影响。
  因此,多重共线性的“症状”有: (1)使得某些系数值不合理,或显著性受到影响。 (2)增减某个变量,导致其余变量的系数发生极大变化,说明这个新增变量可能与已有变量存在多重共线性。(当然,也可能是因为内生性等其他原因。)

2.检验多重共线性

  思路:构造一个量,叫方差膨胀因子VIF,VIF越大表示这个自变量与其他自变量相关性越大。VIF>10说明存在多重共线性。

面板数据机器学习回归 面板数据用什么回归_拟合_43

3.如何处理多重共线性

面板数据机器学习回归 面板数据用什么回归_方差_44

  关于第三点,如果实在有多重共线性,又怕删除了会导致内生性,怎么办呢?优先剔除多重共线性。严格的经济学类论文需要考虑内生性,但数模要求没那么严格,可以允许少量内生性。

九、逐步回归

  如果一个问题比较简单,自变量比较少,还可以人为判断要加入哪些自变量。但要是问题很复杂呢?一种方法是每种组合方案都试一下,但这显然是很慢的。目前最常用的方法是逐步回归。

面板数据机器学习回归 面板数据用什么回归_面板数据机器学习回归_45

向前逐步回归 stepwise regress y x1 x2 … xk, pe(#1)
    pe(#1)表示,某个自变量的相关性检验p值<#1时加入该自变量。
  向后逐步回归 stepwise regress y x1 x2 … xk, pr(#2)
    pe(#2)表示,某个自变量的相关性检验p值>#2时剔除该自变量
  减小#1、增大#2,可以提高筛选门槛,减少自变量数量。反之同理。
  要注意的是,与regress不同(regress会自动剔除完全多重共线性(线性相关)的变量),stepwise
regress不能自动剔除完全多重共线性变量。
  上面的代码后面也可以再加参数b和r,即标准化回归系数和稳健标准误。
  还要注意,逐步回归只能筛选出单自变量项,无法考虑到对数项、平方项、交互项等,这些项还是得自己看情况适当加。

十、精简

吐槽:这节内容真多,看得我头晕脑胀,但笔记做完之后发现,实际上操作起来就那么几个步骤。如果不关心其后原理,只需要记住这几个步骤就可以了。
1.导入数据到stata。
2.构造一个回归模型(目测、试探性增减变量等),并regress。如果目测构造不出来,用逐步回归step regress。
3.对于已经选好的自变量,检验并剔除多重共线性,调用estat vif 。VIF>10的变量说明存在多重共线性。
4.总体相关性检验(看输出结果中的Prob > F,即p值),如果未通过,则需重建模型,回到第2步。
5.异方差检验(estat hettest,rhs iid或estat imtest,white)。如果未通过,则需回到第2步,改用稳健标准误 regress XXX,r。
6.回归系数解释。

补充

[1]定性变量转成虚拟变量处理

面板数据机器学习回归 面板数据用什么回归_拟合_46,面板数据机器学习回归 面板数据用什么回归_数据_47表示男性,面板数据机器学习回归 面板数据用什么回归_数据_48表示女性。
  回归模型工资 面板数据机器学习回归 面板数据用什么回归_方差_05,用软件求出面板数据机器学习回归 面板数据用什么回归_拟合_41,则面板数据机器学习回归 面板数据用什么回归_拟合_41表示相对于女性,男性的工资平均是多少(即男性的工资比女性平均高多少)。
证明:固定其他变量为常数,则
  面板数据机器学习回归 面板数据用什么回归_数学建模_52
  面板数据机器学习回归 面板数据用什么回归_拟合_53
  面板数据机器学习回归 面板数据用什么回归_拟合_54
即其他变量固定的情况下,男性的平均工资比女性的平均工资高面板数据机器学习回归 面板数据用什么回归_拟合_41

  如果定性变量有多分类,假设分类数为n,则选定其中一个为基准量,对其他量构造n-1个虚拟变量。求出来各虚拟变量对应的系数,此系数表示某分类相较于基准分类的相对y值。
  比如班级,分为A班、B班、C班、D班四个班,那就构造三个虚拟变量面板数据机器学习回归 面板数据用什么回归_数据_56,以D班为基准量(也可以选其他班为基准),面板数据机器学习回归 面板数据用什么回归_数据_56分别表示某学生是否为A班、B班、C班。假设某个学生是B班的,那么它的原始数据是 班级=B班,而它的虚拟数据是 [面板数据机器学习回归 面板数据用什么回归_数据_56]=[0,1,0] (有点像one-hot变量)。
  回归模型 面板数据机器学习回归 面板数据用什么回归_方差_59,用软件分别求出面板数据机器学习回归 面板数据用什么回归_数学建模_60,这三个系数就分别表示A班/B班/C班的平均y值比D班高多少。

  为什么不对n个分类构造n个虚拟变量呢?因为n-1个虚拟变量就足够表示一个样本的分类了,构造n个虚拟变量是多余的。如果n-1个虚拟变量全是0,就表示该样本属于基准分类。从数学上来讲,引入n个虚拟变量会导致完全多重共线性问题的发生,从而导致回归系数计算不准确甚至计算不出来。(有点类似于,n个列向量组成的一个矩阵,如果这n个列向量存在线性相关的,会导致矩阵的秩不为n,使得矩阵不可逆。)(回归系数的计算就会用到矩阵,因此也会出现类似问题。具体数学内容这里就不涉及了。)

[2]Stata拟合回归系数

  先在excel中整理好数据。(Stata拟合回归系数的代码默认每个自变量是一次项。如果有对数项、交互项等,先在excel里面预处理好,再把预处理后的数据当作一个自变量导进Stata.)

  导入excel数据到Stata。

  对于定性变量的处理: tabulate 定性变量名,gen(虚拟变量名)。该代码会返回定性变量中各分类的样本数,并对每个样本创建对应其分类的虚拟变量和虚拟数据。(SPSS也可以创建虚拟变量,见9.1节。)

面板数据机器学习回归 面板数据用什么回归_方差_61


  拟合回归系数: regress y x1 x2 … xn(,beta)。该代码会视回归模型为 面板数据机器学习回归 面板数据用什么回归_面板数据机器学习回归_62,并根据样本数据对回归系数k进行拟合,并会在拟合完之后评估该模型的拟合优度和显著性。beta表示标准化。

面板数据机器学习回归 面板数据用什么回归_方差_63

  先看总体检验,即红框,第二行(p值)<0.05说明总体检验通过,这才能继续往下看。(如果没通过,说明模型有问题,需要更改模型。)
  接着看下面那张表,第一列是回归系数,第二列是标准误,第三列是用于假设检验的t检验的t值(t=回归系数/标准误),第四列是假设检验的p值,第五列是置信区间(置信区间最好不要包含0点,否则回归系数就不能说是显著异于0的了)。

[3]excel数据透视表的使用

数据透视表可以方便地计算某数据出现的百分比,方便地分组统计
比如商场商品统计数据中,有Price一列,
打开数据透视表,
把Price拖进“行”中,作为行标签,假设有三个价格:¥1,¥2,¥3
把Price拖进“列”中,这时会有多个选项。
  如果选【计数:Price】,就会统计¥2的商品有多少个。(即计数Price为¥2的有多少行)
  如果选【求和:Price】,就会统计把所有的¥2的商品买下来需要多少钱。(即把¥2所在行对应的所有Price求和)
这里是行列选同一标签,理解起来有点奇怪。行列可以选不同标签,这时候用起来就会很自然了。

[4]假如数据分布不均匀…

在对商品销售量进行回归的时候,发现拟合值出现了负数(按理说销售量不会出现负数),这可能是因为数据分布不均匀导致的。

  下面是观察某个自变量的分布。可以看到,评价量这个自变量分布极其不均匀。(左图看前两列即可,第三列没啥用。右图kdensity x 作出x的概率密度分布图)

面板数据机器学习回归 面板数据用什么回归_数据_64



片尾广告
  清风数学建模课程,B站上可以免费看前几节,讲的挺好的,还在不断更新。最近更新了许多内容,我还没来得及看,想进一步了解的可以自己去看看。