почему результаты функций clogit и bife (оба в R) различаются?

Мне нравится вычислять панельную регрессию логистического фиксированного эффекта (условная максимальная вероятность) в R и получать прогнозируемые значения и/или средние предельные эффекты.

Нашел две функции: bife и clogit из пакетов выживания

Тем не менее, функции различаются по своим результатам, и я хотел бы знать, почему и как это потенциально исправить. Функция clogit дает мне те же результаты, что и в Stata (xtlogit, fe), но я не нашел способа получить от нее средний предельный/частичный эффект (объяснение того, как это сделать, также решило бы мою проблему). В bife, где результаты отличаются от результатов clogit и xtlogit в Stata, есть возможность рассчитать PME (getAPE).

клогит:

clogit_output <- clogit(binary_variable~ x1 + x2 + x3 + strata(id), data = data) 

жизнь:

bife_output <- bife(binary_variable ~ x1 + x2 + x3 | id, data = data, model = c("logit"))

Мой результат двоичный (0 или 1), а предикторы - фиктивные переменные и числовые. У меня есть несбалансированная панель с 10 000 респондентов (id) за 12 лет. Я объявил структуру панели с помощью:

data<- pdata.frame(data, index = c("id", "wave"))

Результат в clogit:

summary(clogit_output) 
        coef exp(coef)  se(coef)       z Pr(>|z|)
X1 -0.173637  0.840602  0.103450  -1.678  0.09326
X2 -0.467696  0.626444  0.115345  -4.055 5.02e-05
X3 0.743621  2.103538  0.035638  20.866  < 2e-16

для бифа:

summary (bife_output)
    Estimate Std. error z value Pr(> |z|) 
X1 -0.2135333  0.1140698  -1.872   0.06121
X2 -0.5624223  0.1268271  -4.435  9.23e-06
X3 0.9150707  0.0399252  22.920   < 2e-16

Я зашел так далеко, что предполагаю, что с помощью исправления ошибок в bife (bias_corr(bife_output)) я получу те же результаты, что и в STATA или clogit. Тем не менее, в моем случае исправление ошибки выдает ошибку: Сбой в делении шага пополам.


person k.r.    schedule 27.03.2020    source источник


Ответы (1)


Разница в результатах clogit и bife объясняется проблемой со случайными параметрами.

Как вы уже сами выяснили, bife::bias_corr(bife_output) исправляет это смещение. Вы также можете использовать summary(bife::bias_corr(bife_output)) для получения стандартных ошибок.

См. также мой более подробный ответ на этот новый вопрос о переполнении стека.

person jay.sf    schedule 19.12.2020