零基础数模之回归专题

Kai / 2024-01-28 / 原文

回归分析专题

  1. 数据预处理

回归分析前要先进行数据预处理,主要有以下三种

  1. 中心化处理,使得样本均值为0

  1. 无量纲化处理,使得样本方差均为1

  1. 标准化处理,即同时进行中心化处理和无量纲化处理

二、常见回归模型(方法)

  1. 线性回归

线性回归使用直线在因变量y与自变量X(X是列向量,包括1~n个自变量)直线建立一种关系,即y=w*X+b+e,预测量y’=w*X+b,行向量w称为回归系数

我们的目标是使得预测量y’与真值y之间的误差足够小,那便只需要按照最小二乘估计原则,让y-y’=e的平方和足够小即可

在使用线性回归前,要从逻辑上或者示例图上大致确定自变量和因变量之间的关系是线性关系

对于回归模型y=Xw+e而言,(X是矩阵,每行是“一组自变量取值+一个常量”,有多少行便有多少组完整的数据,Y此时是列向量,每一个的元素值对于着对应行的X值,e是偏差列向量),列出正规方程组X’y=X’Xw,得到w的最小二乘估计的表达式为w=(X’X)^(-1)*X’y

要注意,只要回归系数和自变量之间是线性的就可以,自变量本身可以是由其他自变量非线性表示的,仍然算是线性回归模型。但如果回归系数和自变量之间不是线性的,那边不算是线性回归模型,如下(这事有点抽象,有待进一步阐明*)

2.逻辑回归*

当因变量属于二元型变量(如0、1型变量)时,我们就应该使用逻辑回归

odds=p/(1-p)

=probabilityof event occurrence/probability of not event occurrence ln(odds)

= ln(p/(1-p))logit(p)

= ln(p/(1-p))

= b0+b1X1+b2X2+b3X3....+bkXk

p表示某个特征的概率

我们使用Logit函数作为连结函数,我们选择参数的宗旨是最大化似然估计值,不再是最小化偏差平方和了。

逻辑回归不要求自变量和因变量是线性关系,可以处理各种类型的关系,但当样本量较少时效果不如线性回归,因此常常用于样本量较大的问题中

如果因变量的值是定序变量,则称它为序逻辑回归。

如果因变量是多类的话,则称它为多元逻辑回归。

这块暂时没说清楚,明天再说

3. 多项式回归

多项式回归可以达到任意大的R值,但我们要注意防止欠拟合和过拟合的出现,选择恰当的阶数,在matlab中使用[]=polyfit()即可实现

  1. 利用线性回归模型进行非线性回归

即对原数据集进行某种非线性变换,然后使得新数据集具有线性相关性,然后进行线性回归分析。

三.检验与评测

完成回归模型的计算后,我们评测拟合程度,评测方法如下:

R方分析

定义R方=1-SSE/SST,用于表示预测程度,

这很合理,因为SSE/SST相当于把真值中心化了之后真值平方和的偏差平方和的比值,SSE/SST越接近与0则说明线性相关性越强,越接近与1则说明预测值可能和真值毫不相关,即线性相关性极弱。

对应的,R方越接近0则相关性越弱,越接近1则线性相关性越强,该指标可以很好的反应拟合程度的好坏。

我们再引入以下概念:

总平方和SST:真值与平均值差的平方

回归平方和SSR:预测值与平均值差的平方

残差平方和SSE:真值和预测值差的平方,即残差的平方

不难证明当预测值是依据最小二乘法算出来的时候,SST=SSR+SSE,换句话说在线性回归模型中SST=SSR+SSE,非线性回归模型中则该式不成立

因此,在线性回归模型中,常利用等式SST=SSR+SSE推出R方=SSR/SST

F检验

F检验负责检验偏差水平的高低,综合分析拟合程度的好坏

回归自变量数量的增加总会导致R方的增加,很明显通过不同回归自变量数达成的同一R方的“含金量”是不同的,因此我们如果想对两个回归自变量数目不同的模型进行有意义的比较,我们需要对残差平方和(即方差)进行F检验

