Simple Linear Regression (R language)
1.简单线性回归模型
1.1 常用统计量
均值(Mean):是指一组数据的平均值,是一种位置衡量指标,用来表示这些值在衡量标尺上居中的位置。在统计术语中,一个随机变量的平均值通常被称为期望值(Expectation)。方差(Variance):是指每个变量值与其均值之间的距离的平方和的均值,用一种离散程度的衡量指标,用来表示一组数据靠近其均值的程度,较小的方差表明该组数据的大部分数据集的分布相对集中于均值附近,较大的方差则表明该组数据的大部分数据的分布相对分散的。协方差(Covariance):是指两个变量与其各自均值的距离之积的平均值,是衡量两个变量之间相互关联紧密程度的指标。协方差为正值时表明一个变量随另一个变量的增大而增大,其值为负时表明一个变量随另一变量的增大而减小。
设现有$n$个观测数据的数据集,其中每一个观测数据用数据对$(x_i,y_i)$,$x_i$为输入特征值, $y_i$为输出标签。则该数据集的输入变量$x_i$与输出变量$y_i$的均值表示为$$\bar{x}=\frac{1}{n}\sum_{i=1}^{n}x_i$$ $$\bar{y}=\frac{1}{n}\sum_{i=1}^{n}y_i$$
变量$x$的方差$Var(x)$,变量$x$与变量$y$之间的协方差$Cov(x,y)$分别表示为$$Var(x)=\frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})^2$$ $$Cov(x,y)=\frac{1}{n}\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})$$
1.2 简单线性回归模型
在回归模型中,最基本最简单的模型就是简单线性回归模型,反映的是两个变量之间的线性关系。在输入变量已知条件下,旨在于根据一个输入变量$x$来预测输出变量$y$。简单线性回归模型的一般形式为$$y=\beta_0+\beta_1x+\varepsilon$$其中$\beta_0$和$\beta_1$是回归模型的参数,$\beta_0$称为截距(Intercept),$\beta_1$表示每增加一个单位的输入$x$时输出值$y$的预期变化。$\varepsilon$为均值为0,方差为常数$\sigma^2$的高斯随机误差项。
根据简单线性回归模型的一般形式,可得一元线性回归方程为$$E(y)=\beta_0+\beta_1x$$此式描述了输出变量$y$的期望值与输入变量$x$间的关系。
1.3 模型参数估计
残差(Residual):是指输出变量的真实观测值与预测值间的偏差。根据最小二乘法(OLS)的思想,为了利用收集的数据估计模型参数,应最小化残差平方和(Residual Sum of Square,RSS)。假设一元回归估计方程为$\hat{y}=\hat{\beta_0}+\hat{\beta_1}x$,则$RSS=\sum_{i=1}^{n}(y_i-\hat{y})^2$。为采用求导法导出模型参数,记由RSS表示的损失函数为$L(\hat{\beta_0},\hat{\beta_1})=\sum_{i=1}^{n}(y_i-\hat{\beta_0}+\hat{\beta_1}x_i)^2$。
由损失函数对$\beta_0$求偏导得
\begin{equation*}
\begin{split}
&=>\frac{\partial L(\hat{\beta_0},\hat{\beta_1})}{\partial \hat{\beta_0}}=\sum_{i=1}^{n}2(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)(-1)=0\\
&=>\sum_{i=1}^{n}(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)=0\\
&=>\sum_{i=1}^{n}y_i-\sum_{i=1}^{n}\hat{\beta_0}-\hat{\beta_1}\sum_{i=1}^{n}x_i=0\\
&=>\hat{\beta_0}=\frac{1}{n}(\sum_{i=1}^{n}y_i-\hat{\beta_1}\sum_{i=1}^{n}x_i), (\sum_{i=1}^{n}y_i=n\bar{y},\sum_{i=1}^{n}x_i=n\bar{x})\\
&=>\hat{\beta_0}=\bar{y}-\hat{\beta_1}\bar{x}
\end{split}
\end{equation*}
由损失函数对$\beta_1$求偏导得
\begin{equation*}
\begin{split}
&=>\frac{\partial L(\hat{\beta_0},\hat{\beta_1})}{\partial \hat{\beta_1}}=\sum_{i=1}^{n}2(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)(-x_i)=0\\
&=>\sum_{i=1}^{n}(y_i-\hat{\beta_0}-\hat{\beta_1}x_i)x_i=0\\
&=>\sum_{i=1}^{n}x_iy_i-\sum_{i=1}^{n}\hat{\beta_0}x_i-\hat{\beta_1}\sum_{i=1}^{n}x_i^2=0,(\hat{\beta_0}=\bar{y}-\hat{\beta_1}\bar{x})\\
&=>\sum_{i=1}^{n}(x_iy_i-x_i\bar{y})=\hat{\beta_1}\sum_{i=1}^{n}(x_i^2-x_i\bar{x}) \\
&=>\hat{\beta_1}=\frac{\sum_{i=1}^{n}(x_iy_i-x_i\bar{y})}{\sum_{i=1}^{n}(x_i^2-x_i\bar{x})},(\sum_{i=1}^{n}\bar{x}y_i=n\bar{x}\bar{y},\sum_{i=1}^{n}x_i\bar{x}=n\bar{x}^2)\\
&=>\hat{\beta_1}=\frac{\sum_{i=1}^{n}(x_iy_i-x_i\bar{y}-\bar{x}y_i+\bar{x}\bar{y})}{\sum_{i=1}^{n}(x_i^2-x_i\bar{x}-x_i\bar{x}+\bar{x}^2)}\\
&=>\hat{\beta_1}=\frac{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}{\sum_{i=1}^{n}(x_i-\bar{x})^2}
\end{split}
\end{equation*}
2.预测汽车制动距离
汽车制动距离是指汽车在以一定速度行驶过程中,从脚踩制动踏板开时,至汽车停止行驶时所驶过的路程,是汽车安全性能的重要指标之一。那么如何根据汽车行驶速度来预测汽车的制动距离,汽车行驶速度与制动距离之间又存在怎样的关系呢?利用R软件自带的cars数据集,运用简单线性模型探究洗车行驶速度与制动距离之间的关系。
2.1 预测建模的一般框架
预测建模的一般框架如下图所示。

