R 基于加权最近邻法的倾向评分匹配

R 基于加权最近邻法的倾向评分匹配,r,R,我使用我的一个变量作为权重因子,即权重,在R中进行倾向评分匹配。我想用最近邻法进行匹配。我的数据样本是: dput(dat2): 结构(列表ID=c(1,2,3,4,6,7), 重量=c(2.4740626,2.4740626,2.4740626,2.4740626,1.9548149,1.9548149), 年龄=c(“35-44”、“45”、“25-34”), 治疗=c(1,0,0,1,0,0), 结果=c(1,1,1,0,1,1)), 行名称=c(NA,-6L), class=c(“tb

我使用我的一个变量作为权重因子,即权重,在R中进行倾向评分匹配。我想用最近邻法进行匹配。我的数据样本是:
dput(dat2)

结构(列表ID=c(1,2,3,4,6,7),
重量=c(2.4740626,2.4740626,2.4740626,2.4740626,1.9548149,1.9548149),
年龄=c(“35-44”、“45”、“25-34”),
治疗=c(1,0,0,1,0,0),
结果=c(1,1,1,0,1,1)),
行名称=c(NA,-6L),
class=c(“tbl_df”、“tbl”、“data.frame”))

我正在使用tableone软件包创建预匹配表。我的代码在这里:

`model1<-lm(formula = dat2$Outcome ~ dat2$Treatment + dat2$Age, 
       data = dat2,weights = Weights)
model1
Effect<- model1$coeff[2]
Effect

pscores.model<-glm(dat2$Treatment ~ dat2$Age,
                family = binomial("logit"), data = dat2, weights = dat2$Weights)
summary(pscores.model)

Propensity_scores<-pscores.model
dat2$Pscores_1<-pscores.model$fitted.values
require(tableone)
xvars<-c("Age")
table1<-svyCreateTableOne(vars = xvars, strata = "Treatment", data = dat2, test = FALSE)
print(table1,smd = TRUE)

require(MatchIt)
match2 <- matchit(pscores.model, method="nearest", radio=1,data=dat2)
match2
ATE_ATT_2.1<-ATE(Y = dat2$Outcome,
           Ti = dat$Treatment,
           X = dat$Age,
           ATT = TRUE
)
ATE_ATT_2.1
ATE_ATT_2.2<-ATE(Y = dat$Outcome,
           Ti = dat$Treatment,
           X = dat$Age,
           ATT = FALSE
)
ATE_ATT_2.2
match2.data <- match.data(match2)
#Create the tableone for nearest matching
table_match2 <- CreateTableOne(vars = xvars,
                           strata = "Treatment",
                           data = match2.data,test = FALSE)
print(table_match2, smd = TRUE)`

`model1此代码存在几个问题

首先,要使用
svyCreateTableOne
函数,您需要在
data
参数中为它提供一个
svydesign
对象,而您还没有这样做。您需要使用
调查
包并为其提供权重。在您的情况下,看起来您正在对未加权的数据使用此函数,因此您可能不应该使用它

其次,在对
matchit()
的调用中,您有一个参数
radio=1
radio
不是
matchit()
的合适参数。你的意思可能是比率。幸运的是,这可能不会影响任何事情

我不知道你为什么在那里有
ATE()
代码。这与问题无关

我不知道您打算在最终表格中显示什么权重,但您没有提供任何权重供其使用。在第一个表中,您为其提供了不匹配、未加权的数据。在第二个表中,提供匹配的未加权数据。你想提供什么重量?如果要为其提供加权数据,则需要使用
svyCreateTableOne
和具有权重的
svydesign
对象提供这些权重