F检验即方差分析

用于试图证明某因素对结果毫无影响或者影响极大时使用方差分析法,换句话说,方差分析用于显著性检验中,检验两种情况下的结果是否有明显差异。

首先要给定1个原假设H0,H0通常为“某因素对结果毫无影响”,也可以设为等价的说法“某因素的回归系数和0没有显著性差异”,与此同时存在1个与H0相对立的备择假设H1,H0和H1有且仅有1个成立。然后进行通过一次随机仿真实验进行抽样,再然后分析结果。

若发生了小概率事件,可依据“小概率事件在一次实验中几乎不可能发生”的理由,推翻原假设,即拒绝原假设H0,从而说我们有1-Alpha 的把我说明备择假设H1成立;

反之,小概率事件并没有发生,就没有理由拒绝H0。因此我们还要确定多大概率的时间算小概率事件,即显著性水平Alpha,一般设置Alpha=0.05

只考虑一个因素A对于所关心的试验结果的影响。A 取k 个水平,在每个水平上作 ni次试验(其中i=1,2,⋯,k )试验过程中除A 外其它影响试验结果的因素都保持不变(只有随机因素存在)。我们的任务是从试验结果推断,因素A 对试验结果有无显著影响,即当A 取不同水平时试验结果有无显著差别。

记第i个水平的第j个观测值为Yij,则Yij=ai0+eij(ai0是Y第i行的平均数,即A取第i个水平时实验结果的均值,eij表示每次实验的随机误差)

eij作为随机误差,自然是相互独立的。一般还假设eij都服从均值为0方差相同的某个正态分布。

记Ybar=Y中每个元素的平均值

则记ai=ai0-Ybar,表示由不同的A水平带来的附加效应

那么Yij=Ybar+ai+eij

因此原假设A对实验结果Y毫无影响的等价表述就是a1=a2=...=ak=0

Yij并不相同,这其中有随机误差的因素,还可能有由不同水平的A所带来到底差异化因素,那么我们分别定义SS、SSA、SSE,分别用来刻画总偏差、A带来的偏差和随机因素带来的偏差

以下三个式子是很自然的定义

SSA

代入即可证明SS=SSE+SSA (SS其实就是前面所说的SST)

这里要引入一个概念,自由度,即样本所能提供的独立的信息的个数,一般来说,自由度等于独立变量数减掉其衍生量数。自由度的大小会影响方差分析的结果和检验的效力。

拿SSA为例,当我们已知的情况下,我们只要知道k-1个即可算出SSA,也就是说这组样本中其实只有k-1个独立数据,因此SSA的自由度应该是k-1,那么用来表示因素A带来的偏差的MSA就应该等于SSA/(k-1)而不是SSA/k,(这么做其实不是很有道理但是很好用),同样设ni的和为N,则SSE=SS-SSA=(N-1)-(k-1)=N-k,因此表示随机因素带来偏差的MSE应该等于SSE/(N-k)。还不理解就看这个:

https://www.zhihu.com/question/20099757/answer/26318750

统计学家指出,基于前面随机偏差服从正态分布的假设和基于自由度给出表示偏差的量的行为,我们可以认为当H0成立时MSA/MSE的值(即F值)服从与F(k-1,n-k)分布,那么我们就可以用实际的MSA/MSE值和显著性水平Alpha来进行F检验了,如果MSA/MSE的值在F(k-1,n-k)中出现的概率小于Alpha,我们就拒绝接受H0,如果出现概率大于Alpha,我们则暂时没理由拒绝H0,即承认A与Y毫不相关,敏感性很低

整个过程可以用matlab的anova1函数来计算,还能自动绘图呐

F是关于似然比统计量单调的函数,因此F检验属于似然比检验。

或者我们也可以使用调整后的R方来进行此类比较,设变量数为p,样本量为n,则调整后R方的计算公式为:

