Я пытаюсь понять, как Stata рассчитывает как вероятность выбора альтернативы, так и предельный эффект, рассчитанный как среднее значение при I estat mfx
после оценки модели Макфаддена / условного логита с использованием asclogit
.
Например:
asclogit H t, case(ID) alternatives(AQ) casevars(Medicaid) ///
basealternative(1) vce(cluster Medicaid)
estat mfx, varlist(Medicaid)
Моя цель состоит в том, чтобы заново создать результаты, оценивая ту же модель с помощью clogit
и вручную вычисляя эквивалентные предельные эффекты.Я могу воспроизвести условные логит-оценки, сгенерированные asclogit
с использованием clogit
, но я застрял при воспроизведении вычислений после оценки.
Мне не удалось воспроизвести вычисленную вероятность каждой выбранной альтернативы, которая при чтении документации для estat mfx
, которую я узнал, оценивается по значению, помеченному X
в выходных данных таблицы.
Вот estat
цифры вероятности:
![enter image description here](https://i.stack.imgur.com/9hMad.png)
В случае, если изображение не вышло:
. matrix baseline = r(pr_1)\r(pr_2)\r(pr_3)\r(pr_4)\r(pr_5)
. matrix list baseline
baseline[5,1]
c1
r1 .04077232
r2 .15206384
r3 .01232535
r4 .10465885
r5 .69017964
Сохранитьпомните, что переменные, начинающиеся с Valpha
и VMedicaid
, являются переменными для конкретного случая, которые я создал для команды clogit
.Они соответственно являются перехватом и индикатором покрытия Medicaid.
Вот что у меня есть:
clogit H t Valpha* i.VMedicaid_2 i.VMedicaid_3 i.VMedicaid_4 i.VMedicaid_5 , ///
group(ID) vce(cluster Medicaid)
* Reproducing probability an alternative selected calculated by estat mfx
// calculate covariate means to plug into probability calculations
local V t Valpha* VMedicaid_* Medicaid
foreach var of varlist `V' {
summarize `var'
scalar `var'_MN = r(mean)
}
// alternative specific ZB
scalar zb = _b[t]*t_MN
// numerators attempt 1
foreach j of numlist 2/5 {
scalar XB`j' = exp(zb + (_b[Valpha_`j']*Valpha_`j'_MN) + ///
(_b[1.VMedicaid_`j']*VMedicaid_`j'_MN))
di "this is `j': " XB`j'
}
// numerators attempt 2, documentation for estat mfx said that probably was
// evaluated with Medicaid= 0.68 which is the Medicaid coverage rate across cases
// rather than the mean of the various VMedicaid_ variables are used to estimate
// clogit. Replaced intercept mean with 1
foreach j of numlist 2/5 {
scalar XB`j' = exp(zb + (_b[Valpha_`j']) + (_b[1.VMedicaid_`j' *Medicaid_MN))
di "this is `j': " XB`j'
}
scalar XB1 =exp(zb)
// denominator
scalar DNM = XB1+ XB2+ XB3+ XB4 + XB5
// Baseline
foreach j of numlist 1/5 {
scalar PRB`j' = XB`j'/DNM
di "The probability of choosing hospital `j' is: " PRB`j'
}
Я получаю следующие результаты:
The probability of choosing hospital 1 is: .14799075
The probability of choosing hospital 2 is: .21019437
The probability of choosing hospital 3 is: .09046377
The probability of choosing hospital 4 is: .18383085
The probability of choosing hospital 5 is: .36752026