Рассчитать маржинальный эффект вручную (без использования пакетов или Stata или R) с lo git и фиктивными переменными - PullRequest
0 голосов
/ 10 февраля 2020

У меня следующая дилемма:

Я понимаю-i sh, что такое предельные эффекты, а также их вычисление, вывод сигмовидной функции и как ее интерпретировать (как изменение вероятности увеличивая вашу переменную интереса на "немного" , этот бит равен 1 для дискретных переменных или std (x) / 1000 для непрерывного). Теперь, часть, которую я нахожу сложной, состоит в том, чтобы подтвердить результаты предельных эффектов вручную и пересчитать вероятности для x = 0 и затем x = 1 (например), а затем получить разницу в вероятности, равную предельному эффекту Я получил ранее, я особенно застрял с фиктивными переменными, так как, если я увеличиваю одну, мне приходится уменьшать другую, поэтому я не уверен, как обойти это и интерпретировать. (этот вопрос также относится к сильно коррелированным переменным)

Чтобы сделать его более понятным, скажем, у меня есть следующий набор данных:

#Python 

[1. , 0. , 0. , 4.6, 3.1, 1.5, 0.2],
[1. , 0. , 1. , 5. , 3.6, 1.4, 0.2],
[1. , 1. , 0. , 5.4, 3.9, 1.7, 0.4],
[1. , 0. , 1. , 4.6, 3.4, 1.4, 0.3],
[1. , 1. , 0. , 5. , 3.4, 1.5, 0.2],
[1. , 0. , 0. , 4.4, 2.9, 1.4, 0.2],
[1. , 0. , 1. , 4.9, 3.1, 1.5, 0.1],
[1. , 1. , 0. , 5.4, 3.7, 1.5, 0.2],
...

Var_0 = Что будет перехват.

Var_1, var_2 = Одна горячая закодированная переменная (2/3 манекена), одна отброшена, чтобы избежать слинейности.

Var 3 + = Нормальные непрерывные переменные

Коэффициенты :

[ 7.56986405,  0.75703164,  0.27158741, -0.37447474, -2.79926022, 1.43890492, -2.95286947]

lo git

[-3.34739217,
 -2.27001103, 
-1.49517926, 
-0.77178644, 
-0.808111, 
-2.48474722, 
-1.76183804, 
-0.90621541
...]

Вероятности

[0.03398066, 
0.09363728, 
0.18314562,
0.31609279, 
0.30829318,
0.0769344 , 
0.14656029, 
0.28777491,
...]

Маргинальный эффект = p*(1-p) * B_j

Теперь давайте скажем, что меня интересует маргинальный эффект var_1 (одного из чайников), я просто сделаю: p*(1-p) * 0.7570

, что приведет к массиву длиной n (число obs) с различными предельными эффектами (что хорошо, потому что я понимаю, что эффекты не постоянны и нелинейный). Допустим, этот массив исходит из [0.0008 to 0.0495]

Теперь проблема в том, как вы можете проверить эти результаты? Как измерить предельный эффект, когда манекен переходит от значений 0 к 1?

Можно утверждать, что я мог бы сделать две вещи MEM и AME методы:

  1. MEM: Оставьте все значения в их среднем значении, а затем снова вычислите для var_1 = 0, а затем для var_1 = 1 (метод MEM)

    (вы не можете этого сделать, потому что вы будете предполагать, что у вас могут быть некоторые наблюдения, где var_1 и var_2 будут равны 1 в одно и то же время, что неверно, поскольку среднее значение для манекена равно пропорции количества «1» для этого столбца)

  2. AME: Оставьте как отмечено, но изменив все значения var_1 на 0 (делая все значения var_2 = 1), а затем сделайте обратное (var_1 = 1, var_2 = 0, Вы должны сделать это, поскольку он не может принадлежать двум категориям одновременно), а затем взять среднее значение результатов (метод AME) (Side comment:One thing I am not sure if it is the average between the difference in marginal effects when var_1 = 0 and then 1, or if it is an average between the probabilities when var_1 =0 and then 1, I used both, but probability I think it makes more sense to me)

Теперь, если Я пытаюсь 2-й подход, я получаю очень разные результаты по сравнению с тем, что я изначально получил (которые были значения между [0.0008 to 0.0495]), это дает мне значения между [0.0022 to 0.1207], что является огромной разницей.

Подводя итог:

  1. Как можно сделать математическое подтверждение получения тех же значений, которые я получил изначально ([0.0008 to 0.0495])

  2. Как я могу интерпретировать эти исходные значения в первую очередь? Потому что если я возьму 0.0495, я в основном говорю, что если я увеличу var_1 на 1 единицу (с 0 до 1), у меня будет 4,95% увеличение вероятности моего события, проблема в том, что это не так учтите, что для увеличения на 1 единицу мне нужно по умолчанию уменьшить другую фиктивную переменную (var_2), поэтому я буду делать что-то вроде двойного изменения переменных или как двойной маргинальный эффект в то же время.

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