这个量的引入其实就是为了体现统计学家的一个主张,即在回归建模时,采用尽可能少的自变量,不要盲目地追求复判定系数R方的提高,如果引入一个新变量,使得R方有所提高,但调整后R方几乎没提高则不必增加此变量。

注意到了吧,调整后R方的计算公式用到了和F检验一样的自由度思想,因此两种方法使用一种即可,调整后R方完美兼顾了回归自变量数目和拟合程度(R方)两个需要考虑的因素

这里需要引入一个matlab中常见的概念,p值,指“在原假设正确的情况下,出现现状或比现状更差的情况的概率”,通常p值足够小则说明原假设错误,p值过大则说明原假设正确。

一般p值足够小说明通过F检验,说明拟合程度足够好

t检验

t检验负责检验哪些回归自变量没有有存在的必要

可以回归系数的均值与0是否有显著差异,回归系数p值过大则接受原假设,认为该回归字数的均值与0没有显著性差异,该变量不应该存在,未通过t检验,p值足够小则说明通过检验,该变量可以存在

四、解决缺陷

多元变量的回归模型就算R值过高也未必能实现特别好的预测,因为如果自变量过多,会导致过拟合,使得模型参数关于数据集高度敏感。

若R方和调整后R方相差过大,说明考虑的变量过多(很明显,看调整后R方的计算公式即可发现这一点),模型可能具有多重共线性缺陷,我们应该考虑减少或调整变量

如果自变量过少,则会导致欠拟合,即模型可能有异方差性缺陷,我们应该考虑引入交互项从而考虑到所有因素。

因此,对于多元变量的回归模型而言,不论是哪种回归模型都可能有较大缺陷,我们要会分析缺陷、解决缺陷

检验模型是否有缺陷有多种办法

我们可以简单的删除或增加一个变量,然后再做回归分析,如果删除一个变量后回归系数极其敏感的大幅度变化,则说明此时的估计系数不可信,要思考回归模型有什么缺陷。

也可以系统性地进行各种检验,发现缺陷并解决缺陷,直到确保没有缺陷为止。

缺陷分类

多元线性回归的常见缺陷有:多重共线性,自相关性和异方差性

--多重共线性

----定义

自变量之间具有较大的线性相关性则成当前模型具有多重共线性

----造成缺陷的原因

对于线性回归模型y=Xw+e而言,w的最小二乘估计的表达式为w=(X’X)^(-1)*X’y,当X线性相关性较大时,X和X’行列式极小,X’X更是行列式极小,逆矩阵等于伴随矩阵除以行列式,因此行列式极小时逆矩阵的计算会有极大误差。

以上是一个比较狭义的解释,无法解释为什么逻辑回归中也会有多重共线性问题,因此有了第二种解释:

当存在多重共线性的时候,按照自变量的线性关系对回归系数做线性变换,误差平方和却可能几乎不变,也就是说回归系数的剧烈变化无法体现在误差平方和上,误差平方和已经不适合用来表示模型拟合的好坏程度了,而我们计算模型时却仅仅依照误差平方和最小的原则,显然会造成较大误差。

在逻辑回归中,似然函数值的计算公式中自变量也是线性的,因此如果按照线性关系对回归系数做较大线性变换的同时也可以使似然函数值变化不大,则使得似然函数值不再适合用于体现模型你和成都,而MLE的原则恰恰仅仅是使得似然函数值最大,因此会造成较大误差,因此逻辑回归模型也存在多重共线性问题

----分析方法

我们要先用皮尔逊相关系数(在线性回归分析中,皮尔逊相关系数r的平方就是拟合优度或者说决定系数R方,即r(皮尔逊相关系数)=R,r方=R方)分析问题中的连续型自变量之间是否有多重共线性的问题,如果两自变量的皮尔逊相关系数大于0.8则认为存在多重共线性,

对于离散型自变量而言则辅以其他方式来分析是否存在多重共线性问题

我们还可以进行t检验,如果t检验不显著,则说明当前模型可能存在多重共线性

