R 创建非随机匹配对

R 创建非随机匹配对,r,statistics,methodology,R,Statistics,Methodology,我正在寻找一个R软件包,使我能够将治疗组中的每个受试者与一般人群中具有相似特征(年龄、性别等)的受试者进行匹配。我使用MatchIt软件包来完成这类工作。您可能会收到使用倾向评分匹配的建议,但这种广泛使用的方法存在局限性(请参阅:) library(MatchIt)#用于匹配 图书馆(tidyverse)#整体包装。它将加载许多依赖项 种子集(950) n、 请用数据创建一个可复制的示例,这样我们可以更好地帮助您使用google查找它并不困难。试一试,(一个线索:包匹配)我在谷歌上找到的解决方案

我正在寻找一个R软件包,使我能够将治疗组中的每个受试者与一般人群中具有相似特征(年龄、性别等)的受试者进行匹配。

我使用MatchIt软件包来完成这类工作。您可能会收到使用倾向评分匹配的建议,但这种广泛使用的方法存在局限性(请参阅:)

library(MatchIt)#用于匹配
图书馆(tidyverse)#整体包装。它将加载许多依赖项
种子集(950)

n、 请用数据创建一个可复制的示例,这样我们可以更好地帮助您使用google查找它并不困难。试一试,(一个线索:包匹配)我在谷歌上找到的解决方案要么涉及随机匹配,要么涉及复杂算法(例如距离估计)。
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)