先说结论,不需要
线性回归的方程是:y=β0+β1x1+β2x2+……+μ
对于这个方程的假设是:
1.y与x呈线性关系
2.μ与x不相关
3.μ期望值为0(E(μ)=0)
4. μ独立同分布(任何两个误差项协方差为0且方差相等)
5.μ服从均值为0的正态分布
根据以上五个假设,我们可以看到,唯一一个和因变量有关的假设是假设1:y与x呈线性关系,但有了后面几个对误差项μ的假设以后,假设1也不重要了,因为如果y与x不呈线性关系,那么我们使用线性回归模型时μ自然也会违背原有的假设。
我们可以看到,其实对线性回归最重要的假设都集中误差项的假设上,之所以对误差有严格的假设,是因为线性回归的求参方法最小二乘法在这些严格的假设下才能更好地发挥作用。当误差项μ满足2,3,4假设时,最小二乘法就是总体参数的最佳线性无偏估计方法,而当误差项μ进一步满足假设5时,最小二乘估计与最大似然估计的结果是一致的,也就是说,此时的参数估计结果不仅是最佳线性无偏估计方法,也是最佳非线性无偏估计方法。
总而言之,线性回归模型的假设主要是对其误差项μ的假设,对μ的严格假设是为了最小二乘法更好产生作用,而与y是否正态分布无关。
那么为什么很多人会认为线性回归中需要y为正态分布呢?一种可能是,很多情况下,当y和x不符合正态分布时,可能导致最小二乘法下μ不符合原有的假设。但是我们不能倒置因果,误认为y为正态分布是线性回归的模型假设。
那么怎么检验回归模型的假设呢?首先我们生成一个回归模型
y=rnorm(30,10,2)
x=rnorm(30,5,1)
model_1<-lm(y~x)
首先是假设1的检验,通过summary(model_1)我们可以得到以下结果
具体模型系数怎么看在这里就不赘述了,在最后一行有F值=2.129,这里的F检验就是通常说的模型有效性检验,通常用来验证模型是否符合线性假设,在这里p>0.05,通常会被认为模型不符合线性假设。
其次是假设2,我们可以使用cor.test()进行检验
cor.test(x,model_1$residuals)
结果如下
我们可以看到,这里的检验使用的是t检验,p值接近1,这就说明x和μ没有相关性。
然后是假设3,我们可以直接使用单样本t检验。
t.test(model_1$residuals)
结果如下
这里我们也可以看到t检验结果p值接近于1,说明没有证据表明μ不等于0,我们接受原假设,μ=0。
然后是假设4,如果误差项相关,则会产生自相关性,这可以用lmtest包里dwtest()检验,如果方差不相等,则会产生异方差性,这可以用lmtest包里bptest()检验,后面的检验结果
lmtest::dwtest(model_1)
lmtest::bptest(model_1)
结果如下
第一个dwtest的原假设是自相关性等于0,p<0.05则拒绝原假设,这里数据就不具备自相关性
第二个bptest的原假设是异方差性等于0,p<0.05则拒绝原假设,这里数据就不具备异方差性
最后是假设5,其实这里就是简单的正态性检验
shapiro.test(model_1$residuals)
结果如下
结果原假设是数据服从正态分布,p<0.05则说明不服从正态分布。
最后,值得一提的是,p值是一个与样本量相关的函数,在效应一定的情况下,样本量越大,p值越小,是否需要完全以p值作为检验结果的金标准也需要考量,当样本量较大的情况下,比较效应量可能是更好的选择。