最正规的检验方法是分析方差膨胀因子VIF的值,

若有自变量A、B、C,则ABC分别有一个VIF值,把A作为因变量,其他原自变量均作为自变量做一次回归分析,计算新回归分心的R方,VIF_A就等于1/(1-R方),通常VIF_A值越接近1则说明A越独立,VIF_A大于5则说明A和其他变量有弱线性相关性,VIF_A大于10则可以直接认定当前模型存在多重共线性

(有的文章还会提到利用容忍度Tol来判断多重共线性,容忍度其实就是VIF的倒数,因此既然已经考虑了VIF,就没有任何必要还要考虑Tol了)

----解决方法

1.我们往往使用向前选择法,向后剔除法和逐步筛选法来选择重要的自变量,高度相关的自变量中只保留一个,其余皆删去,从而降低变量元数,

向前选择法

一旦某个自变量被选入模型,它就永远留在模型中。然鹅,随着其他变量的引入,由于变量之间相互传递的相关关系,一些先进入模型的变量的解释作用可能会变得不再显著。

向后剔除法

缺点:一旦某个自变量被删除后,它就永远被排斥在模型之外。但是,随着其它变量的被删除,它对 y 的解释作用也可能会显著起来。

因此我们更常使用逐步回归法,这种方法综合了向前选择和向后剔除,采用了边退边进的方法,具体如下:

对于模型外部的变量,只要它还可以提供显著的解释信息,就可以再次进入模型

对于已在内部的变量,只要他的存在无意义,即偏F检验(偏F检验似乎等价于t检验)不能通过,则还可能从模型中删除

当然,为了防止变量过度次数地反复进出,一般定义一个选入变量的偏F检验最小临界值F进,还要定义一个删除变量的偏F检验最大临界值F出,要注意F进>F出。通常定义为0.1和0.05

  1. 进行特征合并,将相关变脸线性组合在一起处理(即先对线性相关的自变量进行线性回归分析,再把回归得到的因变量当做自变量)

3.采用有偏估计法,比如通过主成分分析法等数据降维方法进行特征降维,或者利用偏最小二乘法*、岭回归法*等等

4. 引入L1和L2正则化*

  1. 差分法:将原模型变换为差分模型*

--异方差性

----定义

随机误差项理应具有相同的方差,如果随机误差项具有不同的方差,那么就称当前模型具有异方差性

----原因

我们的模型中可能遗漏了部分解释变量,使得这部分会造成定向影响但并未被考虑在内的因素被归入了随机误差项,从而使得异方差性产生

因变量和自变量之间如果具有非线性关系,在线性回归模型中被简单处理成了线性关系,那么此时就也会产生异方差性

在随时间变化的数据集中,随着时间的推移,抽样技术或搜集方法得到改进,使得测量误差逐渐减少,或者还有可能随着时间的推移误差逐步积累,总之肯呢个产生异方差性

----影响

会使得我们低估回归系数的方差,使得高估回归系数的t检验值,使得原本不显著的回归系数被误认为是显著的回归系数,换句话说异方差性的存在会使得参数的显著性检验时效

----检验方法

最方便的方法是残差图分析法,以e为纵坐标,以各自变量为因变量分别绘制残差图,然后根据残差图直接分析是否存在异方差问题(鉴别方法如下)

----解决方案

1我们设法检验偏差量e的方差与各自变量的相关性,然后利用加权最小二乘估计法重新求解模型

2. 引入交互项,如不仅将x1和x2作为自变量,还把x1方,x2方,x1x2作为自变量等等

--自相关性*

----定义

若误差项的取值受自身影响,则称当前模型具有自相关性

----影响

会使得误差项具有明显的正相关

----检验方法

利用DW检验*或迭代法*

F检验、t检验、方差检验的关系,F值t值的意义等等尚未搞清楚,上述文章中的*内容也暂未搞清楚,有待进一步的研究,自相关性和多重共线性的详细区分也没太搞清楚,明天再说