图1. 预测建模一般框架
2.2 汽车制动距离建模
本次建模的目标为建立汽车行驶速度与制动距离间的回归方程,在已知汽车行驶速度条件下预测汽车的制动距离。其中输入变量$x$为汽车行驶速度,输出变量$y$为汽车制动距离。本次利用的数据集来源于R软件自带cars数据集。
读取cars数据集,并查看其结构。
> str(cars) #查看数据结构 'data.frame': 50 obs. of 2 variables: $ speed: num 4 4 7 7 8 9 10 10 10 11 ... $ dist : num 2 10 4 22 16 10 18 26 34 17 ... > head(cars) #查看数据前6个观测记录 speed dist 1 4 2 2 4 10 3 7 4 4 7 22 5 8 16 6 9 10
根据输出结果可知,cars数据集共有50条观测记录,2个变量,即汽车行驶速度和汽车制动距离。
利用cor()函数计算速度变量与距离变量间的相关系数,并绘制输入变量与输出变量间的散点图。
> cor(cars$speed,cars$dist) [1] 0.8069 > plot(cars$speed,cars$dist,xlab = "input variable x",ylab = "output variable y",pch=19,col="red")

图2. cars数据集散点图
由散点图及速度变量与距离变量间的相关系数为0.8069,可知两变量间近似存在线性关系,因此可选用简单线性回归模型进行建模。
下面采用前述参数估计方法估计回归参数,建立回归方程并与lm()建立模型进行验证比较。
> speed_mean <- mean(cars$speed)
> dist_mean <- mean(cars$dist)
> beta_1 <- sum((cars$speed-speed_mean)*(cars$dist-dist_mean)/sum((cars$speed-speed_mean)^2))
> beta_0 <- dist_mean-beta_1*speed_mean
> beta_0 <- round(beta_0,3)
> beta_1 <- round(beta_1,3)
> beta_0;beta_1
[1] -17.579
[1] 3.932
> model <- lm(cars$dist~cars$speed,data = cars)
> round(coefficients(model),3)
(Intercept) cars$speed
-17.579 3.932
根据以上结果可知,采用参数估计方法与lm()函数得到的回归系数是一样的,即截距项$\beta_0=-17.579$,输入变量系数$\beta_1=3.932$,因此可得回归方程为$y=3.932x-17.579$。则利用cars数据集拟合的回归线方程如下图所示。
> plot(cars$speed,cars$dist,xlab = "input variable x",ylab = "output variable y",pch=19,col="red") > points(cars$speed,3.932*cars$speed-17.579,col="blue",pch=19) #原始输入变量的预测值 > lines(cars$speed,3.932*cars$speed-17.579,col="blue",lwd=2) #拟合的回归线
图3. 拟合的回归方程
3 模型评估
3.1 回归方程的显著性检验
根据拟合的回归线方程可知,输入变量$x$与输出变量$y$之间存在线性关系,为了使模型更有意义,需要对这种关系进行检验。显著性检验通常采用以下三种检验:(1)T检验,用于检验某个输入变量对输出变量的显著性,一般通过p-value判断其显著性,若p-value比0.01小,则表明输入变量与输出变量间的相关关系显著。(2)F检验,用于检验所有输入变量整体上对输出变量的显著性,通常用p-value判断其显著性,若p-value比0.01小,则表明输入变量整体上与输出变量间的相关关系显著。(3)$R^2$与调整$R^2$相关系数检验,用于检验回归方程的拟合度,其值满足$R^2$or调整$R^2\in[0,1]$,其值越接近于1,则表明拟合度越好。
> model <- lm(cars$dist~cars$speed,data = cars)
> summary(model)
Call:
lm(formula = cars$dist ~ cars$speed, data = cars)
Residuals:
Min 1Q Median 3Q Max
-29.069 -9.525 -2.272 9.215 43.201
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -17.5791 6.7584 -2.601 0.0123 *
cars$speed 3.9324 0.4155 9.464 1.49e-12 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 15.38 on 48 degrees of freedom
Multiple R-squared: 0.6511, Adjusted R-squared: 0.6438
F-statistic: 89.57 on 1 and 48 DF, p-value: 1.49e-12
由检验结果可知,因只有一个输入变量,所以T检验和F检验具有相同的p-value为1.49e-12,小于0.01,表明输入变量对输出变量的相关性显著。然而$R^2=0.6511$与调整$R^2=0.6438$,表明回归方程的拟合程度较好。
3.2 残差分布与异常点检测
在拟合得到回归模型后,需要对模型的适用性进行评估,此部分借助plot()函数给出拟合对象的评估结果图。

图4. 拟合回归方程评估图
拟合值-残差图(左上图):残差与拟合值数据点在$y=0$两侧基本上存随机均匀分布,红色线呈现为相对平稳的曲线,没有明显的抛物线形状。
残差分位图(右上图):数据点按近似对角线排列成一直线,近似服从正态分布假设。
标准化残差平方根-拟合值图(左下图):数据点在红色线两侧呈随机均匀分布,红色线呈现为相对平稳的曲线,近似满足同方差性假设。
标准化残差-杠杆值图(右下图):出现了红色的等高线,表明数据中存在明显影响回归结果的异常点,从图中可以看出观测数据49为强影响点。
浙公网安备 33010602011771号