回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想解决。回归分析的任务就是,通过研究自变量X和Y之间的相关关系,尝试去解释Y的形成机制,进而达到通过X去预测Y的目的。

常见的回归有五类:线性回归,0-1回归,定序回归,计数回归和生存回归,其划分的依据是因变量Y的类型。

回归的思想

相关性

回归分析是研究的X与Y之间的相关性,而不是因果性,比如:统计数据表明:游泳死亡人数越多,雪糕卖的越多,那么就可以下结论:吃雪糕会增加游泳死亡风险吗?(因为吃雪糕,所以游泳死亡风险增加了),那显然不是对吧。所以,在绝大多数情况下,我们没有能力去探究严格的因果关系,所以就通过回归分析,研究相关关系

因变量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+,那这种数据就是截断的数据)(生存变量)

自变量X

Y是因变量,因为别人的改变而改变的变量,X是用来解释Y的相关变量,所以X被称为自变量,如在下面的例子中,被我用红框 框起来的就是自变量X:

回归分析的使命:

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

也就是说,回归可以帮助我们:识别重要变量、判断相关性方向和估计权重

一元线性回归

在开始多元线性回归之前,先来简单的介绍一下一元线性回归。

假设\(x\)是自变量\(y\)是因变量,且满足如下的线性关系:

$$
y_i=\beta _0+\beta _1x_i+\mu _i
$$

\(\beta _0\)和\(\beta _1\)为回归系数,\(\mu _i\)为无法观测且满足一定条件的扰动项,令预测值:

$$
\widehat{y_i}=\widehat{\beta _0}+\widehat{\beta _1}x_i
$$

其中:

$$
\widehat{\beta _0}, \widehat{\beta _1}=\underset{\beta _0,\beta _1}{arg\min}\left( \sum_{i=1}^n{\left( y_i-\widehat{y_i} \right) ^2} \right) =\underset{\beta _0,\beta _1}{arg\min}\left( \sum_{i=1}^n{\left( y_i-\widehat{\beta _0}-\widehat{\beta _1}x_i \right) ^2} \right)
$$

$$
\widehat{\beta _0},\widehat{\beta _1}=\underset{\beta _0,\beta _1}{arg\min}\left( \sum _{i=1}^n{\left( \widehat{\mu _i} \right) ^2} \right)
$$

我们称\(\widehat{\mu _i}=y_i-\widehat{\beta _0}-\widehat{\beta _1}x_i\)为残差

关于线性的理解

假设\(x\)是自变量,\(y\)是因变量,且满足如下的线性关系:

$$
y_i=\beta _0+\beta _1x_i+\mu _i
$$

当然,线性假定并不要求初始模型都呈严格的线性关系,自变量和因变量可以通过变量替换的方式转化成线性模型。

$$
y_i=\beta _0+\beta _1\ln x_i+\mu _i
\\
\ln y_i=\beta _0+\beta _1\ln x_i+\mu _i
\\
y_i=\beta _0+\beta _1x_i+\beta _2x_{i}^{2}+\mu _i
\\
y_i=\beta _0+\beta _1x_{1i}+\beta _2x_{2i}+\delta x_{1i}x_{2i}+\mu _i
$$

以上的式子其实都是线性方程,比如第一个式子,我们可以将\(\ln x_i\)替换成\(x_i\),这样,式子就变成线性方程了。

关于内生性的探究

假设我们的模型为:

$$
y=\beta _0+\beta _1x_1+\beta _2x_2+\cdots +\beta _kx_k+\mu
$$

其中\(\mu\)为我们无法观测,且满足一定条件的扰动项,如果满足误差项\(\mu\)和所有的自变量\(x\)均不相关,则称该回归模型具有外生性,当然,外生性是个好现象,如果误差项和自变量之间具有相关关系,则称该模型具有内生性,内生性会导致回归系数估计不准确,不满足无偏性和一致性。

核心解释变量和控制变量

无内生性要求所有解释变量(自变量)均与扰动项不相关,这个假定是非常强的,因为一般来说,解释变量都有很多,且需要保证他们全部外生,基本不可能,所以我们可以弱化此条件,将解释变量分为核心变量和控制变量两大类。

核心解释变量:我们所关心和感兴趣的变量,因此我们希望得到对其系数的一致估计。

控制变量:我们可能对于这些变量并无太大的兴趣,而之所以把它们放入回归方程,主要是为了控制住那些被解释变量有影响的遗漏因素。

在实际应用中,我们只要保证核心解释变量与扰动项不相关即可。

对于回归系数的解释:

一元线性回归:\(y=a+bx+\mu\),\(x\)每增加一个单位,\(y\)平均变化\(b\)个单位

双对数模型:\(\ln y=a+b\ln x+\mu\),\(x\)每增加1%,\(y\)平均变化b%

半对数模型:\(y=a+b\ln x+\mu\),\(x\)每增加1%,\(y\)平均变化b/100个单位

半对数模型:\(\ln y=a+bx+\mu\),\(x\)每增加1个单位,\(y\)平均变化(100b)%

特殊的变量:虚拟变量X

有时候,我们的自变量中会含有一些定性变量,如性别、地域等,例如:我们要研究性别对于工资的影响(性别歧视问题)

$$
y_i=\beta _0+\delta_0 Female_i+\beta _1x_{1x}+\beta _2x_{2x}+\cdots +\beta _kx_{ki}+\mu _i
$$

其中,\(Female_i=1\)表示第\(i\)个样本为女性;\(Female_i=0\)表示第\(i\)个样本为男性,核心解释变量:\(Female\),控制变量:\(x_m\left( m=1,2,\cdots ,k \right)\)

我们来算一下期望:

$$
E\left( y|Female=1\text{以及其他自变量给定} \right) =\delta _0\times 1+C\\
E\left( y|Female=0\text{以及其他自变量给定} \right) =\delta _0\times 0+C
$$

其中\(C\)为常数,且上面的式子和下面的式子中的\(C\)是一样的,我们将两个期望相减:

$$
E\left( y|Female=1\text{以及其他自变量给定} \right) -E\left( y|Female=0\text{以及其他自变量给定} \right) =\delta _0
$$

所以\(\delta _0\)可以解释为:在其他自变量给定的情况下,女性的平均工资与男性平均工资的差异,如果\(\delta _0>0\),说明女性平均工资高,反之女性平均工资少,当然,在下结论之前,我们需要对\(\delta _0\)进行假设检验,只有当\(\delta _0\)显著的异于零之后,我们才能下结论,否则男性和女性平均工资没什么区别。

回归分析上手

使用stata做回归分析

其实很多软件或者语言都可以搞回归,比如spss、matlab、python啥的,但是我这里用state是因为这个软件搞回归相当的简单,我们可以将更多的时间花在回归分析和解释上,而不是回归计算上,我们先来看一个实例:

eg1. 现有某电商平台846条关于婴幼儿奶粉的销售信息,每条信息由11个指 标组成。其中,评价量可以从一个侧面反映顾客对产品的关注度。 请对所给数据进行以下方面的分析,要求最终的分析将不仅仅有益于 商家,更有益于宝妈们为宝贝选择适合自己的奶粉。

1) 以评价量为因变量,分析其它变量和评价量之间的关系;
2) 以评价量为因变量,研究影响评价量的重要因素。

用到的数据集我会放到最后的,如果忘了记得在评论区提醒一下...

首先先来介绍一下stata的基本使用方法,state的启动速度非常快,运行速度也非常快,博主的电脑配置很低,一般打开一些IDE、matlab之类的得等几十秒甚至一分多钟,这个我觉得可以吹一下。

首先导入数据:文件-导入-Excel电子表格

然后勾上“将第一行是作为变量名”

对于定量数据,我们可以做一个描述性统计:只需要执行以下命令即可:

sum就是summarize的缩写,使用summarize也是可以的,这里有一个小技巧,就是当我们在输入后面的参数时,我们可以双击变量窗口中的商品名称,就会自动出现在命令窗口中了。

得到结果后,我们对表格美化一下后就可以放到论文中了,一定要解释这个表格,不能空摆着。

对于定性数据,我们使用命令生成虚拟变量

tab是tabulate的缩写,从上图可以看出,state给我们返回了这个变量的频率分布表,也生成了配方的虚拟变量(以A开头的),gen是一个可选项,加上表示虚拟变量名称的前缀,不加上也没什么问题。

点击这个可以查看数据,左边那个有笔🖊的可以修改数据

这个就是虚拟变量下面的数据

现在我们回到问题:以评价量为因变量,分析其它变量和评价量之间的关系

导入数据后,首先生成虚拟变量:

tabulate 配方,gen(A)
tabulate 奶源产地 ,gen(B)
tabulate 国产或进口 ,gen(C)
tabulate 适用年龄岁 ,gen(D)
tabulate 包装单位 ,gen(E)
tabulate 分类 ,gen(F)
tabulate 段位 ,gen(G)
生成虚拟变量之后的结果

然后开始回归,回归的语法也非常简单:regress Y x1 x2 x3...就好了,在下面的图中,我们只对定量数据作了回归,所以,这里的Y就是评价量,团购价元和商品毛重分别为\(x_1\)和\(x_2\)

下面来逐一介绍state给我们生成的信息,先看表格的上半部分,首先看Source这一列,一共有三个元素,分别是Model、Residual和Total,其中Model表示回归平方和(SSR),Residual表示误差平方和(SSE),Total表示总离差平方和(SST),第二列的SS就表示它们对应的值,第三列的df表示自由度,根据数据可以看出,SSR的自由度为k=2,SSE的自由度为n-k-1,SST的自由度为n-1。第四列的MS表示均值,这个也可以不用管。

最后一列是最关键的:Number of obs表示观测值的个数,也就是样本个数,F(2, 843)Prob>F这两个家伙非常重要,它们是一个联合显著性检验\(H_0\text{:}\beta _1=\beta _2=\cdots =\beta _k=0\),其中F是一个检验值,检验值是一个构造出来的F统计量,而prob就是我们常说的p值~p-value,如果p值小于0.05则拒绝原假设,也就是说系数都是显著的异于0,这样的系数才是有意义的,否则所有的系数都和0没啥区别,那系数不就没意义了吗。所以第一步就是要看p值是否小于0.05。

下面的R-squared就是\(R^2\),拟合优度,可以看出这个\(R^2\)非常小,下面的Adj R-squared就是调整后的\(R^2\),这里补充一下关于R-squared和Adj R-squared:我们引入的自变量越多,拟合优度就会变大,但我们倾向于调整后的拟合优度,如果新引入的自变量对误差平方和(SSE)的减少程度特别少,那么调整后的拟合优度反而会减小。

其实如果数据没有设计过的话,\(R^2\)一般都是蛮小的,而且到0.8就有超神的感觉了,0.4-0.5就可以用了。这里还要补充一下,一般\(R^2\)太小怎么办:

  1. 回归分为解释型回归和预测型回归
    1. 预测性回归一般才会更看重\(R^2\)
    2. 解释型回归更多的关注模型整体显著性以及自变量的统计显著性和经济意义显著性即可
  2. 可以对模型进行调整,例如对数据取对数或者平方后再进行回归
  3. 数据中可能存在异常值或者数据的分布极度不均。

我们再来看下面的表格,也就是回归系数表

在表格中,第一列是自变量和因变量,第二列就是回归系数,第三列是标准误差,可以不用管,我们主要需要注意的是`p>|t|`这一列,这个地方也是一个假设检验,在其左边列中,t为t统计量,服从t分布。原假设是:\(H_0\text{:}\beta _i=0\),如果p值小于0.05则拒绝原假设,说明回归系数显著的异于0,否则就说回归系数和0没什么差别,在上表中,团购价元和常数项(_cons,其实就是\(\beta _0\))是小于0.05的,所以这个系数是有用的,而商品毛重的p值为0.457大于0.05,则这个系数没啥用,我们就不用分析他。最后一列是置信区间,表示我们有95%的可能性落在这个区间内,这个就是区间估计,但其实用的不多。

以上的自变量都是定量变量,如果我们想将定性变量也加入进去,然后一起回归,那当然是可以的:

直接将虚拟变量都加入,一起回归

当我们执行命令后,可以看到下面有一些提示,比如:note: A2 omitted because of collinearity,翻译一下就是由于完全多重共线性的影响,所以把A2忽略掉了,这个是正常现象,不必惊慌,因为这个变量相当于对照变量,我们后面分析变量的时候要用到他。

首先,通过了联合显著性检验,然后我们再看对于系数的检验:首先团购价元肯定是显著的,但是F1如果在0.05的水平下,是不满足的,我们可以灵活一点,设置置信水平为0.1,所以我们可以说,在置信水平为0.1的情况下,团购价元和F1显著的异于0。现在就来解释一下团购价元的系数:在其他自变量不变的情况下,团购价元每增加一个单位,评价量就会减少29.7727;然后还需要解释F1(奶粉类别为牛奶粉):在其他自变量不变的情况下,分类为牛奶粉的评价量比分类为羊奶粉的评价量高出14894.55;而其他系数因为都不显著,所以就不用分析了。

标准化回归系数

再来看第二问:以评价量为因变量,研究影响评价量的重要因素

为了更为精准的研究评价量的重要因素(取出量纲的影响),我们可以考虑使用标准化回归系数

对于数据的标准化,就是将原始数据减去他的均值之后,再除以该变量的标准差,计算得到新的变量值,新变量构成的回归方程称为标准化回归方程,回归后相应可得到标准化回归系数,标准化系数的绝对值越大,说明对因变量的影响越大(当然,前提是要显著)

使用stata操作标准化回归也非常简单:

regress y x1 x2 ... xk, beta

只需要在回归的命令后面加一个可选项beta即可

可以看出,最后一列的置信区间被替换成了beta,这个beta系数就是标准化回归系数,这里可以看到,常数项没有标准化回归系数,因为减去均值之后就是零了,然后就是前面基本没有什么改变,因为对数据进行标准化处理不会影响回归系数的标准误,也不会影响显著性。

从beta就可以看出,研究影响评价量的重要因素就是团购价了,而且是个负向的影响,价格越高肯定骂的人就越多。

回归可能出现的问题:

再此之前,先介绍一下回归模型需要满足的四个假定

  1. 线性假定,Y与X之间存在线性关系
  2. 严格外生性,保证计算出来的回归系数无偏且一致,扰动项均值为零,且与所有自变量均不相关
  3. 无完全多重共线性:保证回归系数能估计出来,X矩阵列满秩
  4. 球形扰动项:扰动项同方差,且无自相关

扰动项要满足的条件

假设我们的模型为:\(y_i=\beta _0+\beta _1x_{1i}+\beta _2x_{2i}+\cdots +\beta _kx_{ki}+\mu _i\),\(\mu\)为无法观测且满足一定条件的扰动项。

在之前的回归中,我们默认了扰动项是球形扰动项:也就是满足“无自相关”和“同方差”两个条件:

$$
\mu =\left[ \begin{array}{c}
\mu _1\\
\mu _2\\
\vdots\\
\mu _n\\
\end{array} \right] , Var\left( \mu |X \right) =\sigma ^2I_n=\left[ \begin{matrix}
\sigma ^2& & 0\\
& \ddots& \\
0& & \sigma ^2\\
\end{matrix} \right] _{n\times n}=\varSigma
$$

\(\varSigma _{ij}=cov\left( \mu _i,\mu _j \right)\),特别地:当\(i=j\)时,\(\varSigma _{ij}=Var\left( \mu _i \right) =\sigma ^2\)

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

检验异方差

异方差的检验有两种,一种是BP检验,另一种是怀特检验:

异方差的BP假设检验:

以上是原理,我们可以做一个调包侠,直接输入命令就好了,在回归结束后,输入命令:estat hettest ,rhs iid

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

异方差的怀特检验:

在回归结束后,输入命令:estat imtest, white

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

BP检验和怀特检验我们选一个就好了,两个都用当然也是可以的。

异方差的处理方法

