一元线性回归理论知识介绍与实战(Python)

模型

回归模型

一元线性回归的模型为 y = β 0 + β 1 x + ε y=\beta_0+\beta_1x+\varepsilon y=β0+β1x+ε β 0 \beta_0 β0 β 1 \beta_1 β1为回归系数, ε \varepsilon ε是随机误差项,总是假设:

  • y y y x x x有线性关系
  • 重复抽样中, x x x取值固定,即 x x x是非随机的
  • ε \varepsilon ε为随机变量,且独立
  • ε ∼ N ( 0 , σ 2 ) \varepsilon\sim N(0,\sigma^2) εN(0,σ2) σ \sigma σ为定值

若对 y y y x x x分别进行 n n n次独立观测,得到以下 n n n对观测值:
( y i , x i ) , i = 1 , 2 , . . . , n ( y_i , x_i),i = 1,2,...,n (yi,xi)i=1,2,...,n
n n n对观测值之间的关系符合模型:
y i = β 0 + β 1 x + ε i , i = 1 , 2 , . . . , n y_i = β_0 + β_1x + ε_i ,i = 1,2,...,n yi=β0+β1x+εii=1,2,...,n
这里, x i x_i xi是自变量在第 i i i次观测时的取值,它是一个非随机变量,并且没有测量误差。对应于 x i x_i xi y i y_i yi 是一个随机变量,它的随机性是由 ε i ε_i εi造成的。 ε i ∼ N ( 0 , σ 2 ) ε_i \sim N(0,σ^2 ) εiN(0,σ2),对于不同的观测,当 i ≠ j i ≠ j i=j时, ε i ε_i εi ε j ε_j εj是相互独立的。

回归方程

根据回归模型中的假设,我们知道 E ( ε ) = 0 E(\varepsilon)=0 E(ε)=0,那么 E ( y ) = β 0 + β 1 x , D ( y ) = σ 2 E(y)=\beta_0+\beta_1x,D(y)=\sigma^2 E(y)=β0+β1x,D(y)=σ2,即随机变量 y ∼ N ( β 0 + β 1 x , σ 2 ) y\sim N(\beta_0+ \beta_1 x,\sigma^2) yN(β0+β1x,σ2)
其中 E ( y ) E(y) E(y)称为总体回归方程。

估计的回归方程

估计样本的回归方程,总体回归参数 β 0 , β 1 \beta_0,\beta_1 β0,β1是未知的,因此我们需要用样本去估计它们,其估计的回归方程为:
y ^ = β 0 ^ + β 1 ^ x \hat{y}=\hat{\beta_0}+\hat{\beta_1}x y^=β0^+β1^x

最小二乘估计

y i = y i ^ + e i y_i=\hat{y_i}+e_i yi=yi^+ei,其中 e i e_i ei为第 i i i个观测值的残差。用最小二乘法估计 β 0 , β 1 \beta_0,\beta_1 β0,β1的值,即取 β 0 , β 1 \beta_0,\beta_1 β0,β1的一组估计值 β 0 ^ , β 1 ^ \hat{\beta_0},\hat{\beta_1} β0^,β1^,使 y i y_i yi y i ^ \hat{y_i} yi^的离差平方和达到最小,即 ∑ i = 1 n e i 2 \sum_{i=1}^{n} e_i^2 i=1nei2最小。
最小二乘法示意图

若记
Q ( β 0 , β 1 ) = ∑ i = 1 n ( y i − β 0 − β 1 x i ) 2 Q(\beta_0,\beta_1)=\sum_{i=1}^{n}(y_i-\beta_0-\beta_1x_i)^2 Q(β0,β1)=i=1n(yiβ0β1xi)2

Q ( β 0 ^ , β 1 ^ ) = m i n β 0 , β 1 Q ( β 0 , β 1 ) = ∑ i = 1 n ( y i − β 0 ^ − β 1 ^ x i ) 2 Q(\hat{\beta_0},\hat{\beta_1})=\mathop{min}\limits_{\beta_0,\beta_1}{Q(\beta_0,\beta_1)}=\sum_{i=1}^{n}(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)^2 Q(β0^,β1^)=β0,β1minQ(β0,β1)=i=1n(yiβ0^β1^xi)2
显然 Q ( β 0 , β 1 ) ≥ 0 Q(\beta_0,\beta_1)\ge0 Q(β0,β1)0,且关于 β 0 , β 1 \beta_0,\beta_1 β0,β1可微,则由多元函数存在极值的必要条件得
{ ∂ Q ∂ β 0 = − 2 ∑ i = 1 n ( y i − β 0 ^ − β 1 ^ x i ) = 0 ∂ Q ∂ β 1 = − 2 ∑ i = 1 n x i ( y i − β 0 ^ − β 1 ^ x i ) = 0 \begin{cases} \frac{\partial Q}{\partial \beta_0} =-2\sum_{i=1}^{n}(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)=0 \\ \\ \frac{\partial Q}{\partial \beta_1} =-2\sum_{i=1}^{n}x_i(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)=0\\ \end{cases} β0Q=2i=1n(yiβ0^β1^xi)=0β1Q=2i=1nxi(yiβ0^β1^xi)=0
求解可以得到
{ β 1 ^ = n ∑ i = 1 n x i y i − ∑ i = 1 n x i ∑ i = 1 n y i n ∑ i = 1 n x i 2 − ( ∑ i = 1 n x i ) 2 β 0 ^ = y ‾ − β 1 ^ x ‾ \begin{cases} \hat{\beta_1}=\frac{n\sum_{i=1}^{n}x_iy_i -\sum_{i=1}^{n} x_i\sum_{i=1}^{n} y_i}{n\sum_{i=1}^{n}x_i^2 -(\sum_{i=1}^{n}x_i )^2} \\ \\ \hat{\beta_0}=\overline{y}-\hat{\beta_1}\overline{x} \end{cases} β1^=ni=1nxi2(i=1nxi)2ni=1nxiyii=1nxii=1nyiβ0^=yβ1^x
β 0 ^ = y ‾ − β 1 ^ x ‾ \hat{\beta_0}=\overline{y}-\hat{\beta_1}\overline{x} β0^=yβ1^x可以看出,回归直线过样本中心点 ( x ‾ , y ‾ ) (\overline{x},\overline{y}) (x,y)
由偏导方程组可以知道
{ ∑ e i = 0 ∑ x i e i = 0 \begin{cases} \sum e_i=0\\ \\ \sum x_ie_i=0\\ \end{cases} ei=0xiei=0
这是残差的重要性质,后面会用到。

β 1 ^ \hat{\beta_1} β1^变换
β 1 ^ = n ∑ x i y i − ∑ x i ∑ y i n ∑ x i 2 − ( ∑ x i ) 2 = ∑ x i y i − n x ‾ y ‾ ∑ x i 2 − n x ‾ 2 = ∑ ( x i − x ‾ ) ( y i − y ‾ ) ∑ ( x i − x ‾ ) 2 \begin{aligned} \hat{\beta_1} &=\frac{n \sum x_i y_i - \sum x_i\sum y_i}{n\sum x_i^2 -(\sum x_i )^2}\\ &=\frac{\sum x_iy_i-n\overline{x}\overline{y} }{\sum x_i^2-n\overline{x}^2 } \\ &=\frac{\sum (x_i-\overline{x} )(y_i-\overline{y} )}{\sum (x_i-\overline{x} )^2} \\ \end{aligned} β1^=nxi2(xi)2nxiyixiyi=xi2nx2xiyinxy=(xix)2(xix)(yiy)

β 0 ^ , β 1 ^ \hat{\beta_0},\hat{\beta_1} β0^,β1^的性质

点估计量 β 1 ^ \hat{\beta_1} β1^是总体参数 β 1 \beta_1 β1的无偏估计
由于
β 1 ^ = ∑ ( x i − x ‾ ) ( y i − y ‾ ) ∑ ( x i − x ‾ ) 2 = ∑ ( x i − x ‾ ) y i − y ‾ ∑ ( x i − x ‾ ) ∑ ( x i − x ‾ ) 2 \begin{aligned} \hat{\beta_1}=\frac{\sum (x_i-\overline{x} )(y_i-\overline{y} )}{\sum (x_i-\overline{x} )^2} =\frac{\sum(x_i-\overline{x})y_i-\overline{y}\sum(x_i-\overline{x})}{\sum(x_i-\overline{x} )^2}\\ \end{aligned} β1^=(xix)2(xix)(yiy)=(xix)2(xix)yiy(xix)
容易证明 ∑ ( x i − x ‾ ) = 0 \sum(x_i-\overline{x})=0 (xix)=0
于是
β 1 ^ = ∑ x i − x ‾ ∑ ( x i − x ‾ ) 2 y i \hat{\beta_1}=\sum \frac{x_i-\overline{x}}{\sum(x_i-\overline{x})^2}y_i β1^=(xix)2xixyi
可以看到 β 1 ^ \hat{\beta_1} β1^ y i y_i yi的线性组合,而 y i y_i yi相互独立且服从正态分布,所以 β 1 ^ \hat{\beta_1} β1^也服从正态分布。


k i = x i − x ‾ ∑ ( x i − x ‾ ) 2 k_i=\frac{x_i-\overline{x}}{\sum(x_i-\overline{x})^2} ki=(xix)2xix

E ( β 1 ^ ) = E ( ∑ k i y i ) = ∑ k i E ( y i ) = β 0 ∑ k i + β 1 ∑ k i x i E(\hat{\beta_1})=E(\sum k_iy_i)=\sum k_iE(y_i)=\beta_0\sum k_i+\beta_1\sum k_ix_i E(β1^)=E(kiyi)=kiE(yi)=β0ki+β1kixi
不难看出 ∑ k i = 0 , ∑ k i x i = 1 \sum k_i=0,\sum k_ix_i=1 ki=0,kixi=1
于是有 E ( β 1 ^ ) = β 1 E(\hat{\beta_1})=\beta_1 E(β1^)=β1

同样的
V a r ( β 1 ^ ) = V a r ( ∑ k i y i ) ) = ∑ k i 2 V a r ( y i ) = ∑ k i 2 σ 2 = σ 2 ∑ k i 2 Var(\hat{\beta_1})=Var(\sum k_iy_i))=\sum k_i^2Var(y_i)=\sum k_i^2\sigma^2=\sigma^2\sum k_i^2 Var(β1^)=Var(kiyi))=ki2Var(yi)=ki2σ2=σ2ki2
由于
∑ i = 1 n k i 2 = ∑ i = 1 n [ x i − x ‾ ∑ i = 1 n ( x i − x ‾ ) 2 ] 2 = 1 [ ∑ i = 1 n ( x i − x ‾ ) 2 ] 2 ∑ i = 1 n ( x i − x ‾ ) 2 = 1 ∑ i = 1 n ( x i − x ‾ ) 2 \begin{aligned} \sum_{i=1}^{n} k_i^2 =&\sum_{i=1}^{n} [\frac{x_i-\overline{x}}{\sum_{i=1}^{n}(x_i-\overline{x})^2}]^2\\ =&\frac{1}{[\sum_{i=1}^{n} (x_i-\overline{x})^2]^2} \sum_{i=1}^{n} (x_i-\overline{x})^2\\ =&\frac{1}{\sum_{i=1}^{n} (x_i-\overline{x})^2} \end{aligned} i=1nki2===i=1n[i=1n(xix)2xix]2[i=1n(xix)2]21i=1n(xix)2i=1n(xix)21
于是有 V a r ( β 1 ^ ) = σ 2 ∑ ( x i − x ‾ ) 2 Var(\hat{\beta_1})=\frac{\sigma^2}{\sum (x_i-\overline{x})^2} Var(β1^)=(xix)2σ2


