Как использовать дельта-метод для стандартных ошибок предельных эффектов?

20

Меня интересует лучшее понимание дельта-метода для аппроксимации стандартных ошибок средних предельных эффектов регрессионной модели, включающей термин взаимодействия. Я посмотрел на связанные вопросы в рамках но ни один из них не дал того, что я ищу.

Рассмотрим следующие данные в качестве мотивирующего примера:

set.seed(1)
x1 <- rnorm(100)
x2 <- rbinom(100,1,.5)
y <- x1 + x2 + x1*x2 + rnorm(100)
m <- lm(y ~ x1*x2)

Меня интересуют средние предельные эффекты (AMEs) x1и x2. Чтобы вычислить их, я просто делаю следующее:

cf <- summary(m)$coef
me_x1 <- cf['x1',1] + cf['x1:x2',1]*x2 # MEs of x1 given x2
me_x2 <- cf['x2',1] + cf['x1:x2',1]*x1 # MEs of x2 given x1
mean(me_x1) # AME of x1
mean(me_x2) # AME of x2

Но как я могу использовать дельта-метод для расчета стандартных ошибок этих AME?

Я могу рассчитать SE для этого конкретного взаимодействия вручную:

v <- vcov(m)
sqrt(v['x1','x1'] + (mean(x2)^2)*v['x1:x2','x1:x2'] + 2*mean(x2)*v['x1','x1:x2'])

Но я не понимаю, как использовать дельта-метод.

В идеале я ищу некоторые рекомендации о том, как думать (и кодировать) дельта-метод для AME любой модели произвольной регрессии. Например, этот вопрос предоставляет формулу для SE для конкретного эффекта взаимодействия, а в этом документе от Мэтта Голдера приводятся формулы для различных интерактивных моделей, но я хочу лучше понять общую процедуру вычисления SE для AME, а не формулу для SE любого конкретного AME.

Томас
источник
2
+1 Отличный вопрос (тоже мучает меня давно)! Существует пост на форуме Stata: Delta Метод Стандартные ошибки для средней маргинальный ... . На SE есть пример, использующий подход начальной загрузки: функция mfxboot для предельных эффектов для пробит-регрессий? ,
Бернд Вайс

Ответы:

16

Дельта-метод просто говорит, что если вы можете представить вспомогательную переменную, которую вы можете представить как функцию от нормально распределенных случайных величин, эта вспомогательная переменная приблизительно нормально распределена с дисперсией, соответствующей степени изменения вспомогательной функции по отношению к нормальным переменным (РЕДАКТИРОВАТЬ: как отметил Алекос Пападопулос, дельта-метод может быть сформулирован более широко, так что он не требует асимптотической нормальности). Проще всего думать об этом как о разложении Тейлора, где первый член функции является средним, а дисперсия исходит из членов второго порядка. В частности, если - функция параметра β, а b - согласованная, нормально распределенная оценка для этого параметра: g (граммβб Поскольку β - постоянная величина, а b - непротиворечивая оценка для β , мы можем тогда сказать:

грамм(б)грамм(β)+грамм(β)'(б-β)
βбβ В этом случае, б ваши МНКОВ оценки, и г является АМОЙ. Вы можете написать этот конкретный AME как: g ( b 1 , b 2 ) = b 1 + b 2  среднее ( x 2 ), если вы взяли градиент этой функции (помните, что функциякоэффициентовне равна x
N(грамм(б)-грамм(β))DN(0,грамм(β)'Σбграмм(β))
бграмм
грамм(б1,б2)знак равноб1+б2 жадный(Икс2)
), это будет: [ 1 ,Икс2 и матрица дисперсии-ковариации для b может быть: [ s 11 s 12 s 12 s 22 ] Включение этого в формулу дисперсии и выполнение некоторой матричной алгебры дает вам то же выражение, которое вы хотели.
[1,жадный(Икс2)]'
б
[s11s12s12s22]

граммRnumDeriv

ADDENDUM: в этом конкретном случае Rкод будет:

v <- vcov(m)

# Define function of coefficients. Note all coefficients are included so it 
# will match dimensions of regression coefficients, this could be done more 
# elegantly in principle
g <- function(b){
    return(b[2] + b[4] * mean(x2))
}

require(numDeriv) # Load numerical derivative package

grad_g <-  jacobian(g, m$coef) # Jacobian gives dimensions, otherwise same as
                               # gradient 

sqrt(grad_g%*% v %*% t(grad_g)) # Should be exactly the same 

грамм

jayk
источник
1
Спасибо за этот очень подробный ответ. Я думаю, что меня особенно сбило с толку, это градиенты по отношению к коэффициентам, а не к исходным переменным. Я очень ценю вашу помощь!
Томас
И просто уточняющий вопрос. Вы используете mean(x2)при расчете SE. Разве это не было бы только для предельного эффекта в среднем? Моя интуиция состояла бы в том, что для AME я должен был бы проводить SE для каждого наблюдения, а затем усреднять их.
Томас
1
Это эквивалентно для линейных AME, когда вы берете среднее значение по наблюдениям, вы в итоге получаете предельный эффект в среднем. В противном случае вам действительно нужно было бы определить gсреднее значение предельных эффектов для каждого индивидуума и, возможно, использовать числовой градиент, я не уверен, что взятие SE для каждого будет совершенно одинаковым.
Jayk
1
То есть AME и ME в среднем эквивалентны для линейных ME. Я не считаю, что SE эквивалентна, потому что форма дисперсии квадратична, поэтому среднее значение не будет просто всплывать. У меня нет хорошей интуиции, почему SE нельзя просто сложить из наблюдений, но я уверен, что это правда.
Jayk
2
Отметим, что теорема дельты не требует нормальности.
Алекос Пападопулос