Извлечение логнормальных случайных коэффициентов из пакета mlogit R - PullRequest
0 голосов
/ 09 января 2012

Я использую пакет mlogit в R для оценки модели смешанного логита с параметром log-normal.Пакет работает нормально, но есть ли способ извлечь случайные коэффициенты, особенно для ненормально распределенных параметров?

Используя пример из "упражнений Кеннета Трэйна, использующих пакет mlogit для R", стр. 22,

library(mlogit)
data("Electricity", package = "mlogit")
Electr <- mlogit.data(Electricity, id = "id", choice = "choice", 
               varying = 3:26, shape = "wide", sep = "")

Electr$rev.tod <- -1*Electr$tod  # Reverse sign on tod parameter
Elec.mxl <- mlogit(choice ~ pf + cl + loc + wk + rev.tod + seas | 0, data=Electr, 
               rpar = c(cl = "n", loc = "n", wk = "u", rev.tod = "ln", seas = "n"),
               R = 100, halton = NA, print.level = 0, panel = TRUE)
summary(Elec.mxl)

Генерирует этот (усеченный) вывод:

Coefficients :
            Estimate Std. Error t-value  Pr(>|t|)    
pf         -0.866325   0.032452 -26.696 < 2.2e-16 ***
cl         -0.203770   0.013411 -15.194 < 2.2e-16 ***
loc         2.038715   0.079918  25.510 < 2.2e-16 ***
wk          1.481339   0.065181  22.727 < 2.2e-16 ***
rev.tod     2.105324   0.033971  61.973 < 2.2e-16 ***
seas       -8.490331   0.279262 -30.403 < 2.2e-16 ***
sd.cl       0.360140   0.017474  20.610 < 2.2e-16 ***
sd.loc      1.575765   0.089507  17.605 < 2.2e-16 ***
sd.wk       1.600303   0.122982  13.012 < 2.2e-16 ***
sd.rev.tod  0.390088   0.021940  17.780 < 2.2e-16 ***
sd.seas     1.997713   0.106031  18.841 < 2.2e-16 ***

random coefficients
              Min.    1st Qu.     Median       Mean     3rd Qu.     Max.
cl            -Inf -0.4466810 -0.2037701 -0.2037701  0.03914082      Inf
loc           -Inf  0.9758776  2.0387151  2.0387151  3.10155255      Inf
wk      -0.1189636  0.6811879  1.4813394  1.4813394  2.28149087 3.081642
rev.tod  0.0000000  6.3104924  8.2097637  8.8587752 10.68065958      Inf
seas          -Inf -9.8377681 -8.4903311 -8.4903311 -7.14289412      Inf

Есть ли способ извлечь среднее из этих случайных коэффициентов?Это в основном проблема для ненормально распределенных параметров.Как указал Train & Croissant, вы можете использовать следующий код для вычисления среднего коэффициента для логарифмически нормально распределенного параметра, но мне интересно, есть ли более простой (и более простой!) Подход.

-exp(coef(Elec.mxl)["rev.tod"]+(0.5*(coef(Elec.mxl)["sd.rev.tod"])**2))

1 Ответ

0 голосов
/ 09 января 2012

На самом деле ... он не генерирует вывод. Вы, должно быть, также выполнили summary(Elec.mxl). Другая проблема, помимо того, что мы не сообщаем нам источник вывода, состоит в том, что среднее значение последовательности, которая включает в себя -Inf, будет либо -Inf, либо неопределенным, в зависимости от удовольствий авторов системы. Если вы имеете в виду столбец с именем «Среднее», то (после просмотра структуры итогового объекта) это должно сработать:

     summary(Elec.mxl)$summary.rpar[ , "Mean"]
#        cl        loc         wk    rev.tod       seas 
#-0.2551692  1.9159597  1.6331273  8.9872786 -8.4093959 

Вы сказали, что хотели только случайные коэффициенты, верно? (Вас не немного беспокоит логит-модель, которая производит коэффициенты порядка 8? По крайней мере, в обычных логит-моделях она обычно указывает на ситуацию с данными, которая создает патологические результаты.)

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