β 1 ^ ∼ N ( β 1 , σ 2 ∑ ( x i − x ‾ ) 2 ) \hat{\beta_1} \sim N (\beta_1,\frac{\sigma^2}{\sum (x_i-\overline{x})^2}) β1^N(β1,(xix)2σ2)

同理,对点估计量 β 0 ^ \hat{\beta_0} β0^也是一样,最后有
β 0 ^ ∼ N ( β 0 , σ 2 [ 1 n + x ‾ 2 ∑ ( x i − x ‾ ) 2 ] ) \hat{\beta_0} \sim N(\beta_0,\sigma^2[\frac{1}{n}+\frac{\overline{x}^2}{\sum (x_i-\overline{x})^2}]) β0^N(β0,σ2[n1+(xix)2x2])

拟合优度检验

判定系数

对应于不同的 x i x_i xi值,观测值 y i y_i yi的取值是不同的。建立一元线性回归模型的目的,
就是以 x x x的线性函数 ( β 0 ^ + β 1 ^ x ) (\hat{\beta_0}+\hat{\beta_1}x) (β0^+β1^x)来解释 y 的变异。那么,回归模型 y ^ = β 0 ^ + β 1 ^ x \hat{y}=\hat{\beta_0}+\hat{\beta_1}x y^=β0^+β1^x
究竟能以多大的精度来解释 y 的变异呢?又有多大部分是无法用这个回归方程来解释呢?
如下图所示,每个观测点的离差可以分解为
y − y ‾ = ( y − y ^ ) + ( y ^ − y ‾ ) y-\overline{y}=(y-\hat{y})+(\hat{y}-\overline{y}) yy=(yy^)+(y^y)
变差分解图

