Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok,): 0 (не-NA) случаев в Кокрановской процедуре Оркатта

Я пытаюсь применить к своим данным процедуру Cochrane Orcutt с помощью процесса AR (1). Когда я использую функцию cochrane.orcutt из пакета orcutt, возвращается следующая ошибка:

Ошибка в lm.fit (x, y, offset = offset, singular.ok = singular.ok, ...): 0 (не-NA) случаев

Сначала я убедился, что во всем наборе данных нет неполных случаев.

library(orcutt) foo <- na.omit(foo) model <- lm(1-ef ~ as.factor(dtype) + as.factor(p) + inc + ed + marg + as.factor(period) + as.factor(id), data = foo) cochrane.orcutt(model)

Строка кода cochrane.orcutt(model) вызывает ошибку.

Вот что я пробовал до сих пор:

1) Для дальнейшего устранения проблемы я начал с первой независимой переменной и добавил их одну за другой, чтобы увидеть, где происходит сбой в коде. Все они работают по отдельности и в комбинации, за исключением «as.factor (id)», который, кажется, является ошибочной переменной.

2) Я подумал, что, возможно, есть что-то в строковой природе переменной id, поэтому я создал факторную переменную с числами, которые представляют каждого человека (в приведенных ниже данных называется id2). Когда я не конвертирую переменную «id2» в факторную переменную и не запускаю ее как числовую, код работает без проблем как в полной, так и в двумерной модели.

Когда я регрессирую «1-ef» для переменной «as.factor (id2)» в двумерной регрессии, а затем выполняю процедуру Кокрановского Оркатта, R останавливается во время выполнения процедуры.

3) Затем я подумал, что, возможно, проблему вызывают неиспользуемые уровни, поэтому я попробовал: foo$id <- droplevels(foo$id), а также попытался преобразовать переменную id в символьную. Ни один из подходов не решил проблему.

Резюме моих попыток решить:

Насколько я могу судить, есть что-то, связанное с переменной "id" фактора, которая вызывает ошибку с функцией cochrane.orcutt. Либо R останавливается, либо выдает ошибку о том, что нет случаев, не относящихся к NA (я убедился, что это не относится к na.omit.

Во всех вышеперечисленных случаях у R нет проблем с запуском регрессии, только оценка Кокрейн-Оркатта.

Любые идеи? Спасибо за помощь!

Вот подмножество данных, демонстрирующих ошибку:

foo <- structure(list(ef = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9232, 1, 1, 1, 1, 1, 1, 0.68, 0.847222222222222), dtype = c("5", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "5", "5"), p = c("0", "1", "1", "1", "0", "0", "1", "1", "1", "0", "1", "1", "1", "1", "1", "1", "1", "0", "0"), inc = c(65327L, 38517L, 38888L, 39147L, 62022L, 63938L, 74663L, 37203L, 36548L, 57582L, 50425L, 50880L, 50372L, 51780L, 54763L, 54341L, 53988L, 36379L, 37290L), ed = c(0.400399151, 0.140407741, 0.158387284488, 0.167404993465, 0.278612155, 0.307604827205, 0.459637019, 0.174936986, 0.165744029552, 0.379544685, 0.23472389, 0.301241844, 0.296150413967, 0.308115565224, 0.229996365, 0.244502536866, 0.251595155313, 0.241661234658, 0.257054165719), marg = c(-27.04, 100, 48.14, 100, -28.98, -38.96, 39.94, 100, 100, -1.62, 31.7, 22.86, 8.72, 19.5, 31.94, 22.78, 40.36, -59.26, -50.7), period = c("112", "112", "113", "114", "112", "113", "112", "112", "113", "112", "112", "112", "113", "114", "112", "113", "114", "113", "114"), id = c("A000022", "A000055", "A000055", "A000055", "A000210", "A000210", "A000358", "A000361", "A000361", "A000362", "A000365", "A000367", "A000367", "A000367", "A000369", "A000369", "A000369", "A000370", "A000370"), id2 = c(1, 2, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 8, 9, 9, 9, 10, 10)), .Names = c("ef", "dtype", "p", "inc", "ed", "marg", "period", "id", "id2"), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L), na.action = structure(12L, .Names = "12", class = "omit"), class = "data.frame")


person lispang    schedule 16.04.2018    source источник


Ответы (1)


coef(model) имеет некоторые значения NA, указывающие на избыточную параметризацию, с которой lm может справиться, но cochrane.orcutt не может.

Как вы уже обнаружили, вам нужно будет удалить некоторые предикторы.

person G. Grothendieck    schedule 16.04.2018