问题描述
我目前正在使用 R 中的 Metafor
包进行元分析。
我的数据集看起来像这样:
df <- structure(list(Code = c("grace2014","grace2014","jonhson2017","van2016","wolf2020","jessen2020","jessen2020"),ES = c(0.45,0.8,0.62,NA,0.72,0.76,0.13,0.02,-0.05,0.12,0.19,0.02
),VAR = c(0.0415,0.0465,0.5058,0.0025,0.5705,1e-04,2e-04,0.001,2e-04),N = c(99,100,1050,31,247,293,31570,31571,31572,31577,31578,31581),QATSDD = c(58.33333333,58.33333333,59.52380952,76.19047619,38.0952381,83.33333333,83.33333333)),row.names = c(NA,-12L),class = c("tbl_df","tbl","data.frame"))
我试过这个代码:
ma_model <- rma(data = df,yi = ES,vi = VAR,weights = c(N,QATSDD),weighted = TRUE,slab = Code)
forest(ma_model)
Error in rma:
Length of 'yi' and 'weights' is not the same.
我还尝试使用 cbind()
创建一个包含 N 和 QATSDD 的矩阵,但仍然出现相同的错误。
...我在某处读到 weights
参数可能是一个矩阵,但现在我严重怀疑这一点。
有人可以帮我吗?
解决方法
在 rma()
中,weights
参数(如果指定)必须是长度与模型中包含的估计值数量相同的向量。
您可能会想到 W
函数中的 rma.mv()
参数,它可以是一个矩阵,但不是您想的那样(它必须是一个具有相同数字的矩阵)行和列数作为模型中包含的估计数)。
您显然试图指定权重,这些权重是样本大小和 QATSDD 比例值的某种组合。您必须自己指定如何将这两组值组合为每个研究的单个值(即,rma()
不能为您这样做)。