并且
∑ i = 1 n ( y i − y ‾ ) 2 = ∑ i = 1 n [ ( y i − y i ^ ) + ( y i ^ − y ‾ ) ] 2 = ∑ i = 1 n [ e i + ( y i ^ − y ‾ ) ] 2 = ∑ i = 1 n e i 2 + 2 ∑ i = 1 n e i ( y i ^ − y ‾ ) + ∑ i = 1 n ( y ^ − y ‾ ) 2 \begin{aligned} & \sum_{i=1}^{n}(y_i-\overline{y})^2\\ =&\sum_{i=1}^{n} [(y_i-\hat{y_i})+(\hat{y_i}-\overline{y})]^2\\ =& \sum_{i=1}^{n} [e_i+(\hat{y_i}-\overline{y})]^2\\ =& \sum_{i=1}^{n} e_i^2+2\sum_{i=1}^{n} e_i(\hat{y_i}-\overline{y})+\sum_{i=1}^{n}(\hat{y}-\overline{y})^2\\ \end{aligned} ===i=1n(yiy)2i=1n[(yiyi^)+(yi^y)]2i=1n[ei+(yi^y)]2i=1nei2+2i=1nei(yi^y)+i=1n(y^y)2
由于
∑ i = 1 n e i ( y i ^ − y ‾ ) = ∑ i = 1 n ( e i β 0 ^ + e i β 1 ^ x i ) − y ‾ ∑ i = 1 n e i = 0 \begin{aligned} \sum_{i=1}^{n} e_i(\hat{y_i}-\overline{y}) =\sum_{i=1}^{n}(e_i\hat{\beta_0}+e_i\hat{\beta_1}x_i)-\overline{y}\sum_{i=1}^{n} e_i =0 \end{aligned} i=1nei(yi^y)=i=1n(eiβ0^+eiβ1^xi)yi=1nei=0
因此,得到正交分解式
∑ i = 1 n ( y i − y ‾ ) 2 = ∑ i = 1 n e i 2 + ∑ i = 1 n ( y ^ − y ‾ ) 2 = ∑ i = 1 n ( y − y ^ ) 2 + ∑ i = 1 n ( y ^ − y ‾ ) 2 \sum_{i=1}^{n}(y_i-\overline{y})^2 =\sum_{i=1}^{n} e_i^2+\sum_{i=1}^{n}(\hat{y}-\overline{y})^2 =\sum_{i=1}^{n} (y-\hat{y})^2+\sum_{i=1}^{n}(\hat{y}-\overline{y})^2 i=1n(yiy)2=i=1nei2+i=1n(y^y)2=i=1n(yy^)2+i=1n(y^y)2

   S S T = ∑ ( y i − y ‾ ) 2 SST=\sum (y_i-\overline{y})^2 SST=(yiy)2 ,这是原始数据 y i y_i yi的总变异平方和,其自由度为 d f T = n − 1 df_T = n −1 dfT=n1
   S S R = ∑ ( y i ^ − y ‾ ) 2 SSR=\sum (\hat{y_i}-\overline{y})^2 SSR=(yi^y)2,这是用拟合直线 y i ^ = β 0 ^ + β 1 ^ x i \hat{y_i}=\hat{\beta_0}+\hat{\beta_1}x_i yi^=β0^+β1^xi可解释的变异平方和,其自由度为 d f R = 1 df_R= 1 dfR=1
   S S E = ∑ ( y i − y i ^ ) 2 SSE=\sum (y_i-\hat{y_i})^2 SSE=(yiyi^)2,这是残差平方和,其的自由度为 d f E = n − 2 df_E = n − 2 dfE=n2

并且有
   S S T = S S R + S S E d f T = d f R + d f E SST=SSR+SSE\\\\df_T=df_R+df_E SST=SSR+SSEdfT=dfR+dfE

注意到,对于一个确定的样本, S S T SST SST是一个定值。所以,可解释变异 S S R SSR SSR越大,则必然有残差 S S E SSE SSE越小。这个分解式可同时从两个方面说明拟合方程的优良程度。

判定系数是指可解释的变异占总变异的百分比,用 R 2 R^2 R2表示,有
   R 2 = S S R S S T = ( 1 − S S E S S T ) R^2=\frac{SSR}{SST}=(1-\frac{SSE}{SST}) R2=SSTSSR=(1SSTSSE)

R 2 R^2 R2有以下性质:

  1. R 2 ∈ [ 0 , 1 ] R^2 \in [0,1] R2[0,1]
  2. R 2 = 1 R^2 = 1 R2=1时,有 S S R = S S T SSR = SST SSR=SST,也就是说,此时原数据的总变异完全可以由拟合值的变异来解释,并且残差为零,即拟合点与原数据完全吻合;
  3. R 2 = 0 R^2 = 0 R2=0时,回归方程完全不能解释原数据的总变异, y y y的变异完全由与 x x x无关的因素引起,这时 S S E = S S T SSE = SST SSE=SST

在一元线性回归中,相关系数 r r r等于判定系数的平方根,即 r = R r=R r=R

估计标准误差

前面我们记残差
e i = y i − y i ^ , i = 1 , 2... , n e_i=y_i-\hat{y_i},i=1,2...,n ei=yiyi^i=1,2...,n
并且我们知道
∑ i = 1 n e i = 0 ∑ i = 1 n x i e i = 0 \sum_{i=1}^{n} e_i=0\\ \sum_{i=1}^{n} x_ie_i=0 i=1nei=0i=1nxiei=0
而残差的样本均值为
e ‾ = 1 n ∑ i = 1 n e i = 0 \overline{e}=\frac{1}{n}\sum_{i=1}^{n}e_i=0 e=n1i=1nei=0
残差的样本方差为
M S E = 1 n − 2 ∑ i = 1 n ( e i − e ‾ ) 2 = 1 n − 2 ∑ i = 1 n e i 2 = 1 n − 2 ∑ i = 1 n ( y i − y i ^ ) 2 \begin{aligned} MSE &=\frac{1}{n-2}\sum_{i=1}^{n}(e_i-\overline{e})^2\\ &=\frac{1}{n-2}\sum_{i=1}^{n}e_i^2\\ &=\frac{1}{n-2}\sum_{i=1}^{n}(y_i-\hat{y_i})^2 \end{aligned} MSE=n21i=1n(eie)2=n21i=1nei2=n21i=1n(yiyi^)2

可以证明,在对 ∑ e i 2 \sum e_i^2 ei2除以其自由度 ( n − 2 ) (n − 2) (n2)后得到的 M S E MSE MSE,是总体回归模型中 σ 2 = V a r ( ε i ) \sigma^2=Var(\varepsilon_i) σ2=Var(εi)的无偏估计量。

我们记
S e = M S E = 1 n − 2 ∑ i = 1 n ( y i − y i ^ ) 2 S_e=\sqrt{MSE}=\sqrt{\frac{1}{n-2}\sum_{i=1}^{n}(y_i-\hat{y_i})^2} Se=MSE =n21i=1n(yiyi^)2

 一个好的拟合方程,其残差总和应越小越好。残差越小,拟合值与观测值越接近,各观测点在拟合直线周围聚集的紧密程度越高,也就是说,拟合方程 y ^ = β 0 ^ + β 1 ^ x \hat{y}=\hat{\beta_0}+\hat{\beta_1}x y^=β0^+β1^x解释 y y y的能力越强。
 另外,当 S e S_e Se越小时,还说明残差 e i e_i ei的变异程度越小。由于残差的样本均值为零,所以说,其离散范围越小,拟合的模型就越为精确。

显著性检验

在拟合回归之前,我们假设 x x x y y y存在线性关系,即 y i = β 0 + β 1 x i + ε i y_i=\beta_0+\beta_1x_i+\varepsilon_i yi=β0+β1xi+εi,并假定 ε i ∼ N ( 0 , σ 2 ) \varepsilon_i \sim N(0,\sigma^2) εiN(0,σ2),这些假设是否成立,需要通过检验来证实。

线性关系的检验

为了检验两个变量之间线性关系是否显著,我们需要构造检验的统计量,假设的统计量为:
   F = S S R / 1 S S E / ( n − 2 ) = M S R M S E F=\frac{SSR/1}{SSE/(n-2)}=\frac{MSR}{MSE} F=SSE/(n2)SSR/1=MSEMSR

其中 M S R = S S R / d f R MSR=SSR/df_R MSR=SSR/dfR M S E = S S E / d f E MSE=SSE/df_E MSE=SSE/dfE

如果原假设成立( H 0 : β 1 = 0 H_0:\beta_1=0 H0:β1=0),由于 S S T = S S R + S S E SST=SSR+SSE SST=SSR+SSE
S S R σ 2 \frac{SSR}{\sigma^2} σ2SSR S S E σ 2 \frac{SSE}{\sigma^2} σ2SSE是独立的随机变量,
并且
S S R σ 2 ∼ χ 2 ( 1 ) , S S E σ 2 ∼ χ 2 ( n − 2 ) \begin{aligned} &\frac{SSR}{\sigma^2} \sim \chi^2(1), &\frac{SSE}{\sigma^2} \sim \chi^2(n-2) \end{aligned} σ2SSRχ2(1),σ2SSEχ2(n2)
此时有
F = M S R M S E ∼ F ( 1 , n − 2 ) F=\frac{MSR}{MSE} \sim F(1,n-2) F=MSEMSRF(1,n2)
下面进行统计的检验:
第一步: 提出假设。
     H 0 : β 1 = 0 , H 1 : β 1 ≠ 0 H_0:\beta_1=0,H_1:\beta_1\ne0 H0β1=0H1β1=0
第二步:检验统计量。
     F = M S R M S E F=\frac{MSR}{MSE} F=MSEMSR
第三步:作出决策。
    给定显著性水平 α \alpha α,查表,
    若 F > F α F>F_\alpha F>Fα,拒绝 H 0 H_0 H0,表明 x x x y y y的线性关系是显著的,
    若 F < F α F<F_\alpha F<Fα,接受 H 0 H_0 H0,没有证据表明 x x x y y y的线性关系是显著的。

回归系数的检验

回归系数的显著性检验要检验自变量对因变量的影响是否显著,对于 y = β 0 + β 1 x + ε y=\beta_0+\beta_1x+\varepsilon y=β0+β1x+ε来说,如果回归系数 β 1 = 0 \beta_1=0 β1=0,说明 y y y不依赖于 x x x,也就是说两个变量之间没有线性关系。
前面我们知道
β 1 ^ ∼ N ( β 1 , σ 2 ∑ ( x i − x ‾ ) 2 ) β 0 ^ ∼ N ( β 0 , σ 2 [ 1 n + x ‾ 2 ∑ ( x i − x ‾ ) 2 ] ) \hat{\beta_1} \sim N (\beta_1,\frac{\sigma^2}{\sum (x_i-\overline{x})^2})\\ \hat{\beta_0} \sim N(\beta_0,\sigma^2[\frac{1}{n}+\frac{\overline{x}^2} {\sum (x_i-\overline{x})^2}]) β1^N(β1,(xix)2σ2)β0^N(β0,σ2[n1+(xix)2x2])

β 1 ^ \hat{\beta_1} β1^标准化
β 1 ^ − β 1 σ / ∑ ( x i − x ‾ ) 2 ∼ N ( 0 , 1 ) \frac{\hat{\beta_1}-\beta_1}{\sigma/\sqrt{\sum(x_i-\overline{x})^2}} \sim N(0,1) σ/(xix)2 β1^β1N(0,1)
由于 σ \sigma σ未知,因此用 S e S_e Se替换,则有
β 1 ^ − β 1 S e / ∑ ( x i − x ‾ ) 2 ∼ t ( n − 2 ) \frac{\hat{\beta_1}-\beta_1}{S_e/\sqrt{\sum(x_i-\overline{x})^2}} \sim t(n-2) Se/(xix)2 β1^β1t(n2)
下面进行检验:
第一步: 提出假设。
     H 0 : β 1 = 0 , H 1 : β 1 ≠ 0 H_0:\beta_1=0,H_1:\beta_1\ne0 H0β1=0H1β1=0
第二步:检验统计量。
     t = β 1 ^ − β 1 S e / ∑ ( x i − x ‾ ) 2 t=\frac{\hat{\beta_1}-\beta_1}{S_e/\sqrt{\sum(x_i-\overline{x})^2}} t=Se/(xix)2 β1^β1
第三步:作出决策。
    给定显著性水平 α \alpha α,并根据自由度 d f = n − 2 df=n-2 df=n2查表,
    若 ∣ t ∣ > t α / 2 \mid t \mid > t_{\alpha/2} t>tα/2,拒绝 H 0 H_0 H0,表明 x x x y y y的影响是显著的,
    若 ∣ t ∣ < t α / 2 \mid t \mid < t_{\alpha/2} t<tα/2,接受 H 0 H_0 H0,没有证据表明 x x x y y y的影响是显著的。

回归分析结果评价

  1. 所估计的回归系数的符号是否与理论或事先预期相一致;
  2. 如果理论上认为 x x x y y y之间的关系不仅是正的,而且是统计上显著的,那么所建立的回归方程也应该如此;
  3. 回归模型在多大程度上解释了因变量 y y y取值的差异?可以用判定系数 R 2 R^2 R2来分析;
  4. 考察关于误差项 ε \varepsilon ε的正态性假定是否成立,即 ε ∼ N ( 0 , σ 2 ) \varepsilon \sim N(0,\sigma^2) εN(0,σ2)

预测

点估计

利用估计的回归方程,对于特定的 x x x,求出 y y y的估计值就是点估计。
点估计分为:

  • 平均值的点估计
  • 个别值的点估计

而对于估计的回归方程
y ^ = β 0 ^ + β 1 ^ x \hat{y}=\hat{\beta_0}+\hat{\beta_1}x y^=β0^+β1^x
可以得到
E ( y ^ ) = E ( β 0 ^ ) + E ( β 1 ^ x ) = β 0 + β 1 x = E ( y ) \begin{aligned} E(\hat{y}) &=E(\hat{\beta_0})+E(\hat{\beta_1}x)\\ &=\beta_0+\beta_1x\\ &=E(y) \end{aligned} E(y^)=E(β0^)+E(β1^x)=β0+β1x=E(y)
可以看到 y y y的平均值点估计 E ( y ^ ) = E ( y E(\hat{y})=E(y E(y^)=E(y)
简单来说,就是平均值的点估计和个别值的点估计均可以带入估计的回归方程即可。

区间估计

由于点估计不能给出估计的精度,点估计值与实际值之间是有误差的,因此需要进行区间估计。
区间估计分为:

  • 置信区间估计
  • 预测区间估计

置信区间估计:给定一个 x 0 x_0 x0,求出 y y y的平均值的区间估计

可以证明
y 0 ^ = β 0 ^ + β 1 ^ x 0 ∼ N ( β 0 + β 1 x 0 , σ 2 [ 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ] ) \hat{y_0}=\hat{\beta_0}+\hat{\beta_1}x_0 \sim N(\beta_0+\beta_1x_0, \sigma^2[\frac{1}{n} +\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}]) y0^=β0^+β1^x0N(β0+β1x0,σ2[n1+(xix)2(x0x)2])

y 0 ^ \hat{y_0} y0^标准化
y 0 ^ − ( β 0 + β 1 x 0 ) σ 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ∼ N ( 0 , 1 ) \frac{\hat{y_0}-(\beta_0+\beta_1x_0)}{\sigma \sqrt{\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}} \sim N(0,1) σn1+(xix)2(x0x)2 y0^(β0+β1x0)N(0,1)

由于 σ \sigma σ未知,因此用 S e S_e Se替换
y 0 ^ − E ( y 0 ) S e 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ∼ t ( n − 2 ) \frac{\hat{y_0}- E(y_0) }{S_e \sqrt{\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}} \sim t(n-2) Sen1+(xix)2(x0x)2 y0^E(y0)t(n2)

在给定显著性水平 α \alpha α,因此有
P ( − t α / 2 < y 0 ^ − E ( y 0 ) S e 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 < t α / 2 ) = 1 − α P( -t_{\alpha/2}< \frac{\hat{y_0}- E(y_0) }{S_e \sqrt{\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}} <t_{\alpha/2} )=1-\alpha P(tα/2<Sen1+(xix)2(x0x)2 y0^E(y0)<tα/2)=1α

求解得到 E ( y 0 ) E(y_0) E(y0)的置信区间
E ( y 0 ) ∈ ( y 0 ^ − t α / 2 S e 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 , y 0 ^ + t α / 2 S e 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ) E(y_0) \in (\hat{y_0}-t_{\alpha/2}S_e \sqrt{\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}, \hat{y_0}+t_{\alpha/2}S_e \sqrt{\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}) E(y0)(y0^tα/2Sen1+(xix)2(x0x)2 ,y0^+tα/2Sen1+(xix)2(x0x)2 )

预测区间估计:给定一个 x 0 x_0 x0,求出 y y y的个别值的区间估计

对于 y 0 ^ \hat{y_0} y0^ y 0 y_0 y0,有
y 0 ^ = β 0 ^ + β 1 ^ x 0 ∼ N ( β 0 + β 1 x 0 , σ 2 [ 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ] ) y 0 = β 0 + β 1 x 0 + ε ∼ N ( β 0 + β 1 x 0 , σ 2 ) \begin{aligned} &\hat{y_0}=\hat{\beta_0}+\hat{\beta_1}x_0 \sim N(\beta_0+\beta_1x_0, \sigma^2[\frac{1}{n} +\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}])\\ &y_0=\beta_0+\beta_1x_0+\varepsilon \sim N(\beta_0+\beta_1x_0,\sigma^2) \end{aligned} y0^=β0^+β1^x0N(β0+β1x0,σ2[n1+(xix)2(x0x)2])y0=β0+β1x0+εN(β0+β1x0,σ2)

