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

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


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

一、数据类型

1.按数据含义分类

数据类型
  应该还有一种分类变量(又称定性变量),比如1表示男,0表示女。与定序变量的差别是,分类变量的数值仅表示分类,不表示排序。定性变量可以转化为虚拟变量,进而可以用0-1变量的方法来处理。 . [ 1 ] .^{[1]} .[1]
  不同类型的数据变量,需要用不同的方法计算其回归系数,
数据类型2
  本文主要探讨OLS。本文的例题会出现0-1变量和定性变量,但简便起见统一用OLS来计算。

2.按数据采集分类

横截面数据: 在同一时间点采集的不同对象的数据。
时间序列数据: 同一对象在不同时间点观察采集到的数据。
面板数据: 不同时间点采集到的不同对象的数据,即以上两者的混合。
数据类型3

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

二、回归模型的构造

  最常见的就是 y = k 1 x 1 + k 2 x 2 + … + k 0 + μ y = k_{1}x_{1} + k_{2}x_{2} + \ldots + k_{0} + \mu y=k1x1+k2x2++k0+μ
    其中 k 0 k_{0} k0是常数。
    其中μ是扰动项,是无法观测但客观存在的。
    注意区分 μ ^ \widehat{\mu} μ μ \mu μ, μ ^ \widehat{\mu} μ 是残差,即 样本y值 减去拟合 y ^ \widehat{y} y 值。
  注意,线性回归模型中的“线性”指的是系数线性,x本身可以非线性,比如
     y = k 1 x 1 2 + k 2 ln ⁡ x 2 + k 3 x 1 x 3 + … + μ y=k_{1}x_{1}^{2} + k_{2}\ln x_{2} + k_{3}x_{1}x_{3} + \ldots + \mu y=k1x12+k2lnx2+k3x1x3++μ
  对于不同的问题和数据,要构造不同的模型。具体如何构造模型?需要根据经验和实际情况而定,有时甚至要靠试探和猜测。通常对于数学建模的题,不会涉及到太复杂的模型,一般x都取一次项就够了,最多再对某些x取个对数。
取对数  其中第二点,变量如果符合正态分布,之后构造的t统计量及其显著性才有意义。

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

  考察回归模型 y = k 1 x 1 + k 2 x 2 + … + k 0 + μ y = k_{1}x_{1} + k_{2}x_{2} + \ldots + k_{0} + \mu y=k1x1+k2x2++k0+μ
  理想情况下,所有的自变量都已经考虑进该模型里面,扰动项μ应是完全随机的、且与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造成太大影响。)

四、回归系数的解释

构造出回归模型后,把模型和样本数据丢入软件中,即可拟合出回归系数。 . [ 2 ] .^{[2]} .[2]
接下来要分析各回归系数的含义。这里只考虑x的线性和对数模型。证明略。
1.一元线性回归 y = a + b x + μ y = a + bx + \mu y=a+bx+μ
  x每增加一个单位,y平均变化b个单位。
2.双对数模型 l n y = a + b l n x + μ lny = a + blnx + \mu lny=a+blnx+μ
  x每增加1%,y平均变化b%.
3.x对数模型 y = a + b l n x + μ y = a + blnx + \mu y=a+blnx+μ
  x每增加1%,y平均变化b/100个单位。
4.y对数模型 l n y = a + b x + μ lny = a + bx + \mu lny=a+bx+μ
  x每增加1个单位,y平均变化(100b)%

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

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

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

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

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

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

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

1.拟合优度 R 2 \mathbf{R}^{\mathbf{2}} R2

  回归分为预测性回归和解释性回归。预测性回归要求 R 2 R^{2} R2大,但本文所述的解释性回归不太看重 R 2 R^{2} R2。(相对地,预测型回归看重显著性,而解释型回归不太看重显著性。)
  如果实在嫌 R 2 R^{2} R2太低看不过去,有几个trick可以提高 R 2 R^{2} R2 : (1)对模型进行调整,比如加入对数项、平方项、交互项等。 (2)检查数据中是否有异常值或数据分布不均匀现象。
  注意,引入自变量越多, R 2 R^{2} R2会越大,但这样增大 R 2 R^{2} R2的方式是无意义的。因此,在自变量变多的时候,我们需要改变 R 2 R^{2} R2的计算公式,故引入调整拟合优度的概念
Rad
  这样,如果新引入的自变量对SSE的减少程度很少,那么调整拟合优度的值反而会变小。

2.标准化回归系数

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

七、异方差

1.异方差的现象

回归模型
  在之前的回归分析中,我们都假设扰动项是同方差(各个 μ i \mu_{i} μi的方差都相同, cov ( μ i , μ i ) = V a r ( μ i ) = σ 2 \text{cov}\left( \mu_{i},\mu_{i} \right) = Var\left( \mu_{i} \right) = \sigma^{2} cov(μi,μi)=Var(μi)=σ2)和无自相关( cov ( μ i , μ j ) = 0 \text{cov}\left( \mu_{i},\mu_{j} \right) = 0 cov(μi,μj)=0)的。但实际上,横截面数据容易出现异方差(因为各个因变量本身有所不同),时间序列数据容易出现自相关(前一刻和后一刻的同一个因变量显然是有所相关的)。本文只讨论异方差的问题。
  如果扰动项存在异方差,会导致以下问题,
