2013-02-22 2 views
2

Гибридная новой кейнсианской кривой Филлипса является:НСГ() функция R

model

После нескольких манипуляций, мы получаем следующую оценку модели:

new model

где ' pi '- уровень инфляции, а «х» - мера выходного промежутка (= циклическая составляющая ВВП с использованием фильтра Ходрика-Прескотта). Объяснительные переменные модели «pi» d 'x' наблюдаются.

Я должен оценить эту модель, используя нелинейные наименьшие квадраты; однако эта модель выглядит линейной для меня. Кроме того, мои попытки использовать функцию nls() в R потерпели неудачу.

Кроме того, мои исследования по нелинейной регрессии привели меня к логистическому росту населения, но я не могу найти способ связать то, чему я научился этому упражнению, особенно когда дело доходит до получения начальных значений.

Любая помощь будет оценена по достоинству. Благодаря :)

+1

Нам нужно немного больше информации/контекста, и воспроизводимый пример не повредит. В частности: наблюдаются ли как pi, так и x, или просто x? Как выглядит типичный набор данных? И почему вы «обязаны» использовать нелинейные наименьшие квадраты - это домашнее задание? (Оффлайн, для меня это выглядит как модель состояния пространства - например, проверьте пакет 'dynlm') –

+0

@BenBolker есть инструменты в пакете dynlm для нелинейных регрессий? Я использую его для линейных регрессий с использованием данных временных рядов. И да, pi и x наблюдаемы. А также да, это последняя часть моей домашней работы. Все переменные в модели были получены ранее. – SavedByJESUS

+1

, если (как указано в отредактированной версии) 'pi' и' x' являются наблюдаемыми, тогда это должно быть легко оснащено 'lm()'. Один аргумент для 'nls'-fitting был бы одним из способов получения переменных' a', 'b' и' c' напрямую, вместо того, чтобы их обратно-вычислять (и использовать что-то вроде метода delta для аппроксимации их неопределенности). Я бы предположил, что вы (1) используете 'lm()' fit model; (2) получить начальные значения из 'nls' fit путем обратного вычисления из этих коэффициентов. Если вам нужна помощь в выполнении домашних заданий, вам обязательно нужно показать нам, что вы уже пробовали ... –

ответ

3

Используя обычный метод наименьших квадратов (МНК) с функцией lm() оценить уравнение (2) в вопросе привело бы к оценке коэффициентов coef1, coef2 и coef3.

С другой стороны, использование нелинейных наименьших квадратов с помощью функции nls() для оценки уравнения будет оценивать значения параметров «a», «b» и «c», представляющих представляющие интерес параметры.

Функция nls() (нелинейные наименьшие квадраты) в R имеет два важных параметра: сначала параметр formula, а затем параметр start. Запуск ?nls в R предоставит некоторые детали; однако, суть состоит в том, что параметр formula принимает выражение нелинейной модели, которую нужно оценить (например, y ~ a/(b + c*x), где «y» и «x» являются переменными, а «a», «b» и «c» интересующие параметры) и параметр start принимают начальные значения интересующих параметров, которые R будет использовать в процессе итерации (поскольку нелинейные наименьшие квадраты в основном повторяют вычисления до тех пор, пока не будут получены наилучшие значения для параметров).

Ниже шаги:

(я) Получить исходные значения «A» параметров, «B» и «с»

Здесь я использовал функцию lm() для оценки коэффициента уравнение (2). Я начал с создания отстающих переменных для использования в этой функции.

NB: 'у' обозначает 'pi'

y_1 = c(NA, head(y, head(y, -1) # variable 'y' lagged by one time period 
y_2 = c(c(NA, NA), head(y, head(y, -2) # variable 'y' lagged by two time periods 
x_1 = c(NA, head(x, head(x, -1) # variable 'x' lagged by one time period 

Таким образом, для оценки коэффициентов уравнения, был использован следующий код:

reg = lm(y ~ y_1 + y_2 + x_1, na.action = na.exclude) # it is important to tell R to exclude the missing values (NA) that we included as we constructed the lagged variables 

Теперь, когда мы имеем оценки для coef1, 10 и coef3, мы можем продолжить и вычислить значения для 'a', 'b' и 'c' следующим образом:

A, B и C затем используются в качестве исходных значений в функции nls()

(II) Использование nls() функции

nlreg = nls(y ~ (1/b)*y_1 - (a/b)*y_2 - (c/b)*x_1, 
     start = list(a = A, b = B, c = C)) 

Результаты можно увидеть с кодом:

summary(nlreg) 

Благодаря Ben Bolker для обеспечения понимания: