一元线性回归分析—统计学(九)
回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。回归分析是建模和分析数据的重要工具。在这里,我们使用曲线/直线来拟合这些数据点,从曲线或线到数据点的距离差异最小。
一、均值的回归
经常会听到一些反转故事,一些本来在校时非常优秀的人,后来变成了平凡人,而本来那些平凡的人之后又做出了一些超越他们水平的事情。那么是什么原因导致的这些变化,均值回归这个思维模型可以解答这个问题。
1.1 均值回归
均值回归的概念是指,在任何涉及多变量复杂现象中,因为偶然性的作用,任何情况都有可能发生,但一些极端现象之后往往会跟随着更平常的现象。概念通常是拗口难理解的,这里用举例说明一下,就像股票不会永远的涨和永远的跌,涨的多了就会向平均值移动下跌,反之也是一样。注意:这里只是一个例子,让大家更好的理解均值回归这个现象,但如果你照着这个思路来买卖股票,最后肯定会倾家荡产。大家要记住均值回归不是自然法则,它仅仅是一种统计趋势,所以导致均值回归的现象可能会需要很长时间才能发生。
1.2 回归的本质
如果看过我之前思维模型笔记,聪明的读者就可能会发现,均值回归好像就是大数定理。它两个说的好像是一个事情,没错,大数定律告诉我们长期会趋于稳定,而小数定律告诉我们短时间内可能会发生各种极端情况,两者一结合就是均值回归现象了。
如果更进一步来说,均值回归来源于相关性(因子与结果之间的因果关系)。相关性值的范围在-1到+1之间,如果是1,那么就是相关性处于完美,如果是0,那么就是不相关,而-1指的就是负相关。例如,正确的有效的时间投入到学习,那么你的学习成绩就会提高。如果世界是线性的,那么就可能出现你每投入1小时,成绩就会固定上升某个分数,在这种世界中,成绩这东西可能就不会存在,因为只要统计时间就可以了。但我们的现实世界是非线性的,换句话说,这个相关性是在0到1之间的某一个位置,因为还有很多其他因素都在影响着学习成绩这一个结果,如考试当天的心理状态,学习效率,智力等等。所以我们的考试成绩不会保持一成不变,而是基于你自身“能力”,上下浮动的一个数值。
1.3 回归的启发
心理偏差
我们经常会把一些极端事情的改善归功于那些变化的事情上。这是什么意思?举例,你在媒体上看到一个报告,上面说使用某能量饮料治疗的抑郁儿童在三个月有着明显的改善。其事情的真实性也没问题,该机构坚持对一群抑郁的孩子一段时间,临床上有显著改善。看到这里可能就不少人都会相信了,但实际上这些沮丧的孩子如果抱着一只猫20分钟,抑郁症也会有明显的改善。假如我们以高于60到100分为抑郁的情绪值,因为抑郁这种状态属于情绪上的极端值,它不会一直保持不动,这些抑郁的孩子可能什么都没做三个月后,原本在80分的情绪减少到70分。这个分数已经降低了一大截,但和能量饮料并没有什么关系,现在大家能否理解了呢?这也是为什么有很多谣言出现的原因,是因为人类被变化吸引的倾向在作用。
跟踪记录,不依赖于某一次的成功
想要知道是否是真的有用,还是发生了均值回归现象,最好的方法就是跟踪记录,其思路就是增加对照组。例如上面的例子,多次不断的进行跟踪监测,对于条件进行更换对照,之前饮料有功效的结论可能就不成立了(可能是只是因为商家的某种营销手段)。再举另一个常见的例子,有人刚开始炒股发现好像怎么买都能赚钱,这就给他产生以后的日子也可以通过买卖股票赚钱,为了炒股还把家里的房子卖了,但后来赔的越来越多,最终把所有的积蓄都赔进了股市。还有一个例子,考试偶尔考了一次很好的成绩,以为自己真的进步了,然后就容易懈怠,第二次考试发现分数还不如之前的分数。因为偶然的成功而导致后来的失败的例子在生活中经常能够发现,如果上面的例子都进行了一定的记录,就不可能不会出现后来的结果了。跟踪记录的好处在于我们面对一些机会的时候,能意识到运气的影响可能会随着时间推移而退化,从而更加合理的调整自己的策略。
二、一元线性回归分析
一元线性回归分析预测法,是根据自变量x和因变量Y的相关关系,建立x与Y的线性回归方程进行预测的方法。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测。一元线性回归是通过一条直线来拟合这些数据点,使得各个数据点到直线距离的累积最小,如下图所示。
2.1 回归分析模型
一元线性回归模型
线性回归模型是数据科学领域最简单的模型,很多复杂的模型 (如多项式回归、逻辑回归、SVM) 都是建立在线性回归模型的基础上的,或者是从其中能找到线性回归模型的影子。最简单的线性回归模型就是一元线性回归模型,其模型的形式就是:
由式(1)可知,线性回归是针对连续数值型变量的模型,且样本只有一个特征,即只有一个自变量。所谓线性,是指方程是线性的,也就是在寻找一条直线来拟合数据;所谓回归,是指用方程来模拟变量之间是如何关联的。线性回归就是要找一条直线,并且让这条直线尽可能地拟合训练样本中的数据点。虽然我们可以找到一条拟合训练集的直线,但是同一训练样本可以拟合出很多条直线,我们如何判断那条直线是最适合的?这就引出了如何评价模型结果的好坏,又通过什么样的方式来判断?接下来我们通过损失函数来了解线性回归的评价标准。
损失函数
为了衡量模型逼近直线的效果,很自然的就会想到衡量预测值与真实值之间的差别。假设预测值为\(f(x)\),真实值为\(y\),样本的数量为\(n\),那么就有:
也就是每一个样本的预测值与真实值差的平方和,取平方是为了消除负数的影响。式(2)就是均方误差(MSE, Mean Squared Error),它对应了常用的欧氏距离(也就是计算两点之间距离)。均方误差是机器学习中回归问题经常使用的评价方式,在机器学习中称之为损失函数。可以看到一个公式在不同的地方会有不同的名字,很容易搞混,但我们只要理解其中的基本思想就会很清楚了。所以,现在我们知道了损失函数是衡量回归模型误差的函数,也就是我们要的“直线”的评价标准。这个函数的值越小,说明直线越能拟合我们的数据。得到损失函数后,又如何求得使损失函数最小的a和b呢,接下来我们通过最小二乘法来获得问题的解。
最小二乘法优化目标
回归方程里,求得特征对应的最佳回归系数的方法是最小化误差的平方和,也就是损失函数。
假设式(2)的值为\(S\),将式(1)代入式(2)可得:
回归分析过程
例1 一家保险公司收集了每周加班时间和新保单签发的数据,数据如下表:
周序号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
\(x\) (单位:小时) | 825 | 215 | 1070 | 550 | 480 | 920 | 1350 | 325 | 670 | 1215 |
\(y\) (单位:新签保单数) | 3.5 | 1.0 | 4.0 | 2.0 | 1.0 | 3.0 | 4.5 | 1.5 | 3.0 | 5.0 |
拟讨论这两个变量之间是否有显著的回归关系,以便对加班时间进行控制与管理。
2.2 散点图直观分析
x<-c(825,215,1070,550,480,920,1350,325,670,1215)
y<-c(3.5,1.0,4.0,2.0,1.0,3.0,4.5,1.5,3.0,5.0)
n<-length(x)
split.screen(c(1,3))
screen(1)
plot(x,y,pch=16)
title(main="数据散点图")
观察发现数据之间具有很好的相关关系,计算其相关系数为0.9489428,可以进一步探索他们之间的回归关系。
cor(x,y)
0.9489428
2.3 回归方程和回归曲线
在R语言中,使用lm函数可以非常容易地求出回归方程,用它来拟合线性模型,可以进行回归、方差分析和协方差分析。
lm(formula, data, subset, weights, na.action,method= "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE,singular.ok =TRUE, contrasts = NULL, offset, ...)
参数 | 说明 |
---|---|
formula | 描述要拟合的回归模型 |
data | 数据框或列表 |
subset | 样本观察值的子集 |
weights | 权重向量,应该是数字向量或NULL。使用加权最小二乘方法时,weights是数字向量;若使用普通最小二乘,则为NULL |
na.action | 表示数据包含缺失值NA时,应该如何处理。默认设置是na.fail,表示如果数据不包含缺失值就直接返回,否则显示出错。其他设置包括NULL,表示不对缺失值做处理;na.omit表示忽略包含缺失值的观察数据;na.pass表示返回的对象不变。例如,na.action(na.omit(c(1,NA))) |
method | 指出拟合的方法。目前仅支持method="qr"(QR分解),method="model.frame" 返回模型框架(与下面的method=TRUE作用相同) |
model | 均为逻辑值,如果为TRUE返回合适的模型框架 |
x | 均为逻辑值,如果为TRUE返回模型矩阵 |
y | 均为逻辑值,如果为TRUE返回响应 |
qr | 均为逻辑值,如果为TRUE返回QR分解 |
Call:
lm.reg=lm(formula = y ~ 1 + x) #回归分析处理程序
lm.reg
Coefficients:
(Intercept) x
0.118129 0.003585
即回归截距的估计值为0.118129,回归斜率的估计值为0.003585 。
plot(x,y) #必须先画散点图
abline(lm(y~1+x)) #abline()函数主要是再在散点图上画一条直线
title("Regression") #给图添加上标题
2.4 方差分析和回归系数检验
方差分析
anava(lm.reg)
Analysis of Variance Table
Response: y
Df Sum Sq Mean Sq F value Pr(>F)
x 1 16.6816 16.6816 72.396 2.795e-05 ***
Residuals 8 1.8434 0.2304
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
一元线性回归方差分析表如下:
方差来源 | 自由度df | 平方和 | 均方 | F value | Pr(>F) |
---|---|---|---|---|---|
回归 | 1 | SSR = 16.68 | SSR/1=16.68 | $$\frac{SSR/1}{SSE/(n−2)}=72.40$$ | 2.8*\(10^{-5}\) |
残差 | n-2 | SSE=1.84 | SSE/(n-2)= 0.23 | ||
总和 | n-1 | SST=18.525 |
Pr(>F)非常小,表明回归分析拟合效果很好。
回归系数检验
summary(lm.reg)
Call:
lm(formula = y ~ 1 + x)
Residuals:
Min 1Q Median 3Q Max
-0.83899 -0.33483 0.07842 0.37228 0.52594
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1181291 0.3551477 0.333 0.748
x 0.0035851 0.0004214 8.509 2.79e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.48 on 8 degrees of freedom
Multiple R-squared: 0.9005, Adjusted R-squared: 0.8881
F-statistic: 72.4 on 1 and 8 DF, p-value: 2.795e-05
2.5 残差分析
残差图1
#绘制残差图如上图
lm.res=residuals(lm.reg)
plot(x,lm.res)
残差图2
par(mfrow=c(2,2))
plot(lm.reg)
残差图( Residuals vs Fitted ):横坐标为拟合值Y,纵坐标为残差。从散点图中可以看出,数据点基本均匀地分布在横轴y=0两侧时,第5、9和10点残差很大。
正态分位图(Normal Q-Q ):Q-Q图中点的分布集中在y=x这条直线上时,说明残差是服从正态分布的。
位置-尺度图(Scale-Location):纵坐标为标准化残差的平方根,残差越大,点的位置越高。
曲式距离图(或称为残差杠杆图,Residuals vs Leverage ):图中的曲式距离( Cook's distanceplot)表示每一个数据点对回归线的影响力,第10个点的值较大,表示当删除该数据点时,回归系数会有实质上改变,为异常值点。根据残差分析的结果,我们将第10个点从原始数据中剔除,重新拟合回归方程(略)。
2.6 回归系数的置信区间和回归预测
回归模型通过上面过程确定下来后,就可以进一步的泛化与外推,用来预报了解其未来的变化和发展。
回归系数的置信区间
confint(lm.reg)
2.5 % 97.5 %
(Intercept) -0.700843004 0.937101152
x 0.002613486 0.004556779
回归截距的95%的置信区间为(-0.700843004,0.937101152)
回归斜率的95%的置信区间为 (0.002613486,0.004556779)
回归预测
pre=data.frame(x=700)
lm.pre=predict(lm.reg,pre,interval="prediction",level=0.95)
lm.pre
lm.pre
fit lwr upr
2.627722 1.465196 3.790248
即知当x=700时,对应签发的保单数y=2.627722,且其置信水平95%的区间估计为(1.465196,3.790248)。
三、总结
认识统计学,要清楚知道差异性与相关性内在的统一性。无论我们采用何种统计学方法,其实都在探讨客观世界中变量与变量的相关性。千万不要认为只有相关分析与回归分析才探讨相关,更不要觉得只有相关分析才是分析相关性。无论是利用假设检验方法评价差异性,还是利用回归技术探讨影响因素,统计学无不在证明两类属性或变量之间到底有没有关系,甚至是因果关系。本文形象生动而又系统详尽地阐述了回归分析的基本理论和具体的应用技术,还辅以启发式的分析和直观的图形方法,介绍了伴随着大数据而产生的前沿的回归方法。
均值回归是典型的回归现象,其本质来源于相关性,而之前的大数定理和小数定理综合起来看,说的就是均值回归。均值回归能够帮助我们减少一些错误的判断,避免一些思维偏见。人类习惯性地将一些极端值的变化归因于一些变化。要养成平时记录的好习惯,这样能帮助我们识别我们是真的在进步还是发生了均值回归现象,减少那些短时间的运气误导,避免自我松懈。虽然有均值回归现象,但是想要精确预测是很不容易的,首先均值回归的时间受很多因素影响,我们无法确定,第二波动性非常大,也不规则。第三,变化的系统自身也不稳定,均值也会上下偏移。用均值回归的思维模型来看人生:自己的欲望和能力的结合,决定了你到达的位置,虽然中间会有波动,会有起伏,但是金子总会发光的。
参考文献
- 思维模型19 - 均值回归是什么?
- 完整详细的回归分析实例R语言实现(含数据代码)
- [学习笔记 第九章(上)一元线性回归分析](https://cloud.tencent.com/developer/article/1412088}