回归分析中,如何回归掉(regress out)一个变量对另一个变量的影响

在大尺度微生物生物地理学分析中,经常遇到环境因子和地理距离能一定的相关性,经过VPA分析发现二者有重叠的解释部分。那么,如何完全排除掉环境因子的影响,单独研究地理距离对群落结构的效应呢?或者如何完全排除掉地理距离的影响,单独研究环境效应呢?

partial mantel test是一个很好的选择,在vegan包里的mantel.partial函数可以得到去除第三个矩阵后的影响,从而评估环境效应或地理效应对菌群影响的显著性。

mantel.partial(xdis,ydis,zdis)

另外,在简化模型的前提下,可以考虑利用线性回归,去掉(regress out)第二个变量对响应量的影响。

残差代表了响应变量的方差中不能被回归变量解释的部分。因此,我们可以利用这一原理从第1回归变量中“去掉”第2回归变量。

首先,利用回归模型计算回归变量与响应变量的残差。

而后通过建立一个简单的回归模型,用第二个回归变量作为响应变量,第一个回归变量作为回归变量,然后取残差。残差代表了第二次回归或第一次回归不能解释的方差。

然后比较两组残差。再次建立回归模型。

library(ggplot2)

data(mtcars)   #以mtcars数据演示,目的去除wt的影响,研究hp对mpg的影响

##计算二组线性回归模型

model.mpg.wt <- lm( mpg ~ wt, data=mtcars )

model.hp.wt <- lm( hp ~ wt, data=mtcars )

###残差

model.mpg.wt.resid <- resid(model.mpg.wt)

model.hp.wt.resid <- resid(model.hp.wt)

model.mpg.hp <- lm( model.mpg.wt.resid ~ model.hp.wt.resid )

summary(model.mpg.hp)

##普通作图

qplot(x=model.hp.wt.resid, y=model.mpg.wt.resid) +

  ggtitle("residuals vs residuals") +

  ylab("residuals of mpg ~ wt") +

  xlab("residuals of hp ~ wt") +

  geom_hline(y=0,colour="lightgray") +

  geom_vline(x=0,colour="lightgray") +

  geom_abline(intercept = coef(model.mpg.hp)[1], slope = coef(model.mpg.hp)[2])

##ggplot2作图

data1<-data.frame(model.mpg.wt.resid,model.hp.wt.resid)

ggplot(data1,aes(model.hp.wt.resid,model.mpg.wt.resid))+geom_point()+geom_smooth(method = 'lm',se=F)


去掉wt的效果后,hp对mpg影响也是很显著的。

详细信息可以参考

http://www.rga78.com/blog/2015/9/23/intro-to-regression-part-8-multiple-regression-regressing-on-two-numeric-variables

你可能感兴趣的:(回归分析中,如何回归掉(regress out)一个变量对另一个变量的影响)