异方差问题

2.检验异方差

(1)看图法
  异方差其实就是采集到的数据或数据本身分布不完美。作出图来,如果能看到数据分布图如上所示,就说明存在异方差。
看图法
  注意stata要求在回归结束后才能进行异方差检验。

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

3.如何处理异方差

处理异方差

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

八、多重共线性

1.多重共线性现象

  直观来讲,多重共线性的意思就是某个变量可以被其他变量线性表示,则这个变量就是多余的,不需要加入到回归模型中,加入了反而会引起问题。引起什么问题呢?假设一个极端情况,变量B恰好是变量A的倍数,那么模型 Y = k 1 A + k 2 B Y= k_{1}A + k_{2}B Y=k1A+k2B中, k 1 k_{1} k1本来是表示B不变、A增大一单位时,Y的变化量;但现在显然无法做到固定B只变A了,也就是说, k 1 k_{1} k1这个系数的值已经完全没有意义了。除了值无意义之外,显著性可能也会受到影响。
  因此,多重共线性的“症状”有: (1)使得某些系数值不合理,或显著性受到影响。 (2)增减某个变量,导致其余变量的系数发生极大变化,说明这个新增变量可能与已有变量存在多重共线性。(当然,也可能是因为内生性等其他原因。)

2.检验多重共线性

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

3.如何处理多重共线性

处理多重共线性

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

九、逐步回归

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

  向前逐步回归 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]定性变量转成虚拟变量处理

  例如,变量一号是性别,有男/女两种。那么构造一个虚拟变量 x 1 x_{1} x1, x 1 = 1 x_{1} = 1 x1=1表示男性, x 1 = 0 x_{1} = 0 x1=0表示女性。
  回归模型工资 y = k 1 x 1 + k 2 x 2 + … + k 0 + μ y = k_{1}x_{1} + k_{2}x_{2} + \ldots + k_{0} + \mu y=k1x1+k2x2++k0+μ,用软件求出 k 1 k_{1} k1,则 k 1 k_{1} k1表示相对于女性,男性的工资平均是多少(即男性的工资比女性平均高多少)。
证明:固定其他变量为常数,则
   E ( y ∣ x 1 = 1 , 其 他 x 固 定 ) = k 1 ⋅ 1 + C E(y|x_{1} = 1,其他x固定) = k_{1} \cdot 1 + C E(yx1=1,x)=k11+C
   E ( y ∣ x 1 = 0 , 其 他 x 固 定 ) = k 1 ⋅ 0 + C E(y|x_{1} = 0,其他x固定) = k_{1} \cdot 0 + C E(yx1=0,x)=k10+C
   E ( y ∣ x 1 = 1 , 其 他 x 固 定 ) − E ( y ∣ x 1 = 0 , 其 他 x 固 定 ) = k 1 E(y|x_{1} = 1,其他x固定) - E(y|x_{1} = 0,其他x固定) = k_{1} E(yx1=1,x)E(yx1=0,x)=k1
即其他变量固定的情况下,男性的平均工资比女性的平均工资高 k 1 k_{1} k1

  如果定性变量有多分类,假设分类数为n,则选定其中一个为基准量,对其他量构造n-1个虚拟变量。求出来各虚拟变量对应的系数,此系数表示某分类相较于基准分类的相对y值。
  比如班级,分为A班、B班、C班、D班四个班,那就构造三个虚拟变量 x 1 , x 2 , x 3 x_{1},x_{2},x_{3} x1,x2,x3,以D班为基准量(也可以选其他班为基准), x 1 , x 2 , x 3 x_{1},x_{2},x_{3} x1,x2,x3分别表示某学生是否为A班、B班、C班。假设某个学生是B班的,那么它的原始数据是 班级=B班,而它的虚拟数据是 [ x 1 , x 2 , x 3 x_{1},x_{2},x_{3} x1,x2,x3]=[0,1,0] (有点像one-hot变量)。
  回归模型 y = k 1 x 1 + k 2 x 2 + k 3 x 3 + … + k 0 + μ y = k_{1}x_{1} + k_{2}x_{2} + k_{3}x_{3} + \ldots + k_{0} + \mu y=k1x1+k2x2+k3x3++k0+μ,用软件分别求出 k 1 , k 2 , k 3 k_{1},k_{2},k_{3} k1,k2,k3,这三个系数就分别表示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节。)
定性变量处理
  拟合回归系数: regress y x1 x2 … xn(,beta)。该代码会视回归模型为 y = k 1 x 1 + k 2 x 2 + … + k n x n y = k_{1}x_{1} + k_{2}x_{2} + \ldots + k_{n}x_{n} y=k1x1+k2x2++knxn,并根据样本数据对回归系数k进行拟合,并会在拟合完之后评估该模型的拟合优度和显著性。beta表示标准化。
拟合结果

  先看总体检验,即红框,第二行(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的概率密度分布图)
数据分布不均匀


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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值