r - 你可以使用 R 中的 ar 函数拟合非平稳模型吗

标签 r time-series

我正在尝试使用 ar 函数拟合一个简单的 AR(1) 系列,但它对非平稳系列给出了不好的结果。

我试图查找 ar 函数文档,但没有找到任何相关信息。

我用下面的方式模拟了一个系列:

l = 100
alpha = 1.05 # first tried with 1.01, 1.02
x <- w <- rnorm(l)
for (t in 2:l) x[t] <- alpha * x[t-1] + w[t]
ar(x)

不是将 1 作为方差和真正的 alpha 值,alpha 值从未超过 1,方差非常小。 alpha 越高,情况就越糟。对于 1.05,方差约为 600。

最佳答案

不知道为什么ar不起作用,但我可以为 ar(1) 提供一个可行的解决方案:您可以使用 nls 拟合指数函数.实际上,自回归一阶是一阶微分方程,其解是指数的:

library(nls2)
l = 100
alpha = 1.02 
w <- rnorm(l,0,1)
x <- vector(length = l)
x[1] = 5
for (t in 2:l) {
  x[t] <- alpha * x[t-1] + w[t]
}
data <- data.frame(time = 1:l,x = x)
fit <- nls2(x ~ c*exp((alpha-1)*time),
           start = data.frame(alpha = c(0.95,1.05) , c = c(-10,10)),
           algorithm = "random-search",
           data = data,
           maxiter  = 100)
summary(fit)


      Estimate Std. Error t value Pr(>|t|)    
alpha 1.023239   0.001427 716.942  < 2e-16 ***
c     2.649077   0.310785   8.524 1.91e-13 ***

这种方法可以同时处理 alpha高于 1 或低于 1。这里我使用 nls2它允许覆盖一系列初始值,这使得使用非线性拟合时的生活变得容易。

关于r - 你可以使用 R 中的 ar 函数拟合非平稳模型吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57445282/

相关文章:

r - 总是选择向量的中间元素

python - 从 R 到 Python 的 By 等价物

r - 为 Windows 构建 R 包 -ERROR : compilation failed for package xxx

r - 编辑 : FIXED -- Computational instability in R Forecast package?

python - 检索自上次操作以来的时间差——python/pandas

Python:使用 Pandas 从数据框中选择特定日期

R - 谷歌分析包

R:嵌套data.table操作

python - 在大输入上滑动 tensorflow 分类器

python - 在时间戳表上旋转的 Pandas 返回意外结果