R:根据具有不同相关水平的组分配治疗

时间:2017-09-19 14:53:41

标签: r variable-assignment simulation

我想根据不同的相关性水平和组变量分配(非随机)治疗变量。

E.g。对于以下数据表:

library(data.table)
set.seed(123)
dt <- data.table(id=1:1000, group=sample(c(1:4), 1000, replace=T))

我想为这些群体分配治疗[0,1],例如,第4组获得治疗的可能性较高。我还希望能够改变作业的相关程度。

我知道 simstudy 包中的 trtObserve()函数会根据其他变量分配处理。

E.g。可以设置公式来为分配分配概率:

library(simstudy)
formula1 <- c("0.1 + 0.1*group")
dtExp <- trtObserve(dt, formulas = formula1, logit.link = TRUE, grpName = "treatment")
table(dtExp$treatment, dtExp$group)
    1   2   3   4
0 119 120  82  85
1 128 140 163 163

但我不知道如何根据公式进行任务。

有人可以解释如何将公式纳入作业或为我的问题提供替代解决方案吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用probs功能中的sample()选项指定群组中有4个以上的概率。你可以这样做:

set.seed(123)
dt <- data.table(id=1:1000, group=sample(1:4, size=1000, prob = c(0.1,.2,.2,.5), replace = T))
dt$treatment <- sample(c(0,1), 1000, replace = TRUE)
table(dt$group, dt$treatment)

#      0   1
#  1  46  43
#  2  93 107
#  3  93 105
#  4 269 244