【发布时间】:2019-12-25 10:05:41
【问题描述】:
我通过使用我的变量之一作为加权因子(即权重)在 R 中执行倾向得分匹配。我想使用最近邻法进行匹配。我的数据样本是:
dput(dat2):
structure(list(ID = c(1, 2, 3, 4, 6, 7),
Weight = c(2.4740626, 2.4740626, 2.4740626, 2.4740626, 1.9548149, 1.9548149),
Age = c("35-44", "<15-24", "25-34", "35-44", ">45", "25-34"),
Treatment = c(1, 0, 0, 1, 0, 0),
Outcome = c(1, 1, 1, 0, 1, 1)),
row.names = 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)`
但是当我运行这段代码时,它给出的结果没有加权因子,并且它没有将权重作为 CreateTableOne 函数中的参数。 请帮我解决这个问题。
提前致谢。
【问题讨论】:
标签: r