AR(1) с нелинейными наименьшими квадратами с использованием алгоритма Марквардта: EViews против R

Несколько недель назад я разместил плохо продуманный вопрос, изобилующий неопределенной информацией. Это моя попытка исправить первоначальный вопрос и получить лучшие ответы.

Основная проблема: я не могу получить аналогичные оценки параметров с EViews и R.

По причинам, которые я сам не знаю, мне нужно оценить параметры для определенных данных, используя EViews. Это делается путем выбора опции NLS (нелинейные наименьшие квадраты) и использования следующей формулы: indep_var c dep_var ar(1)

EViews утверждает, что они оценивают линейные процессы AR(1), такие как:

Yt = a + B * Xt + ut

где ошибкиt определены как

ut = p * ut-1 + e

используя эквивалентное уравнение (с некоторыми алгебраическими заменами):

Yt = (1 - p) * a + p * Yt - 1 + B * Xt - p * B * Xt - 1 + et

Кроме того, этот поток на форумах EViews предполагает, что их оценки NLS генерируются алгоритмом Марквардта.

Теперь функция перехода к R для оценки процессов AR(1) arima, Однако есть две проблемы: 1) оценки являются оценками максимального правдоподобия; 2) оценка перехвата фактически не является оценкой перехвата.

Поэтому я обратился к nlsLM функция из пакета minpack.lm. Эта функция использует алгоритм Марквардта для получения нелинейных оценок наименьших квадратов, которые должны давать те же результаты, что и реализация EViews (или, по крайней мере, очень похожие).

Теперь код. У меня есть фрейм данных (data) с независимой переменной и зависимой переменной, такой как переменная, сгенерированная следующим кодом:

data <- data.frame(independent = abs(rnorm(48)), dependent = abs(rnorm(48)))

Чтобы оценить параметры в уравнении, которое EViews утверждает для оценки (3-й на этом посте), я использую следующие команды:

library(minpack.lm)
result <-
nlsLM(dependentB ~ ((1 - theta1) * theta2) + (theta1 * dependentA) +
                    (theta3 * independentB) - (theta1 * theta3 * independentA),
data = list(dependentB = data$dependent[2:48], dependentA = data$dependent[1:47],
   independentB = data$independent[2:48], independentA = data$independent[1:47]),
start = list(theta1 = -10, theta2 = -10, theta3 = -10)
)

К сожалению, оценки выходных nlsLM не близки к тем, которые выводит EViews. У вас есть идеи, что может быть причиной этого? Или, может быть, мой код неверен?

Наконец, я хотел бы сказать, что я лично являюсь пользователем R - именно поэтому я пытаюсь сделать это в R вместо EViews. Я также хотел бы предоставить вам данные, с которыми я работаю, но это невозможно, поскольку это конфиденциальные данные.

1 ответ

Кажется, что спецификация Eviews должна быть:

dep_var  c indep_var ar(1)
Другие вопросы по тегам