繁体   English   中英

R中带有非线性外生变量的ARIMA模型

[英]ARIMA model with nonlinear exogenous variable in R

我正在R中进行非线性回归,并想在模型中添加一个移动平均项以消除残差的自相关。

基本上,这是模型:

y[n] = a + log((x1[n])^g + (x2[n])^g) + c*e[n-1] + e[n]

其中[e]是移动平均项。

我计划使用ARIMA(0, 0, 1)对残差建模。 但是,我不知道我应该在R中使用哪个函数将非线性外生部分添加到ARIMA模型中。

更多信息:我知道如何使用nls命令来估计ag ,但是不知道如何处理e[n]

我知道xreg中的arima可以处理带有线性外生变量的ARIMA模型。 是否有类似的函数来处理带有非线性外生变量的ARIMA模型?

预先感谢您的帮助!

nlme具有这种能力,因为它适合非线性混合模型。 通过允许随机效应和相关误差,您可以认为它是nls的扩展(仅固定效应非线性回归)。

nlme可以通过诸如correlation = corARMA(0.2, ~ 1, p = 0, q = 1, fixed = TRUE)类的东西来处理ARMA相关性。 这意味着,残差是MA(1)过程,初始猜测系数为0.2,但在模型拟合过程中会进行更新。 ~ 1表示MA(1)处于截距,没有进一步的分组结构。

我不是nlme的专家,但是我知道nlme是您所需要的。 我提供了以下示例,但是由于我不是专家,因此目前无法使nlme工作。 我将其发布在此处以开始/添加味道。

set.seed(0)
x1 <- runif(100)
x2 <- runif(100)
## MA(1) correlated error, with innovation standard deviation 0.1
e <- arima.sim(model = list(ma = 0.5), n = 100, sd = 0.1)
## a true model, with `a = 0.2, g = 0.5`
y0 <- 0.2 + log(x1 ^ 0.5 + x2 ^ 0.5)
## observations
y <- y0 + e

## no need to install; it comes with R; just `library()` it
library(nlme)

fit <- nlme(y ~ a + log(x1 ^ g + x2 ^ g), fixed = a + g ~ 1,
            start = list(a = 0.5, g = 1),
            correlation = corARMA(0.2, form = ~ 1, p = 0, q = 1, fixed = FALSE))

nls相似,我们有一个整体模型公式y ~ a + log(x1 ^ g + x2 ^ g) ,并且迭代过程需要起始值。 我选择了start = list(a = 0.5, g = 1) 开头已经说明了correlation位。

nlme fixedrandom参数指定在整个公式中应视为固定效应和随机效应的参数。 由于我们没有随机效应,因此我们未对其进行指定。 我们希望ag为固定效果,所以我尝试了诸如fixed = a + g ~ 1 不幸的是,由于某些原因,我不知道它不能正常工作。 我阅读了?nlme ,并认为该公式意味着我们希望所有观察值都具有共同的ag ,但是后来nlme报告了一个错误,指出这不是有效的组公式。

我也在对此进行投资; 正如我所说,以上内容为我们提供了一个起点。 我们已经很接近最终答案了。


感谢user20650指出我的尴尬错误。 我应该使用gnls函数而不是nlme 根据nlme软件包的设计性质,函数lmenlme必须采用random参数才能起作用。 幸运的是, nlme软件包中还有其他一些例程可以扩展线性模型和非线性模型。

  • glsgnls通过允许非对角方差函数gnls扩展lmnls

因此,我应该真正使用gnls代替:

## no `fixed` argument as `gnls` is a fixed-effect only
fit <- gnls(y ~ a + log(x1 ^ g + x2 ^ g), start = list(a = 0.5, g = 1),
            correlation = corARMA(0.2, form = ~ 1, p = 0, q = 1, fixed = FALSE))

#Generalized nonlinear least squares fit
#  Model: y ~ a + log(x1^g + x2^g) 
#  Data: NULL 
#  Log-likelihood: 92.44078
#
#Coefficients:
#        a         g 
#0.1915396 0.5007640 
#
#Correlation Structure: ARMA(0,1)
# Formula: ~1 
# Parameter estimate(s):
#   Theta1 
#0.4184961 
#Degrees of freedom: 100 total; 98 residual
#Residual standard error: 0.1050295 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM