SPML: ошибка в lag.listw(listw, u, zero.policy = zero.policy): длина объекта отличается
У меня есть данные панели и мне нужно применить spml, но я продолжаю получать одну и ту же ошибку, и, несмотря на попытки, мне не удается ее преодолеть.
В принципе, у меня есть сбалансированная панель из 36 единиц и 261 дней наблюдений. Я создал data.frame (с именем aaa) с 6 столбцами
Банк, Дата, CDS, X1, X2, X3
и 9396 строк (9397, если учитывать метки столбцов).
Здесь: * Units и Date - мои индексы * CDS - зависимая переменная * X1, X2 и X3 - независимые переменные.
- Банк является фактором с 36 уровнями,
- Дата является целочисленным вектором int [1: 9396],
- CDS, X1, X2 и X3 представляют собой числовые векторы num [1:9396].
Я также создал объект listw (с именем W2) класса "matrix" и структуры num [1:9396, 1:9396].
Я получил свой объект listw, применив Kronecker к исходной матрице W со следующим кодом:
(Kronecker (diag(261), W)
Затем я выразил "формулу" следующим образом:
fm <- (Cds) ~ (X1) + (X2) + (X3)
И, впоследствии, применил сплм:
spmltest<-spml(fm, data = aaa, index = c("Bank","Date"), listw = w2)
Вот ошибка, которую я получаю:
Ошибка в lag.listw(listw, u, zero.policy = zero.policy): длина объекта отличается.
Я пытался проверить, но мне кажется, что объекты на самом деле не имеют разную длину.
Есть идеи, где я ошибаюсь? Любая помощь или предложение будет высоко ценится. Спасибо.
(PS: я знаю, что должен указать модель (если она фиксированная или случайная), но я не думаю, что это решит эту конкретную проблему. Если я ошибаюсь, пожалуйста, дайте мне знать)
(Pss: Я также обнаружил, что кто-то уже спрашивал об этой же проблеме и решил ее следующим образом: "Авторы пакета" splm "указали на ошибку в настройке идентификаторов панели. Пространственные единицы должны быть медленнее (1,1,1,.....; 2,2,2...;....;77,77,77,....) и идентификатор времени должен быть быстрее (1,2,3,....,31;....; 1,2,3...31) из двух. После соответствующей настройки данных я смог получить результаты ". Я просто не могу понять, что это такое подразумевается медленнее и быстрее. Если это означает, что данные должны быть отсортированы по пространственным единицам, а не по времени, мои данные уже отсортированы таким образом).
2 ответа
У меня была такая же проблема в моей модели.
Я решил (особая благодарность Милло Джованни), установив первые два столбца моей базы данных по "id" и "time". Вам также не нужно продолжать произведение Кронекера, R автоматически расширяет пространственную матрицу W.
И не забудьте идентифицировать данные в том же порядке "id" и "time" по index = c("id", "time").
Вот мой код:
SEM <- spml (формула = gdp ~ oivrev, data = data, index = c ("id", "year"), listw = W, model = "inside", lag = F,atial.error = "b")
Я надеюсь, что это поможет вам.
Мой опыт показывает, что я получил ту же ошибку, когда я использовал панель, содержащую значения NA. Когда я удаляю данные с помощью NA, код работал правильно. Удачи!
Вам нужно установить index=Null, так как вы делаете продукт Kronecker