2017-11-20 4 views
-5

Ich suche nach einem R-Paket, das es mir ermöglichen würde, jedes Thema in einer Behandlungsgruppe einem Subjekt in der allgemeinen Bevölkerung zuzuordnen, das ähnliche Merkmale (Alter, Geschlecht usw.) hat.Erstellen nicht zufälliger Paare

+0

bitte ein reproduzierbares Beispiel mit Daten erstellen, damit wir besser –

+0

helfen Es ist nicht wirklich schwer zu finden mit Google. Probieren Sie es einfach aus (ein Hinweis: Package Matching) –

+0

Die Lösungen, die ich mit Google gefunden habe, beinhalten entweder Zufalls-Matching oder komplexe Algorithmen (z. B. Distanzschätzung). –

Antwort

1

Ich benutze das MatchIt-Paket für diese Art von Sache. Sie Beratung erhalten kann Propensity Score Matching zu verwenden, aber es gibt Einschränkungen, die weit verbreitet Ansatz (siehe: PS Not)

library(MatchIt) # use for matching 
library(tidyverse) # The overall package. It will load lots of dependencies 

set.seed(950) 
n.size <- 1000 

# This creates a tibble (an easier to use version of a data frame) 
myData <- tibble(
a = lubridate::now() + runif(n.size) * 86400, 
b = lubridate::today() + runif(n.size) * 30, 
ID = 1:n.size, 
# d = runif(1000), 
ivFactor = sample(c("Level 1", "Level 2", "Level 3", "Level 4"), n.size, replace = TRUE), 
age = round(rnorm(n = n.size, mean = 52, sd = 10),2), 
outContinuous = rnorm(n = n.size, mean = 100, sd = 10), 
tmt = sample(c(1,0), size = n.size, prob = c(.3, .7), replace = TRUE) 
) 

# Using matching methods suggestions found in Ho, Imai, King and Stuart 
myData.balance <- matchit(tmt~age + ivFactor, data = myData, method = "nearest", distance = "logit") 

# Check to see if the matching improved balance between treatment and control group 
summary(myData.balance) 

# Extract the matched data. Now we can use this in subsequent analyses 
myData.matched <- match.data(myData.balance) 
Verwandte Themen