gpt4 book ai didi

r - R 中的 nls() 函数

转载 作者:行者123 更新时间:2023-12-04 05:09:41 26 4
gpt4 key购买 nike

混合新凯恩斯菲利普斯曲线是:

model

经过几次操作,我们得到以下可估计模型:

new model

其中 π 是通货膨胀率,x 是产出缺口的度量(= 使用 Hodrick-Prescott 过滤器的 GDP 的周期性成分)。模型 π 和 x 的解释变量是可观察的。

我需要使用非线性最小二乘法来估计这个模型;然而,这个模型在我看来是线性的。另外,我尝试使用 nls() R 中的函数失败。

此外,我对非线性回归的研究使我实现了逻辑人口增长,但我无法找到一种方法将我学到的知识与这个练习联系起来,尤其是在推导起始值时。

最佳答案

使用普通最小二乘法 (OLS) 和 lm()问题中估计方程 (2) 的函数将导致估计系数 coef1 , coef2coef3 .

另一方面,使用非线性最小二乘法与 nls()估计方程的函数将估计参数“a”、“b”和“c”的值,它们是感兴趣的参数。
nls() R 中的函数(非线性最小二乘法)有两个重要参数:首先,formula参数,然后是 start参数。运行 ?nls在 R 中会提供一些细节;然而,要点是 formula参数采用想要估计的非线性模型的表达式(例如 y ~ a / (b + c*x) ,其中“y”和“x”是变量,“a”、“b”和“c”是感兴趣的参数)和start parameter 接受感兴趣参数的起始值,R 将在迭代过程中使用它(因为非线性最小二乘法基本上是迭代计算,直到获得参数的最佳值)。

以下是步骤:

(i) 获取参数 'a'、'b' 和 'c' 的起始值

在这里,我使用了 lm()函数来估计方程 (2) 的系数。我首先创建了在函数中使用的滞后变量。

注意:“y”指的是“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 的估计值, coef2coef3 ,我们可以通过以下方式继续计算 '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 , BC然后用作 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 提供洞察力:)

关于r - R 中的 nls() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com