R语言统计分析——回归分析的改进措施

参考资料:R语言实战【第2版】

        如果在回归诊断中发现了问题,我们该如何做?有四种方法可以处理违背回归假设的问题:

①删除观测点;

②变量变换;

③添加或删除变量;

④使用其他回归方法。

1、删除观测点

        删除离群点通常可以提高数据集对正态假设的拟合度,而强影响点会干扰结果,通常也会被删除。删除最大的离群点或强影响点后,模型需要重新你和。若离群点或强影响点仍然存在,重复以上过程知道获得比较满意的拟合。

        对于删除观测点,我们们要慎之又慎。如果是因为数据记录错误,或是没有遵守规程,或是受试对象误解了指导说明,这种情况下可以判断为离群点,删除它们是十分合理的

        不过在其他情况下,所有收集数据中的异常点可能是最有趣的东西。发掘为何该观测点不同于其他店,有助于我们更深刻地理解研究组,或者发现其他我们可能没有想过的问题。

2、变量变换

        当模型不符合正态性、线性或者同方差假设时,一个或多个变量的变换通常可以改善或调整模型效果。变换多用Y^\lambda代替Y,λ的常见值和解释如下:

λ-2-1-0.500.512
变换1/Y^21/Y1/\sqrt{Y}log(Y)\sqrt{Y}Y^2

        若Y是比例数据,通常使用logit变换:ln(Y/(1-Y))

        当模型违反正态假设时,通常可以对响应变量尝试某种变换。car包中的powerTransform()函数通过λ的最大似然估计来正态化变量X^\lambda。如下:

# 加载car包
library(car)
# 获取数据
states<-as.data.frame(state.x77[,c("Murder","Population",
                                   "Illiteracy","Income","Frost")])
# 拟合多元线性模型
fit<-lm(Murder~Population+Illiteracy+Income+Frost,data=states)
# 查看正态变换建议
summary(powerTransform(states$Murder))

        我们可以用murder^0.6来正态化变量murder。由于0.6很接近0.5,我们可以尝试用平方根变换来提高模型正态性的符合程度。但本例中,λ=1的假设是无法拒绝的(p=0.145),因此没有足够的证据表明本例需要进行变量变换。

        当违反了线性假设时,对预测变量进行变换常常会比较有用。car包中的boxTidwell()函数通过获得预测变量幂数的最大似然估计来改善线性关系。如下:

# 加载car包
library(car)
boxTidwell(Murder~Population+Illiteracy,data=states)

        结果显示,使用变换Population^0.87和Illiteracy^1.36能够大大改善线性关系。但是对于这个量变量的计分检验的统计结果均不显著Population( p=0.75)和Illiteracy( p=0.54),说明不需要进行变换。

3、增删变量

        改变模型的变量会影响模型的拟合度。有时,添加一个重要变量可以解决我们许多问题,删除一个冗余变量也能达到同样的效果。

        删除变量在处理多重共线性时是一种非常重要的方法。如果我们仅仅是做预测,那么多重共线性并不构成问题。但如果还要对每个预测变量进行解释,那么就必须解决这个问题。最常见的方法是删除某个存在多重共线性的变量。另外一个可用的方法是岭回归

4、尝试其他方法

处理多重共线性的一种方法是拟合一种不同类型的模型(本例中是岭回归)。
如果存在离群点和/或强影响点,可以使用稳健回归模型替代OLS回归。
如果违背了正态性假设,可以使用非参数回归模型。
如果存在显著的非线性,能尝试非线性回归模型。
如果违背了误差独立性假设,还能用那些专门研究误差结构的模型,比如时间序列模型或者多层
次回归模型。
最后,我们还能转向广泛应用的广义线性模型,它能适用于许多OLS回归假设不成立的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值