Как получить доверительные интервалы для ATT с помощью Match()
Я использую библиотеку Match() в R, и мне нужен CI для ATT.
Есть ли способ получить это? Я хочу использовать оценки склонности при расчете ATT и CI.
Как это будет рассчитываться? (т.е. какая будет формула и почему?)
Ура,
PS: я смотрел на них, но это было не совсем то, что я искал: https://stats.stackexchange.com/questions/132509/confidence-interval-for-average-treatment-effect-from-propensity-score-weighting
PS2: Соответствующий кусок кода прилагается; после нахождения баланса я пытаюсь получить КИ с помощью метода regression+confint(), но это не работает, потому что я не знаю, как передать оценки склонности, и я навязываю модель регрессии (я уверен, что это не нужно, но я знаю только функцию confint для КИ).
(3) Using the Match() help file code example as a guide, use propensity score matching to produce an estimated treatment effect and confidence interval. Report your results.
```{r}
library(Matching)
DataFrame=as.data.frame(data1)
# Estimate the propensity model
glm1 <- glm(treat~age + I(age^2) + education + I(education^2) + black +
hispanic + married + nodegree + re74 + I(re74^2) + re75 + I(re75^2) , family=binomial, data=DataFrame)
#save data objects
X <- glm1$fitted
Y <- DataFrame$re78
Tr <- DataFrame$treat
# One-to-one matching with replacement (the "M=1" option).
# Estimating the treatment effect on the treated (the "estimand" option defaults to ATT==Average Treatment effect for Treated).
rr <- Match(Y=Y, Tr=Tr, X=X, M=1);
summary(rr)
```
Finding Balance:
```{r}
# Let's check the covariate balance:
mb <- MatchBalance(treat~age + I(age^2) + education + I(education^2) + black +hispanic + married + nodegree + re74 + I(re74^2) + re75 + I(re75^2), data=DataFrame, match.out=rr, nboots=500)
rr1 <- Match(Y=Y, Tr=Tr, X=X, M=1,Weight.matrix=);
#After obtaining balance, find ATT
rr1 <- Match(Y=Y, Tr=Tr, X=X, M=1);
summary(rr1)
```
Find a way to obtain CIs - Doesnt work:
```{r}
X<-mb
Y<-re78
RegressionOnMatched<-lm(re78~X,data = )
confint(RegressionOnMatched)
#mean(rr$re78)
#quantile(rr$re78, c(0.025, 0.975))
```
1 ответ
Я считаю, что ваша проблема - это аргумент, который вы передаете квантилю. Попробуй это:
ci_upper <- 2*mean(rr$re78) - quantile(rr$re78, 0.025)
ci_lower <- 2*mean(rr$re78) - quantile(rr$re78, 0.975)
ci <- c(ci_lower, ci_upper)