扰动项出现异方差会存在什么问题?

  1. OLS估计出来的系数是无偏、一致的,但并不具备有效性
  2. 假设检验无法使用,构造的统计量失效了
  3. OLS估计量不再是最优线性无偏估计量了

解决异方差的方法:

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

一般推荐使用OLS加上稳健的标准误

在stata中,这一步也非常简单

regress y x1 x2...xk, robust

可以看出,使用OLS+稳健的标准误之后,我们多了一列,也就是稳健的标准误差,而在右边,有一大批的自变量变得显著的异于0了,这个数量越多,我们可以分析的东西就越多,得出的结论也就越多。

多重共线性

除了异方差之外,还有一个可能出现的问题就是多重共线性:

存在多重共线性->方差变大->回归系数的估计不准确。

检验多重共线性

我们定义一个方差膨因子(Varance Inflation Factor) \(VIF\)

假设现在有\(k\)个自变量,那么第\(m\)个自变量的\(VIF=\frac{1}{1-R_{1~k/m}^{2}}\)

其中:\(R_{1~k/m}^{2}\)是将第\(m\)个自变量作为因变量,对剩下的\(k-1\)个自变量回归得到的拟合优度

\(VIF\)越大,\(R_{1~k/m}^{2}\)也越大,说明第\(m\)个变量和其他变量的相关性越大,一个经验规则是,当\(VIF>10\),则就认为该回归方程存在严重的多重共线性。

使用stata计算各自变量的VIF也很简单,在回归结束后:

estate vif

存在很严重的多重共线性

多重共线性的处理方法

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

如果我们要修正模型,一般采用逐步回归的方法:

  • 向前逐步回归:将自变量逐个引入模型,每引入一个自变量 后都要进行检验,显著时才加入回归模型。
    • 缺点:随着以后其他自变量的引入,原来显著的自变量也可能又变为不显著了, 但是,并没有将其及时从回归方程中剔除掉。
  • 向后逐步回归:与向前逐步回归相反,先将所有变量均 放入模型,之后尝试将其中一个自变量从模型中剔除,看整个模型解释因变量的 变异是否有显著变化,之后将最没有解释力的那个自变量剔除;此过程不断迭代, 直到没有自变量符合剔除的条件。
    • :一开始把全部变量都引入回归方程, 这样计算量比较大。若对一些不重要的变量,一开始就不引入,这样就可以减少 一些计算。当然这个缺点随着现在计算机的能力的提升,已经变得不算问题了

使用stata实现逐步回归:

  • 向前逐步回归:stepwise regress y x1 x2...xk, pe(#1)
    • 其中的#1指的是显著性水平,一般设置为0.05
  • 向后逐步回归:stepwise regress y x1 x2...xk, pr(#2)
    • 其中的#2指的是显著性水平,一般设置为0.05

如果你觉得筛选后的变量仍然多了,可以减小#1或者#2
如果你觉得筛选后的变量太少了,你可以增加#1或者#2

向前逐步回归:

向后逐步回归:

逐步回归的说明:

  1. 向前和向后逐步回归的结果可能不同
  2. 不要轻易使用逐步回归分析,因为提出了自变量之后很有可能会产生新的问题,如内生性
  3. 也有更加好的筛选方法,就是暴力枚举,但是时间复杂度很高,如果自变量太多,计算是很费时间的

用到的代码:

// 按键盘上的PageUp可以使用上一次输入的代码(Matleb中是上箭头)
// 清除所有变量
clear
// 清屏 和 matlab的clc类似
cls 
// 定量变量的描述性统计
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

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

// 得到标准化回归系数
regress 评价量 团购价元 商品毛重kg, b 

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

// 异方差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

// 逐步回归(一定要注意完全多重共线性的影响)
// 向前逐步回归
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)


// (1) 用已知变量生成新的变量 
generate lny = log(评价量)  //加log
generate price_square = 团购价元 ^2   //算平方
generate interaction_term = 团购价元*商品毛重kg   //算交互项

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

我之前写过的一个简单的多元回归的习题:点击这里
用到的数据集:点击这里
多元回归的推导pdf:点击这里,提取码:aaaa


立志成为一名攻城狮