0

我正在尝试使用 bartCause 包在 R 中构建提升模型。不幸的是,我无法以正确的方式集成数据框 -错误消息

$<-.data.frame`(`*tmp*`, "lift", value = c(0.159231848781688,  : 
  replacement has 160 rows, data has 2595

使用的代码:

 x = as.matrix(calibration[,-c(1:3)]) 
  y = calibration$churn
  z = calibration$treatment
    
  
  bart = bartc(y, z, x,
               method.trt = "bart", 
               method.rsp = "bart", 
               estimand="att", #average treatment effect on the treated
               n.samples = 20L, 
               n.chains = 8L, #Integer specifying how many independent tree sets and fits should be calculated.
               n.burn = 10L,
               n.threads = 4L, #Integer specifying how many threads to use for parallelization
               n.trees = 1000L,
               keepTrees = TRUE, #necessary for prediction!
               verbose = FALSE)

  pred_uplift <- predict(bart, validation[,-c(1:3)], combineChains = TRUE)
  pred <- pred_uplift
  validation$lift <- - pred[,1] + pred[,2]
  

校准数据:(2595 个观测变量,共 15 个变量) 在此处输入图像描述

验证数据:(2595 个变量,共 15 个变量) 在此处输入图像描述

4

1 回答 1

0

这是我发现的有关您的代码和错误消息的信息。包中的“预测”方法生成 (160 XN) 的矩阵,其中 N 是验证数据集中的案例数。因此,此矩阵中的每一列对应于验证数据集中的一行。您首先需要转置矩阵:

pred = t(pred_uplift)

然后,您可以使用“pred”矩阵中所需的任何列来计算“lift”变量:

validation$lift = pred[,1] + pred[,2]

顺便说一句:我不知道哪一列在“pred”矩阵中意味着什么以及为什么你使用前两列(我假设你这样做),但上面的代码有效。

于 2020-07-18T10:05:57.040 回答