在大尺度微生物生物地理学分析中,经常遇到环境因子和地理距离能一定的相关性,经过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影响也是很显著的。
详细信息可以参考