我有以下困境:
我明白边际效应是什么,它的计算,sigmoid函数的推导以及如何解释它(作为通过“一点点”增加你感兴趣的变量来改变概率,这个一点点是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]
罗吉特
[-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 (# of obs)的数组具有不同的边际效应(这很好,因为我知道这些效应是非常数和非线性的)。假设这个数组来自[0.0008 to 0.0495]
现在的问题是,你如何验证这个结果?0
当虚拟对象从 values变为时,我如何衡量边际效应1
?
你可能会争辩说我可以做两件事MEM和AME方法:
MEM:保留所有值的平均值,然后重新计算 var_1 = 0 和 var_1 = 1(MEM 方法)
(你不能真正做到这一点,因为你会假设你可以有一些观察结果,其中 var_1 和 var_2 将同时等于 1,这是不正确的,因为假人的平均值就像多少的比例“ 1s" 用于该列)
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)
现在,如果我尝试第二种方法,我得到的结果与我最初得到的结果非常不同(它们是介于 之间的值[0.0008 to 0.0495]
),它给了我介于 之间的值[0.0022 to 0.1207]
,这是一个巨大的差异。
总结一下:
如何进行数学确证以获得我最初得到的相同值(
[0.0008 to 0.0495]
)我如何首先解释这些原始值?因为如果我采取
0.0495
,我基本上是在说,如果我将 var_1 增加 1 个单位(从 0 到 1),我的事件发生概率将增加 4.95%,问题是它不认为增加 1 个单位默认情况下,我需要减少另一个虚拟变量 (var_2),因此我将同时对变量进行双重更改或类似双重边际效应。