首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么observation.weights不让我在ltmle中使用我的权重变量?

为什么observation.weights不让我在ltmle中使用我的权重变量?
EN

Stack Overflow用户
提问于 2021-08-31 16:55:16
回答 1查看 29关注 0票数 0

我正在使用ltmleparallel函数对远程群集上的许多被推定的数据帧列表运行分析。下面是我的代码:

代码语言:javascript
复制
set.seed(500, kind = "L'Ecuyer-CMRG")
numcores <- future::availableCores()
cl <- parallel::makeCluster(numcores)
parallel:clusterEvalQ(cl, library(ltmle))
parallel:clusterEvalQ(cl, Avar <- c("var4", "var5", "var6")
parallel:clusterEvalQ(cl, Lvar <- c("var1", "var2", "var3")
parallel:clusterEvalQ(cl, Yvar <- c("var7", "var8")
parallel:clusterEvalQ(cl, wt <- c("weight")

list.of.imputed.dfs <- parallel:parLapply(cl = cl, list.of.imputed.dfs, function(x) {
Anodes = Avar,
Lnodes = Lvar,
Ynodes = Yvar,
survivaloutcome = T,
observation.weights = wt,
variance.method = "ic",
abar = list(c(1,1,1,1), c(0,0,0,0)))})

observation.weights = wt,被注释掉时,这段代码会运行,但当我保留上面所写的代码时,它会给我一个错误。错误为:

代码语言:javascript
复制
Error in checkForRemoteErrors(val) :
4 nodes produced errors: first error: observation.weights must be NULL or a vector of length nrow(data) with no NAs, no negative values, and at least one positive value

我在所有推定的数据帧中检查了权重变量的所有这些特征(它们在所有数据帧中都是相同的,因为在原始数据帧中没有丢失权重)。我没有NAs,所有的值都是正数。我的权重变量的类是向量,在我的list.of.imputed.dfs中,我有与每个数据帧大小一样多的值。此外,权重变量是每个数据帧的第一个变量。

除了错误消息中的信息之外,有没有什么原因导致我上面写代码的方式不起作用?或者,我是否遗漏了错误消息中的关键信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-03 12:31:23

从要包含在每个估算数据帧中的变量中删除权重变量。

您需要将权重变量导出到集群核心,然后将权重变量作为列表添加到集群核心,如下所示:

代码语言:javascript
复制
clusterExport(cl, list("data"), envir=environment())
clusterEvalQ(cl, wt <- data$weight)

不要这样做:

代码语言:javascript
复制
parallel:clusterEvalQ(cl, wt <- c("weight")

然后像上面那样运行ltmle。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69002628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档