簡體   English   中英

特征(x)中的錯誤:“x”中的無限值或缺失值 > 在 robumeta 中

[英]Error in eigen(x) : infinite or missing values in 'x' > in robumeta

當我嘗試在 robumeta 中使用分層權重進行元分析時,我得到

特征(x)錯誤:“x”中的無限或缺失值,

使用不會產生任何相關權重錯誤的相同數據。 我的數據矩陣沒有任何 NA 或缺失值。 Cluster 包含 1 到 4 之間的整數。

有誰知道為什么我會收到 Eigen(x) 錯誤? 重現錯誤所需的代碼:

#load data, you need to adjust read.table depending on where the file is saved.
mydata <- read.table ("H:/Desktop/Max_R_Dataset_Meta_Analysis.csv", header = TRUE, sep = ",")

#install & load packages
library (robumeta)
library (devtools)
install_github("jepusto/clubSandwich")
library (clubSandwich)

#fit moderator model with CORR
res_2 <- robu (formula = effect_size ~ pathway, var.eff.size = effect_size_variance, studynum = Study_ID, modelweights = "CORR", rho = 0.8, small = TRUE, data = mydata)
print (res_2)

#fit moderator model with HIER
hier1 <- robu (formula = effect_size ~ pathway, var.eff.size = effect_size_variance, studynum = cluster, modelweights = "HIER", small = TRUE, data = mydata)
print (hier1)

dput (head(mydata,35))
structure(list(Study_ID = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 1L, 1L, 1L, 2L, 
2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 5L, 5L), effect_size = c(-0.05, 
-0.09, -4.44, 0.28, 0.25, 0.91, 0.31, 0.31, 0.33, 0.27, 0.13, 
0.71, -0.1, -0.09, -0.28, 0.2, 0.23, 1.23, 0.21, 0.22, 0.29, 
-0.18, -0.16, -0.75, 0.2, 0.24, 2.47, 0.37, 0.36, 2.34, 0.17, 
0.15, 0.85, 0.04, 0), effect_size_variance = c(0.010737802, 0.008056791, 
30.135452, 0.010478163, 0.011260784, 0.093962475, 0.006933061, 
0.008891908, 0.007840352, 0.006092875, 0.007411207, 0.040583305, 
0.021610499, 0.019590468, 0.104406625, 0.012783255, 0.011467534, 
0.333023923, 0.004151044, 0.008464275, 0.006936499, 0.012797742, 
0.007904113, 0.307592997, 0.001625522, 0.002084078, 0.230050467, 
0.009038613, 0.00895868, 0.34524772, 0.004019923, 0.002854116, 
0.078314231, 0.007680706, 0), pathway = c(2L, 4L, 6L, 2L, 4L, 
6L, 2L, 4L, 6L, 2L, 4L, 6L, 2L, 4L, 6L, 2L, 4L, 6L, 2L, 4L, 6L, 
1L, 3L, 5L, 1L, 3L, 5L, 1L, 3L, 5L, 1L, 3L, 5L, 1L, 3L), cluster = c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
2L, 2L), Study_Name = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
3L, 3L, 4L, 4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 1L, 1L, 
1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 5L, 5L), .Label = c("Desiree Thesis Arab", 
"Desiree Thesis White", "Gijs Direct Replication", "Gijs Indirect Replication", 
"Irina Africa Black", "Irina Africa White", "Irina Thesis", "Max Thesis", 
"Stein Race", "Yuan Exp1"), class = "factor")), row.names = c(NA, 
35L), class = "data.frame")

HIER 版本使用 robumeta 作者提供的示例數據。

感謝 NelsonGon,我得到了一個答案:我的數據集包含的效應大小為 0,它在分層模型中產生了一個無限的特征值。

這似乎是由 CORR 和 HIER 模型的計算差異引起的:

CORR 使用:dframe$weights <- 1 / (dframe$k * dframe$avg.var.eff.size) 而 HIER 使用 dframe$weights <- 1 / dframe$var.eff.size。 盡管理論上兩者都可以產生 0,但您可以在此處查看:github.com/zackfisher/robumeta/blob/master/R/robu.R 特征值實際上是在源代碼中計算的,即內部矩陣部分。

因為 HIER 除以 var.eff.size,所以 var.eff.size 為 0 會產生錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM