下一章 上一章 目录 设置
15、第十五章 异方差 异方差,就 ...
-
异方差,就是我的存在,让你的生活波动。
陆明远盯着那张残差图,看了很久。
残差图是他之前做的,横轴是出差天数,纵轴是残差(实际情感减去预测情感)。按照回归分析的基本假设,残差应该随机分布,没有规律——也就是说,不管出差天数是多少,残差的大小应该差不多。
但他发现,这张图上有明显的规律。
出差天数少的时候(比如2020年的43天,2021年的12天),残差比较小,集中在0附近。出差天数多的时候(比如2019年的118天,2018年的115天),残差反而更大,更分散。
他把这些点标出来:
出差天数43天(2020):残差-0.15
出差天数12天(2021):残差-1.08(这个很大,但只有一个点)
出差天数85-95天(2007-2011):残差在-1.5到0之间,波动范围1.5
出差天数100-118天(2012-2019):残差在-0.5到+0.7之间,波动范围1.2
看起来,残差的波动幅度,和出差天数没有明显的关系。但有一个问题:2021年的残差-1.08,很大,但出差天数只有12天。这是一个异常点。
如果去掉2021年,再看:
出差天数43天:残差-0.15
出差天数85-95天:残差范围-1.55到-0.36,极差1.1
出差天数100-118天:残差范围-0.5到+0.69,极差1.19
差不多。残差的波动幅度,在不同出差天数下是相似的。这说明,他的模型可能满足“同方差”假设——残差的方差是常数。
但他总觉得不对劲。因为那些大的残差,似乎集中在某些特定的年份,而不是随出差天数变化。
他换了一个画法:横轴改成年份。
2007: -0.43
2008: -1.12
2009: -1.55
2010: -0.36
2011: -0.93
2012: -0.50
2013: +0.26
2014: +0.69
2015: 0.00
2016: -0.12
2017: +0.12
2018: +0.31
2019: -0.50
2020: -0.15
2021: -1.08
这张图上,残差的波动明显在变化。2007-2012年,残差以负为主,波动较大(-1.55到-0.36)。2013-2018年,残差有正有负,波动较小(-0.12到+0.69)。2019-2021年,残差又有大有小(-1.08到-0.15)。
残差的方差,随时间在变化。这叫异方差。
异方差的意思是,误差项的方差不恒定。在不同的时间、不同的条件下,模型的预测准确性不一样。
在他的模型里,2007-2012年,残差的方差大,说明模型在那几年预测不准。2013-2018年,残差的方差小,说明模型在那几年预测较准。2019-2021年,残差的方差又变大,说明模型又不准了。
为什么?
他想,可能是因为那几年,有模型没有包含的因素在起作用。
2007-2012年,是哪些因素?那几年,她父亲去世(2008),她工作压力大(2007-2008),她开始身体不好(2009-2010)。这些因素,模型里没有。
2013-2018年,那几年相对平稳。虽然她2016年第一次查出问题,但她没告诉他,他也不知道。所以模型只靠出差天数,反而预测得准。
2019-2021年,她复发、确诊、最后一年。这些因素,模型里也没有。
所以,异方差的存在,说明他的模型是不完整的。遗漏了重要变量。
陆明远做了一件事:怀特检验。
怀特检验是检验异方差的一种方法。原假设是同方差,如果p值小于0.05,拒绝原假设,说明存在异方差。
他用软件跑了一下。
怀特检验结果:LM统计量=9.87,p=0.043
p=0.043 < 0.05,拒绝同方差假设。存在异方差。
这个结果证实了他的观察:残差的方差不恒定。
他需要修正这个问题。否则,回归系数的标准误可能偏误,显著性检验可能不可靠。
修正异方差的一个常用方法是加权最小二乘。给不同的观测值赋予不同的权重,让方差大的观测值权重小一些,方差小的观测值权重大一些。
但他需要知道权重的形式。也就是说,他需要知道残差的方差和什么有关。
他把残差的平方(代表方差)和可能的变量做相关。
残差平方和出差天数:相关系数0.12,不显著。
残差平方和年份:相关系数0.08,不显著。
残差平方和她健康:相关系数-0.34,p=0.21,不显著但方向对——她不健康的时候,残差平方大。
残差平方和是否有重要事件:相关系数0.41,p=0.12,也不显著但方向对——有重要事件的年份,残差平方大。
看起来,残差的方差,主要和她人生里的“重大事件”有关。那些她没告诉他的事,那些他不在的时候发生的事,那些模型没包括的因素,导致了预测不准。
他没有这些事件的量化数据,没法做精确的加权。
另一个处理异方差的方法是使用稳健标准误。
稳健标准误不改变回归系数,只调整标准误,让显著性检验更可靠。
他用稳健标准误重新估计模型。
模型:Y = 9.82 - 0.062 × X
原来的标准误:斜率标准误=0.013,t=-4.82,p<0.001
稳健标准误:斜率标准误=0.015,t=-4.13,p=0.001
p值从0.0003变成0.001,仍然显著。结论不变。
多变量模型:
Y = 7.82 - 0.031×X + 1.87×健康 - 0.09×t
原来的标准误:X的标准误=0.009,t=-3.45,p=0.005
稳健标准误:X的标准误=0.011,t=-2.82,p=0.016
仍然显著。结论不变。
异方差存在,但不影响根本结论。
陆明远又做了一个分析:分组回归。
他把年份分成两组:2007-2012(前六年)和2013-2018(后六年),2020-2021单独看。
前六年回归:Y = 8.21 - 0.048×X,R?=0.51
后六年回归:Y = 6.34 - 0.029×X,R?=0.43
系数从-0.048降到-0.029,说明在后六年,出差对她的影响变小了。
为什么?
因为后六年,他开始改变了。虽然出差还是多,但他在家的时候,做了更多让她开心的事——买花、陪她去医院、说想她。那些事,抵消了一部分出差的影响。
但2019年,那个系数又变大了?2019年只有一年,没法回归。但2019年的残差是-0.5,说明实际情感比预测低0.5分。那一年,他出差最多,她最不开心,但模型预测她应该有2.5分,实际只有2分。那0.5分,是他没在的代价。
2020-2021年,他出差很少,但她的情感远高于模型预测(2020年实际7,预测7.15,残差-0.15;2021年实际8,预测9.08,残差-1.08)。2021年的残差特别大,是因为她快走了。
分组回归显示,异方差的存在,是因为不同时期的关系强度不同。他的影响,在早期大,中期小,晚期又大。不是常数。
陆明远想,异方差的本质是什么?
是生活的波动。是那些不可预测的事情。是她父亲去世,是她自己生病,是她一个人扛着秘密,是他在家的时候做的那点小事,是他不在的时候她的那些补偿。
这些事,让模型在某些年份特别准,在某些年份特别不准。
准的时候,是那些“正常”的年份——他出差,她等他,没有大事发生。不准的时候,是那些“异常”的年份——有大事发生,有好有坏。
异方差,就是人生的起伏。
他翻出那些残差大的年份,看看发生了什么。
2008年,残差-1.12。那一年,她父亲去世。大事。
2009年,残差-1.55。那一年,她身体开始不好,累,但没告诉他。大事。
2014年,残差+0.69。那一年,他带她去三亚了。好事。
2021年,残差-1.08。那一年,她快走了。大事。
这些年份,都是异方差的来源。是模型无法预测的波动。
他想,如果有一个完美的模型,包含了所有变量——她的健康、他的改变、那些大事小事——那么残差就会很小,方差就会恒定。
但那样的模型不存在。也不可能存在。因为生活本身,就是异方差的。
陆明远想起统计学里一个概念:ARCH模型。
ARCH模型是专门用来描述异方差的——方差不恒定,而且方差本身有规律,比如大的波动之后往往跟着大的波动,小的波动之后跟着小的波动。
他看他的残差序列:
2007:-0.43, 2008:-1.12, 2009:-1.55, 2010:-0.36,
2011:-0.93, 2012:-0.50, 2013:+0.26, 2014:+0.69,
2015:0.00, 2016:-0.12, 2017:+0.12, 2018:+0.31,
2019:-0.50, 2020:-0.15, 2021:-1.08
这个序列,确实有波动聚集的现象。2008-2009年,连续大的负残差。2013-2014年,连续大的正残差。2019-2021年,又有大的负残差。
大的波动之后,跟着大的波动。小的波动之后,跟着小的波动。
这就是波动聚集。
他做了一下ARCH效应检验。
结果:LM统计量=6.54,p=0.038,存在ARCH效应。
她的生活,有波动聚集。一段坏日子之后,往往跟着另一段坏日子。一段好日子之后,往往跟着另一段好日子。好日子和坏日子,会聚集在一起。
2008-2009年,坏日子聚集。2013-2014年,好日子聚集。2019-2021年,又是坏日子聚集。
这些聚集,是生活本身的规律。
陆明远想到一个问题:波动聚集的原因是什么?
是因为外部冲击的持续性。一个坏消息来了,影响会持续一段时间。她父亲去世,影响了好几年。她生病,也影响了好几年。
是因为他行为的持续性。他出差多的年份,会连续多。他出差少的年份,会连续少。他的行为,也是聚集的。
是因为他们关系的惯性。关系好的时候,会持续好一段时间。关系差的时候,会持续差一段时间。
这些都是正反馈。好循环,坏循环。
他想,如果把他们的婚姻比作一个系统,这个系统有正反馈机制。好的时候,越来越好;坏的时候,越来越坏。直到外力打破。
2003年的非典,打破过一次坏循环,让他们有了一段好日子。2020年的疫情,又打破过一次坏循环,让他终于在家陪她。
但2021年,没有外力了。只有结束。
陆明远看着那张残差图,想着那些波动聚集的年份。
2008-2009年,坏日子。那两年,她经历了什么?
2008年,父亲去世。2009年,身体开始出问题,累,但没告诉他。他呢?2008年出差92天,2009年出差85天。还是很多。
2013-2014年,好日子。那两年,发生了什么?
2013年,她评正高。2014年,他带她去三亚。他在家的时间,做了一些让她开心的事。
2019-2021年,又是坏日子。那三年,发生了什么?
2019年,她复发,没告诉他。2020年,确诊。2021年,离开。
波动聚集,就是这些日子的集合。
陆明远想起一个词:条件异方差。
条件异方差的意思是,方差不恒定,而且这种不恒定可以用过去的波动来预测。今天的波动大,明天的波动也可能大。
她的生活,就是条件异方差的。坏日子之后,往往还是坏日子。好日子之后,往往还是好日子。
但有一个例外:2003年,非典打破了一次。2020年,疫情打破了一次。
打破,需要外力。
他没有成为那个外力。他是外力的一部分——他的出差,是坏日子的来源。他的陪伴,是好日子的来源。但他没有主动去打破那些坏日子,他只是被动地等外力来。
等非典,等疫情,等她确诊。
然后,太晚了。
那天晚上,陆明远做了一个梦。
梦里他站在一片波动的水面上。水面一会儿平静,一会儿汹涌。平静的时候,他能看见自己的倒影;汹涌的时候,倒影破碎,什么都看不见。
林墨站在水中央,穿着那件白衬衫,扎着马尾。她脚下的水面很平静,她的倒影清晰可见。
他想走过去,但水面开始波动。他越靠近,波动越大。他停下来,波动就小一点。
她看着他,说:“明远,你知道什么是异方差吗?”
他说:“知道。方差不恒定。”
她说:“对。就像这水面。你在的时候,波动大。你不在的时候,波动小。”
他愣住了。
她说:“你来了,我就波动。你走了,我就平静。但不是开心的平静,是死寂的平静。”
她低下头,看着水中的倒影。
“这些年,我的生活,就是异方差的。你在的时候,波动大——有时候开心,有时候难过。你不在的时候,波动小——但不是好,是麻木。”
他张了张嘴,说不出话。
她说:“你愿意让我的生活,变成同方差吗?”
他问:“怎么变?”
她说:“要么一直在,要么一直不在。别一会儿在一会儿不在。”
他沉默了。
她说:“你选哪个?”
他说:“我选一直在。”
她笑了,说:“那就一直在。”
然后她消失了。
他醒了。
凌晨四点,窗外还是黑的。他躺在床上,心跳得很快。
她问他:你选哪个?
他选了:一直在。
但太晚了。
陆明远起床,走到书桌前。他打开那个文件袋。
他在上面写到:
“林墨:
我终于知道什么是异方差了。异方差,就是我的存在,让你的生活波动。
我在的时候,你波动大——有时候开心,有时候难过。我不在的时候,你波动小——但那是死寂的平静,不是好。
这些年,你的生活,一直是异方差的。2008-2009年,坏日子聚集。2013-2014年,好日子聚集。2019-2021年,又是坏日子聚集。
波动聚集,是因为我的行为在聚集。我出差多的年份,连续多;我出差少的年份,连续少。我陪伴多的时候,连续多;我陪伴少的时候,连续少。
我让你的人生,变成了条件异方差。可以用过去预测未来。
但未来,没有未来了。
你问我:愿意让我的生活变成同方差吗?要么一直在,要么一直不在。
我选了:一直在。
虽然晚了,但我选了。
从今以后,我会一直在。在你留下的数据里,在这些信里,在我余生的每一天里。
我会一直在。”
她会听的。
她一直在听……