将两个正态分布相减,得到
y 0 − y 0 ^ ∼ N ( 0 , σ 2 [ 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ] ) y_0-\hat{y_0} \sim N(0, \sigma^2[1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum(x_i-\overline{x})^2}]) y0y0^N(0,σ2[1+n1+(xix)2(x0x)2])

将其标准化
y 0 − y 0 ^ σ 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ∼ N ( 0 , 1 ) \frac{y_0-\hat{y_0}}{\sigma\sqrt{1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum(x_i-\overline{x})^2}}} \sim N(0,1) σ1+n1+(xix)2(x0x)2 y0y0^N(0,1)

由于 σ \sigma σ未知,因此用 S e S_e Se替换
y 0 − y 0 ^ S e 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ∼ t ( n − 2 ) \frac{y_0-\hat{y_0}}{S_e \sqrt{1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum(x_i-\overline{x})^2}}} \sim t(n-2) Se1+n1+(xix)2(x0x)2 y0y0^t(n2)

在给定显著性水平 α \alpha α,因此有
P ( − t α / 2 < y 0 − y 0 ^ S e 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 < t α / 2 ) = 1 − α P( -t_{\alpha/2}< \frac{y_0-\hat{y_0}}{S_e \sqrt{1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum(x_i-\overline{x})^2}}} <t_{\alpha/2} )=1-\alpha P(tα/2<Se1+n1+(xix)2(x0x)2 y0y0^<tα/2)=1α

求解得到 y 0 y_0 y0的置信区间
y 0 ∈ ( y 0 ^ − t α / 2 S e 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 , y 0 ^ + t α / 2 S e 1 + 1 n + ( x 0 − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ) y_0 \in (\hat{y_0}-t_{\alpha/2}S_e \sqrt{1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}, \hat{y_0}+t_{\alpha/2}S_e \sqrt{1+\frac{1}{n}+\frac{(x_0-\overline{x})^2}{\sum (x_i-\overline{x})^2}}) y0(y0^tα/2Se1+n1+(xix)2(x0x)2 ,y0^+tα/2Se1+n1+(xix)2(x0x)2 )

置信区间和预测区间示意图

残差分析

在回归模型中,假定 ε ∼ N ( 0 , σ 2 ) \varepsilon \sim N(0,\sigma^2) εN(0,σ2),如果假定不成立,那么,前面所做的事情就不能用统计的知识来解释,因此,确定 ε \varepsilon ε的假定是否成立就是进行残差分析。

i i i个值的预测值为
y i ^ = β 0 ^ + β 1 ^ x i \hat{y_i}=\hat{\beta_0}+\hat{\beta_1}x_i yi^=β0^+β1^xi

i i i个值的观测值为
y i = β 0 + β 1 x i + ε i y_i=\beta_0+\beta_1x_i+\varepsilon_i yi=β0+β1xi+εi

误差项 ε i = y i − β 0 − β 1 x i \varepsilon_i=y_i-\beta_0-\beta_1x_i εi=yiβ0β1xi

残差项 e i = y i − β 0 ^ − β 1 ^ x i e_i=y_i-\hat{\beta_0}-\hat{\beta_1}x_i ei=yiβ0^β1^xi

不难发现, ε i \varepsilon_i εi的估计就是 e i e_i ei

不同形态的残差图

  • 对于图 ( a ) (a) (a),如果回归模型满足基本的假定,那么残差将在 0 0 0的附近波动。

  • 对于图 ( b ) (b) (b),可能 V a r ( ε i ) Var(\varepsilon_i) Var(εi)随着 x x x的变化而变化,不是定值 σ 2 \sigma^2 σ2

  • 对于图 ( c ) (c) (c) x x x y y y是可能是非线性关系,对应的方程为曲线方程。

ε \varepsilon ε的正态性假定的检验,也可以通过标准化残差的分析来完成。
为了便于观察和控制残差 e i e_i ei的大小,我们对 e i e_i ei进行标准化,得到 e i σ \frac{e_i}{\sigma} σei服从 N ( 0 , 1 ) N(0,1) N(0,1),由于 σ \sigma σ未知,因此用 S e S_e Se替换,得到
z e i = e i S e z_{e_i}=\frac{e_i}{S_e} zei=Seei

如果误差项 ε \varepsilon ε服从正态分布,其标准化残差也应该服从正态分布,在标准化残差图中,大约有 95 95 95%的标准化残差在 − 2 ∼ 2 -2\sim2 22之间,如果不是,则 ε \varepsilon ε的假定错误。

  那么,一元回归分析的理论部分就介绍完了,下次咱们再讲讲多元回归分析的相关理论,好好学,你会发现都不是很难理解。

实战

该数据文件有三个自变量影响因变量 y y y,根据第一个自变量和因变量进行一元线性回归。
数据集的离散图如下:
在这里插入图片描述

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 导入模块
from sklearn import model_selection

data = pd.read_excel(r'Predict to Profit.xlsx')
examDf = pd.DataFrame(data)
# print(examDf.head())

# 绘制散点图,examDf.jt为X轴,examDf.hk为Y轴
plt.scatter(examDf.RD_Spend, examDf.Profit, color='darkgreen', label="Exam Data")

# 添加图的标签(x轴,y轴)
plt.xlabel("$RD\_Spend$")  # 设置X轴标签
plt.ylabel("$Profit$")  # 设置Y轴标签
# plt.show()  # 显示图像

相关系数

rDf = examDf.corr()  # 查看数据间的相关系数
print(rDf)

在这里插入图片描述

看到 R D S p e n d RD\\_Spend RDSpend P r o f i t Profit Profit 的相关系数为 0.978437 0.978437 0.978437,接近 1 1 1,因此可以进行回归拟合。

用80%的数据进行训练,剩下20%进行测试。
在这里插入图片描述

# 拆分训练集和测试集(train_test_split是存在与sklearn中的函数)
X_train, X_test, Y_train, Y_test = model_selection.train_test_split(examDf.RD_Spend, examDf.Profit, train_size=0.8)
# train为训练数据,test为测试数据,examDf为源数据,train_size 规定了训练数据的占比

print("自变量---源数据:", examDf.RD_Spend.shape, ";  训练集:", X_train.shape, ";  测试集:", X_test.shape)
print("因变量---源数据:", examDf.Profit.shape, ";  训练集:", Y_train.shape, ";  测试集:", Y_test.shape)

# 散点图
plt.scatter(X_train, Y_train, color="darkgreen", label="train data")  # 训练集为深绿色点
plt.scatter(X_test, Y_test, color="red", label="test data")  # 测试集为红色点

# 添加标签
plt.legend(loc=2)  # 图标位于左上角,即第2象限,类似的,1为右上角,3为左下角,4为右下角
plt.xlabel("$RD\_Spend$")  # 添加 X 轴名称
plt.ylabel("$Profit$")  # 添加 Y 轴名称
plt.show()  # 显示散点图

拟合直线

在这里插入图片描述

# 调用线性规划包
model = LinearRegression()

X_train = X_train.values.reshape(-1,1)
X_test = X_test.values.reshape(-1,1)

# 线性回归训练
model.fit(X_train, Y_train)  # 调用线性回归包

a = model.intercept_  # 截距
b = model.coef_  # 回归系数

# 训练数据的预测值
y_train_pred = model.predict(X_train)
# 绘制最佳拟合线:标签用的是训练数据的预测值y_train_pred
plt.plot(X_train, y_train_pred, color='blue', linewidth=2, label="best line")

# 测试数据散点图
plt.scatter(X_train, Y_train, color='darkgreen', label="train data")
plt.scatter(X_test, Y_test, color='red', label="test data")

# 添加图标标签
plt.legend(loc=2)  # 图标位于左上角,即第2象限,类似的,1为右上角,3为左下角,4为右下角
plt.xlabel("$RD\_Spend$")  # 添加 X 轴名称
plt.ylabel("$Profit$")  # 添加 Y 轴名称
plt.show()  # 显示图像

print("拟合参数:截距", a, ",回归系数:", b)
print("最佳拟合线: Y = ", round(a, 2), "+", round(b[0], 2), "* X")  # 显示线性方程,并限制参数的小数位为两位

最后拟合的直线方程
在这里插入图片描述
参考资料
机器学习多元线性回归

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值