线性回归
一切为了数据挖掘的准备
1.线性回归
- 用一个模型概括x,y的关系
- 因变量:预测的变量
- 自变量:用来预测因变量的一个或多个变量
- 简单线性回归:只包括一个自变量和一个因变量,两者之间的关系可以用一条直线近似表示
2.回归模型
- 回归分析:求一个说明因变量y如何依赖自变量x的方程。
- 回归模型:描述y如何依赖于x和误差项的方程:
y = β 0 + β 1 x + ϵ y = \beta_0 + \beta_1x + \epsilon y=β0+β1x+ϵ其中 β 0 \beta_0 β0, β 1 \beta_1 β1为模型的参数。 ϵ \epsilon ϵ是随机变量,被称为模型的误差项。误差项说明不能被xy之间线性关系解释的变异性 - 回归方程:描述y的期望值E(y)如何依赖于x的方程。
E
(
y
)
=
β
0
+
β
1
x
E(y) = \beta_0 + \beta_1x
E(y)=β0+β1x。
在样本中,每个x对应一个y分布,y的每个分布都有自己的平均值或期望值。 - 估计的回归方程:实际中总体参数 β 0 \beta_0 β0, β 1 \beta_1 β1未知,必须使用样本统计量 b 0 b_0 b0, b 1 b_1 b1作为总体参数 β 0 \beta_0 β0, β 1 \beta_1 β1的点估计量。得到回归估计方程 y ^ = b 0 + b 1 x \hat{y} = b_0 + b_1x y^=b0+b1x
3.最小二乘法
- 使样本点到直线的距离最小;使观测值 y i y_i yi与预测值 y i ^ \hat{y_i} yi^之间差的平方和最小
- 最小二乘法
m i n ∑ ( y i − y i ^ ) 2 min\sum{(y_i - \hat{y_i})^2} min∑(yi−yi^)2
y i y_i yi:实际值
y i ^ \hat{y_i} yi^:预测值 - 样本估计量(偏导可得):
b 1 = ∑ ( x i − x ‾ ) ( ( y i − y ‾ ) ∑ ( x i − x ‾ ) 2 b_1=\frac{\sum{(x_i-\overline{x}})((y_i-\overline{y})}{\sum(x_i-\overline{x})^2} b1=∑(xi−x)2∑(xi−x)((yi−y)
b 0 = y ‾ − b 1 x ‾ b_0=\overline{y}-b_1\overline{x} b0=y−b1x - 使用判定系数评估模型
- 误差/残差平方和 S S E = ∑ ( y i − y i ^ ) 2 SSE=\sum{(y_i-\hat{y_i})^2} SSE=∑(yi−yi^)2
- 总的平方和 S S T = ∑ ( y i − y ‾ ) 2 SST=\sum{(y_i-\overline{y})^2} SST=∑(yi−y)2
- 回归平方和 S S R = ∑ ( y i ^ − y ‾ ) 2 SSR=\sum{(\hat{y_i}-\overline y)^2} SSR=∑(yi^−y)2
- 三者之间关系 S S T = S S R + S S E SST = SSR + SSE SST=SSR+SSE
- 判定系数:
r
2
=
S
S
R
S
S
T
r^2=\frac{SSR}{SST}
r2=SSTSSR。值越接近1,拟合越好,越接近0,拟合越差。
判定系数为总平方和中能被估计的回归方程解释的百分比。适用于非线性关系及有两个以上的自变量情况,适用范围更广。
- 相关系数评估模型:
r x y = r 2 r_{xy} = \sqrt{r^2} rxy=r2。相关系数只适用于两变量间存在线性关系的情况。
4.显著性检验
E ( y ) = β 0 + β 1 x E(y) = \beta_0 + \beta_1x E(y)=β0+β1x,如果 β 1 \beta_1 β1为0,y的平均值或期望不依赖于x的值。需要用一个假设检验判定 β 1 \beta_1 β1是否等于0.
ϵ \epsilon ϵ(误差项)的方差 σ 2 \sigma^2 σ2的估计
- ϵ \epsilon ϵ(误差项)的方差 σ 2 \sigma^2 σ2也是y关于回归直线的方差。可能是因为如下方程 y = β 0 + β 1 x + ϵ y = \beta_0 + \beta_1x + \epsilon y=β0+β1x+ϵ
- 残差平方和SSE是实际观测值关于估计的回归线变异性 ϵ \epsilon ϵ的度量。 S S E = ∑ ( y i − y i ^ ) 2 SSE = \sum{(y_i- \hat{y_i})^2} SSE=∑(yi−yi^)2。有点像 ∑ ϵ i 2 \sum{\epsilon_i^2} ∑ϵi2(我猜的)
- 利用SSE除以自己的自由度,得到均方误差MSE。MSE是 σ 2 \sigma^2 σ2的一个估计量. M S E = S S E n − 2 = ∑ ( y i − y 1 ^ ) n − 2 MSE = \frac{SSE}{n-2}=\frac{\sum{(y_i - \hat{y_1})}}{n-2} MSE=n−2SSE=n−2∑(yi−y1^)
- 为了计算SSE,必须估计两个参数, β 0 \beta_0 β0, β 1 \beta_1 β1,所以SSE的自由度是n-2
- 均方误差: s 2 = M S E = S S E n − 2 = ∑ ( y i − y 1 ^ ) n − 2 s^2=MSE=\frac{SSE}{n-2}=\frac{\sum{(y_i - \hat{y_1})}}{n-2} s2=MSE=n−2SSE=n−2∑(yi−y1^)
- 标准误差: s = M E S s=\sqrt{MES} s=MES
t检验
- 构建关于
β
1
\beta_1
β1的双侧检验
假设: H 0 : β 1 = 0 , H 1 : β 1 ≠ 0 H_0:\beta_1=0,H_1:\beta_1 \neq 0 H0:β1=0,H1:β1̸=0 - 点估计的抽样分布:
b 1 b_1 b1, b 0 b_0 b0是 β 1 \beta_1 β1, β 0 \beta_0 β0的点估计。如果使用不同的样本会得出不同的值,有自己的抽样分布。- E ( b 1 ) = β 1 E(b_1)=\beta_1 E(b1)=β1
- s b 1 = s ∑ ( x i − x ‾ ) 2 s_{b_1}=\frac{s}{\sqrt{\sum(x_i-\overline{x})^2}} sb1=∑(xi−x)2s. 可能和以下公式有关,我猜的 : b 1 = ∑ ( x 1 − x ‾ ) ( y i − y ‾ ) ∑ ( x i − x ‾ ) 2 b_1 = \frac{\sum(x_1-\overline{x})(y_i-\overline{y})}{\sum(x_i-\overline{x})^2} b1=∑(xi−x)2∑(x1−x)(yi−y)
- 正态分布
- t检验的检验统计量为: b 1 − β 1 s b 1 \frac{b_1-\beta_1}{s_{b_1}} sb1b1−β1,服从 自由度为n-2的t分布。
- 假设原假设成立, β 1 = 0 , t = b 1 s b 1 \beta_1=0,t=\frac{b_1}{s_{b_1}} β1=0,t=sb1b1
- 求出p-value,与显著水平对比,得出结论,是否拒绝原假设。
- β 1 \beta1 β1的置信区间为 b 1 ± t α / 2 s b 1 b1 \pm t_{\alpha/2}s_{b_1} b1±tα/2sb1
python解析
from statsmodels.formula.api import ols
import pandas as pd
df = pd.read_csv(filename)
df_model = ols("y列名 ~ x列名",data=df).fit()
print(df_model.summary())
5.区间估计
- 置信区间:对于x的一个给定值,y的平均值的区间估计
- 预测区间:对于x的一个给定值,对应y的一个新的观测值,即对y的一个个别值进行预测的区间估计。
- 一个个别值的预测值和y的平均值的点估计是相同的,但区间估计不同
置信区间
- 给定x的估计值
y p ^ = β 0 + β 1 x p \hat{y_p}=\beta_0 + \beta_1x_p yp^=β0+β1xp - 估计值的估计方差(其中n为样本的个数)
s ^ y p ^ 2 = s 2 [ 1 n + ( x p − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ] \hat{s}_{\hat{y_p}}^2 = s^2[\frac{1}{n}+\frac{(x_p - \overline{x})^2}{\sum(x_i-\overline{x})^2}] s^yp^2=s2[n1+∑(xi−x)2(xp−x)2], s 2 = M S E = S S E n − 2 = ∑ ( y i − y 1 ^ ) n − 2 s^2=MSE=\frac{SSE}{n-2}=\frac{\sum{(y_i - \hat{y_1})}}{n-2} s2=MSE=n−2SSE=n−2∑(yi−y1^) - 估计值的估计标准差
s ^ y p ^ = s 1 n + ( x p − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 \hat{s}_{\hat{y_p}} = s\sqrt{\frac{1}{n}+\frac{(x_p - \overline{x})^2}{\sum(x_i-\overline{x})^2}} s^yp^=sn1+∑(xi−x)2(xp−x)2 - 置信区间
y p ^ ± t α / 2 s y p ^ \hat{y_p} \pm t_{\alpha/2}s_{\hat{y_p}} yp^±tα/2syp^t分布的自由度是n-2 - 当 x p = x ‾ x_p=\overline{x} xp=x时,能够得到y的平均值的最佳估计量(此时估计两的估计标准差为0), x p x_p xp离 x ‾ \overline{x} x越小,平均值的置信区间越大
y的一个个别值的预测区间
- 给定x的预测值
y p ^ = β 0 + β 1 x p \hat{y_p}=\beta_0 + \beta_1x_p yp^=β0+β1xp - 预测值的方差由两部分组成
- y关于平均值 E ( y p ) E(y_p) E(yp)的方差,估计量为 s 2 s^2 s2
- 利用
y
p
^
\hat{y_p}
yp^估计
E
(
y
p
)
E(y_p)
E(yp)的方差,估计量为
s
^
y
p
^
2
\hat{s}_{\hat{y_p}}^2
s^yp^2
s i n d = s 2 + s ^ y p ^ 2 = s 2 + s 2 [ 1 n + ( x p − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ] = s 2 [ 1 + 1 n + ( x p − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 ] s_{ind}=s^2+\hat{s}_{\hat{y_p}}^2=s^2 + s^2[\frac{1}{n}+\frac{(x_p - \overline{x})^2}{\sum(x_i-\overline{x})^2}]=s^2[1+\frac{1}{n}+\frac{(x_p - \overline{x})^2}{\sum(x_i-\overline{x})^2}] sind=s2+s^yp^2=s2+s2[n1+∑(xi−x)2(xp−x)2]=s2[1+n1+∑(xi−x)2(xp−x)2]
s i n d = s 1 + 1 n + ( x p − x ‾ ) 2 ∑ ( x i − x ‾ ) 2 s_{ind}=s\sqrt{1+\frac{1}{n}+\frac{(x_p - \overline{x})^2}{\sum(x_i-\overline{x})^2}} sind=s1+n1+∑(xi−x)2(xp−x)2
- 预测区间
y p ^ ± t α / 2 s i n d \hat{y_p} \pm t_{\alpha/2}s_{ind} yp^±tα/2sindt分布的自由度是n-2