我正在R中对森林的特定处理方法进行荟萃分析。对于此模型,我需要采用随机效应来解释研究方法的差异和站点年龄的变化之间的差异,因为这两者都是令人困惑的变量,并且我对研究由它们引起的变异不明确感兴趣。
但是,据我所知,[metfor]
当您具有多级模型时,该软件包不允许您计算R平方类型统计量。
无论如何,为了更清楚地描述我的问题,这里是一个模拟数据集
Log<-data.frame(Method=rep(c("RIL","Conv"),each=10),
RU=runif(n=20,min=10,max=50),SDU=runif(n=20,5,20),
NU=round(runif(n=20,10,20),0))
Log$Study<-rep(1:4,each=5)
Log$Age<-rep(c(0,10,15,10),times=5)
RIL<-(Log$RU-(Log$RU*(abs(rnorm(n=20,mean=.6,sd=0.1)))))+(0.5*Log$Age)
Conv<-(Log$RU-(Log$RU*(abs(rnorm(n=20,mean=.2,sd=0.1)))))+(0.2*Log$Age)
Log$RL<-ifelse(Log$Method=="RIL",RIL,Conv)
Log$SDL<-Log$SDU
Log$NL<-Log$NU
#now we perform a meta-analysis using metafor
require(metafor)
ROM<-escalc(data=Log,measure="ROM",m2i=RU,
sd2i=SDU,n2i=NU,m1i=RL,sd1i=SDL,n1i=NL,append=T)
Model1<-rma.mv(yi,vi,random=~(1|Study)+(1|Age),method="ML",data=ROM)
summary(Model1)
forest(Model1)
上面的模型是一个空模型,用于查看截距是否在统计上显着不同于零。就我们而言。但是,我也想看看治疗方法的差异是否描述了我在森林图中看到的效果大小的差异,您可以在此处看到
所以我运行这个模型:
Model2<-rma.mv(yi,vi,mods=~Method,random=~(1|Study)+(1|Age),method="ML",data=ROM)
summary(Model2)
看起来不错。
Multivariate Meta-Analysis Model (k = 20; method: ML)
logLik Deviance AIC BIC AICc
0.4725 19.8422 7.0550 11.0380 9.7217
Variance Components:
outer factor: Age (nlvls = 3)
inner factor: Study (nlvls = 4)
estim sqrt fixed
tau^2 0.0184 0.1357 no
rho 1.0000 no
Test for Residual Heterogeneity:
QE(df = 18) = 23.3217, p-val = 0.1785
Test of Moderators (coefficient(s) 2):
QM(df = 1) = 19.6388, p-val < .0001
Model Results:
estimate se zval pval ci.lb ci.ub
intrcpt -0.1975 0.1007 -1.9622 0.0497 -0.3948 -0.0002 *
MethodRIL -0.4000 0.0903 -4.4316 <.0001 -0.5768 -0.2231 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
但是,我想从该模型中得出与R平方等效的拟合优度。过去,人们使用GLMM遇到这些问题,但是现在有解决方法。我想知道是否有人知道进行荟萃分析的类似方法的好方法?我有审稿人要求这样做,我不确定是否应该告诉他们这不能完成。
在此先感谢您的帮助!
首先,您并未对该rma.mv()
函数使用正确的语法。对于这两种模型,我假设您实际上打算使用:
Model1 <- rma.mv(yi, vi, random = list(~ 1 | Study, ~ 1 | Age), method="ML", data=ROM)
Model2 <- rma.mv(yi, vi, mods = ~ Method, random = list(~ 1 | Study, ~ 1 | Age), method="ML", data=ROM)
现在,对于R平方,您可以将方差分量的比例减少量计算为一种伪R平方值。这只是常规元回归中通常所做的逻辑扩展。因此,基于上述模型:
(Model1$sigma2[1] - Model2$sigma2[1]) / Model1$sigma2[1]
(Model1$sigma2[2] - Model2$sigma2[2]) / Model1$sigma2[2]
如果一个值应该为负,则通常将其设置为零。
如果要使用单个值,还可以使用以下公式计算总方差的比例减少:
(sum(Model1$sigma2) - sum(Model2$sigma2)) / sum(Model1$sigma2)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句