【发布时间】:2021-10-18 17:38:46
【问题描述】:
我在具有 128GB RAM 的系统上使用 MatchIt 包。
首先,我的数据没有任何 NA。我的第一次尝试是使用广义线性模型(默认为逻辑回归)和“最近邻”:
headache6MontsMatch1 <- matchit(Headache_past_six_months ~ sex + age + townsend + alcohol + smoking, method="nearest", distance="glm", data=reducedDF)
但是,从大约 100,000 条记录中,我从匹配中丢失了大约 30,000 条。我想尝试一种最佳的“完整”方法。
headache6MontsMatch2 <- matchit(Headache_past_six_months ~ sex + age + townsend + alcohol + smoking, method="full", link="probit", distance="glm", data=reducedDF)
不幸的是,这会引发错误:
NAs produced by integer overflowError in if ((nc * nr > getMaxProblemSize()) && warning.requested) { :
missing value where TRUE/FALSE needed
进一步查看getMaxProblemSize(),似乎我受到了匹配的硬性限制。所以我试过了:
setMaxProblemSize()
然后使用getMaxProblemSize 再次检查问题大小,得到 Inf。
但我仍然遇到同样的问题。我的机器在 128GB 的内存中大约有 56GB 的内存,CPU 只消耗了 6%,磁盘并没有真正被触及。
【问题讨论】:
-
你的
nc * nr相对于optmatch:::getMaxProblemSize()是什么? -
@Chris - 我很想了解自己。知道我是怎么找到的吗?
-
在四处寻找确切的错误时,lines 48-55 提出了一种方法,但仍然没有找到确切的错误文件。
-
错误传播的确切位置可能与公式有关,而不是来自
matchIt或optmatch,如here,在您的情况下可能是glm。整数溢出是说整数类(Uint8/16/32/64)正在包装,因为它用完了整数,所以计数。并且将最大问题大小设置为inf并不能解决这个问题。
标签: r propensity-score-matching