Предельные эффекты от Estat MFX после Asclogit - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь понять, как 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

В случае, если изображение не вышло:

. 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
...