2017-09-19 24 views
0

我想根據不同的相關性水平和組變量分配一個(非隨機)治療變量。R:基於具有不同關聯水平的組分配治療

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組獲得治療的可能性較高。而且我還希望能夠更改分配的關聯級別。

我知道trtObserve()simstudy包功能不依賴於其他變量分配處理。

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 

但是我不明白基於公式的賦值是如何發生的。

有人可以解釋如何將公式納入作業或給出我的問題的替代解決方案嗎?

非常感謝!

回答

0

您可以使用sample()函數中的probs選項來指定組中將有多個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