2017-09-19 2 views
0

Ich möchte eine (nicht zufällige) Behandlungsvariable basierend auf verschiedenen Korrelationslevels einer Gruppenvariablen zuweisen.R: Behandlung basierend auf Gruppen mit verschiedenen Korrelationsstufen zuweisen

z. für die folgende Datentabelle:

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

Ich möchte eine Behandlung [0,1] zu den Gruppen zuweisen, wo Individuen in z. Gruppe 4 haben eine höhere Wahrscheinlichkeit, die Behandlung zu bekommen. Und ich möchte auch in der Lage sein, das Korrelationsniveau für die Aufgabe zu ändern.

Ich weiß, dass die trtObserve() Funktion aus dem simstudy Paket Behandlung in Abhängigkeit von anderen Variablen nicht zuweisen.

z. man kann eine Formel festgelegt Wahrscheinlichkeiten für die Zuordnung zuweisen:

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 

Aber ich habe nicht, wie die Zuordnung erfolgt auf der Grundlage der Formel.

Kann jemand erklären, wie die Formel in die Aufgabe eingebunden ist oder eine alternative Lösung für mein Problem geben?

Vielen Dank!

Antwort

0

Sie können die Wahrscheinlichkeit angeben, dass Sie in Ihrer Gruppe weitere 4er haben, indem Sie die probs Optionen in der sample() Funktion verwenden. Sie können dies folgendermaßen tun:

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 
Verwandte Themen