【问题标题】:Why is observation.weights not letting me use my weight variable in ltmle?为什么observation.weights 不允许我在ltmle 中使用我的权重变量?
【发布时间】:2021-08-31 16:55:16
【问题描述】:

我正在使用ltmleparallel 函数对远程集群上的许多估算数据帧列表运行分析。这是我的代码:

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, 被注释掉时运行,但当我按照上面的说明离开时给我一个错误。错误显示:

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

我在所有估算数据框中检查了我的权重变量的所有这些特征(所有这些特征都相同,因为在原始数据框中没有丢失权重)。我没有 NA,所有价值观都是积极的。我的权重变量的类是向量,我的值与list.of.imputed.dfs 中每个数据框的大小一样多。另外,权重变量是每个数据帧的第一个变量。

除了错误消息中的信息之外,我在上面编写代码的方式不起作用是否有某些原因?还是我在错误消息中遗漏了一些关键信息?

【问题讨论】:

    标签: r analysis estimation longitudinal


    【解决方案1】:

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

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

    clusterExport(cl, list("data"), envir=environment())
    clusterEvalQ(cl, wt <- data$weight)
    

    不要这样做:

    parallel:clusterEvalQ(cl, wt <- c("weight")
    

    然后像上面一样运行 ltmle。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-08
      • 2014-02-17
      • 2016-09-24
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多