Реплицировать значения полей STATA по умолчанию в R - PullRequest
0 голосов
/ 03 мая 2018

Поля R пакета по умолчанию рассчитаны для расчета средних предельных эффектов. Средний маржинальный эффект рассчитывается в STATA с использованием опции dydx (*)

То есть:

STATA:
margins, dydx(*)

дает тот же результат, что и

R:
margins(model)

Мы - несколько пользователей R, участвующих в курсе STATA, где используется команда margins

STATA:    
margins

Мы пытались разными способами воспроизвести вывод STATA по умолчанию, но безуспешно. Может ли кто-нибудь помочь нам или дать ссылку на соответствующее руководство? Виньетка для «полей» R-пакета использует только примеры с опцией «, dydx (*)».

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 01 августа 2018

Команда Stata margins выполняет две задачи:

  • "Прогнозные поля"
  • "Предельные эффекты" (различного рода - средние предельные эффекты, средние частичные эффекты, предельные эффекты при средних значениях, эластичности и т. Д.)

Когда вы указываете margins VARNAME, вы получаете прогнозные поля, которые представляют собой средние прогнозируемые значения по контрфактическим версиям набора данных, где VARNAME фиксируется на возможных значениях. Учтите следующее:

webuse margex, clear
quietly regress y i.sex i.group
. margins sex

Predictive margins                              Number of obs     =      3,000
Model VCE    : OLS

Expression   : Linear prediction, predict()

------------------------------------------------------------------------------
             |            Delta-method
             |     Margin   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
         sex |
       male  |   60.56034   .5781782   104.74   0.000     59.42668    61.69401
     female  |   78.88236   .5772578   136.65   0.000      77.7505    80.01422
------------------------------------------------------------------------------

Вы можете подумать, что это эквивалентно простому взятию прогнозируемых значений для всех случаев, а затем принятию средних значений по подгруппам для мужчин и женщин, и все же:

predict y_star
tabstat y_star, by(sex)

Summary for variables: y_star
     by categories of: sex 

   sex |      mean
-------+----------
  male |   64.5721
female |  74.88129
-------+----------
 Total |  69.73357
------------------

Что на самом деле происходит:

replace sex = 0
predict p_male
replace sex = 1
predict p_female
mean p_male p_female

Mean estimation                   Number of obs   =      3,000

--------------------------------------------------------------
             |       Mean   Std. Err.     [95% Conf. Interval]
-------------+------------------------------------------------
      p_male |   60.56034   .1301116      60.30523    60.81546
    p_female |   78.88236   .1301117      78.62725    79.13748
--------------------------------------------------------------

Таким образом, функция дает вам нереальные средние прогнозы.

Вы можете получить то же самое в R:

library("prediction")
library("webuse")
webuse::webuse("margex")
m <- lm(y ~ sex + group, data = margex)
prediction(m, at = list(sex = c(0,1)))
Average predictions for 3000 observations:
 at(sex) value
       0 60.51
       1 78.93

К сожалению, прогноз не обеспечивает отклонения прогнозируемой маржи - только сами маржи.

Если вы указываете , dydx(*), это запрашивает предельные эффекты. Который можно получить способом, идентичным Stata, используя margins::margins(), как вы уже знаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...