混合新凯恩斯菲利普斯曲线是:
经过几次操作,我们得到以下可估计模型:
其中π是通货膨胀率,x是衡量产出缺口的指标(= 使用 Hodrick-Prescott 滤波器的 GDP 的周期性成分)。模型π和x的解释变量是可观察的。
我需要使用非线性最小二乘估计这个模型;然而,这个模型在我看来是线性的。此外,我nls()
在 R 中使用该函数的尝试失败了。
此外,我对非线性回归的研究使我实现了逻辑人口增长,但我无法找到一种方法将我学到的知识与这个练习联系起来,尤其是在推导起始值时。
混合新凯恩斯菲利普斯曲线是:
经过几次操作,我们得到以下可估计模型:
其中π是通货膨胀率,x是衡量产出缺口的指标(= 使用 Hodrick-Prescott 滤波器的 GDP 的周期性成分)。模型π和x的解释变量是可观察的。
我需要使用非线性最小二乘估计这个模型;然而,这个模型在我看来是线性的。此外,我nls()
在 R 中使用该函数的尝试失败了。
此外,我对非线性回归的研究使我实现了逻辑人口增长,但我无法找到一种方法将我学到的知识与这个练习联系起来,尤其是在推导起始值时。
使用带有函数的普通最小二乘法 (OLS)lm()
来估计问题中的方程 (2) 将导致对系数和的估计。
另一方面,使用具有nls()
函数的非线性最小二乘法来估计方程将估计参数“a”、“b”和“c”的值,这些参数是感兴趣的参数。
R中的nls()
函数(非线性最小二乘)有两个重要的参数:首先是formula
参数,然后是start
参数。在 R 中运行?nls
会提供一些细节;然而,要点是formula
参数包含一个想要估计的非线性模型的表达式(例如y ~ a / (b + c*x)
,其中“y”和“x”是变量,“a”、“b”和“c”是参数感兴趣的)和start
参数接受感兴趣的参数的起始值,R将在迭代过程中使用(因为非线性最小二乘法基本上迭代计算,直到获得参数的最佳值)。
以下是步骤:
(i) 获取参数'a'、'b'和'c'的起始值
在这里,我使用lm()
函数来估计方程(2)的系数。我首先创建要在函数中使用的滞后变量。
注意:'y'指的是' '
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
现在我们有了 和 的估计值,我们可以继续计算 'a'、'b' 和 'c' 的值,方法如下:
B = 1 / reg$coefficients["y_1"] # Calculates the inverse of the coefficient on the variable 'y_1'
A = B * reg$coefficients["y_2"] # Multiplies 'b' by the coefficient on the variable 'y_2'
C = B * reg$coefficients["x_1"] # Multiplies 'b' by the coefficient on the variable 'x_1'
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 提供的见解:)