Я занимаюсь симуляцией.Сначала я использовал logit, чтобы получить вероятность обработки для каждого наблюдения, а затем использовал rbniom (), чтобы сгенерировать двоичную переменную обработки.
С учетом наблюдаемой переменной лечения я использовал glm с логит-ссылкой для оценки параметра гамма.Это должно быть 1, но многократные попытки (даже с увеличенным числом выборок), это все еще приблизительно 0.3.Откуда исходит смещение?
Код прилагается
set.seed(99)
n = 10000
for (rv in c('X1','X2', 'Z1', 'Z2','e','u')){
assign(rv, rnorm(n =n, mean = 0, sd =5))
# check values
# get(rv), eval(as.name/symbol(rv))
}
X = cbind(X1,X2)
Z = cbind(Z1,Z2)
gamma = c(1,1)
# treatment probability for each observation
p_treatment = 1/(1+exp(-(X%*%gamma+e)))
# track treated or not
treated = mapply(FUN = rbinom, prob = p_treatment, size = 1, n = 1)
beta = c(1,1)
y = 1 + X%*%beta+treated+u
fit_lgt = glm(treated ~ X, family = binomial(link = 'logit'))
summary(fit_lgt)