Как запустить регрессию с порядковым откликом для продольных данных (панель) с фиксированными эффектами в R? - PullRequest
0 голосов
/ 30 августа 2018

Я хочу запустить регрессию для данных панели с порядковой переменной ответа. У меня есть данные на уровне индивидуума с ненаблюдаемой неоднородностью (фиксированные эффекты), которая не сбалансирована (не все индивидуумы наблюдаются в каждый период времени). Зависимая переменная - это упорядоченная категориальная переменная (ранг производительности), и люди могут идти вверх и вниз в зависимости от оценки коллег. У меня есть три переменные интересов (оценка 1, оценка 2, отличные результаты) и три элемента управления (age.at.evaluation, year.of.graduation, пол). Структура данных выглядит следующим образом:

str(sub1[, .(level, score.phds, score.jobs, gender, age.reward, year, cvu, dth_applic )])
    Classes ‘data.table’ and 'data.frame':  2469 obs. of  8 variables:
     $ level     : Ord.factor w/ 5 levels "N/A"<"Candidato"<..: 3 3 4 4 3 3 1 1 3 3 ...
     $ score.phds: num  20.49 20.49 20.49 20.49 7.11 ...
     $ score.jobs: num  10.1 10.1 10.1 10.1 10.3 ...
     $ gender    : Factor w/ 2 levels "female","male": 1 1 1 1 1 1 1 1 1 1 ...
     $ age.reward: int  57 61 62 65 44 47 51 52 57 60 ...
     $ year      : Factor w/ 24 levels "1993","1994",..: 12 12 12 12 7 7 7 7 1 1 ...
     $ cvu       : int  4817 4817 4817 4817 6415 6415 6415 6415 9634 9634 ...
     $ dth_applic: int  2004 2008 2009 2012 2001 2004 2008 2009 1999 2002 ...
     - attr(*, ".internal.selfref")=<externalptr> 
     - attr(*, "sorted")= chr "cvu"

Я успешно оцениваю модель со случайными эффектами, используя пакет pgml , а также объединяю стандартные ошибки.

DT <- pdata.frame (DT [,. (Cvu, level, score.phds, score.jobs, score.diff, пол, age.reward, год, dth_applic, grad.dumm)], index = c ("cvu", "dth_applic")) </p>

reg.ols <- pglm(level ~ score.phds + score.jobs + gender + age.reward + year,
           data = DT,
           family = ordinal('probit'), R = 5, print.level = 3,
           method = 'bfgs', model = 'random')
c_st_e <- sandwich::vcovCL(reg.ols, DT$cvu)
reg.ols.clu <- coeftest(reg.ols, vcov = c_st_e)

Но когда я изменяю модель для фиксированных эффектов (внутри), в формуле отсутствует аргумент: 'start', который плохо объясняется в справке: start вектор начальных значений

reg.ols <- pglm(level ~ score.phds + score.jobs + gender + age.reward + year,
    +            data = DT,
    +            family = ordinal('probit'), R = 5, print.level = 3,
    +            method = 'bfgs', model = 'within', start=c(0,0,0,0))
     Error in lnl.ordinal(param = start, y = y, X = X, id = id, model = model,  : 
      object 'Li' not found 

Я тоже пытался с пакетом mvord безуспешно:

res <-
+   mvord(
+   formula = MMO(level, cvu, dth_applic) ~ score.phds + score.jobs + age.reward,
+   data = sub11,
+   threshold.constraints = rep(1,18),
+   threshold.values = rep(list(c(1,1,1)), 18)
+   )
Error in dev.resids(y, mu, weights) : 
  argument mu must be a numeric vector of length 1 or length 1

Есть идеи, как указать модель или подходящую упаковку?

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