【问题标题】:Creating an ARIMA model with Specified Lags and differencing in R在 R 中创建具有指定滞后和差异的 ARIMA 模型
【发布时间】:2024-11-07 05:25:01
【问题描述】:

您好,我刚刚在 Data Camp 中完成了 R 中的 ARIMA 模型课程,并且想运行一些 ARIMA 模型。 该课程使用astsa 进行ARIMA 建模。

对于这个问题,我将使用sunspots 数据,尽管数据对问题并不重要

我的包裹

library(astsa)

一些数据

Sun.ts <- sunspots

这个函数运行一个 AR(12) 模型,所有滞后 AR1 到 AR12

sarima(Sun.ts, p = 12, d = 0, q = 0)

我怎样才能做一个 AR 甚至是 ARIMA 模型,比如只有 12 个滞后或 1 和 12?

最终对于一个项目,我将做一个看起来像这样的 ARIMA 模型

sarima(my_data, p = c(12), d = c(1, 12), q = c(1, 12)) 

模型仅包括括号中的那些滞后。我已经在 SAS 中完成了,但我想在 R 中完成。

我想在 R 中做的模型 SAS 代码

proc arima data=my_data;
   identify var=Deaths(1, 12);
   estimate  p = (12) q = (1) (12) noint method=ml;
run;

【问题讨论】:

  • 我想出了如何在 sarima 函数中使用 fixed 参数进行参数选择,但对于可能需要手动完成的差异。任何建议都会有所帮助。

标签: r time-series autoregressive-models


【解决方案1】:

sarima 函数您好,您需要使用 fixed 参数来指定您想要的系数。

这是通过制作 NAs 而不是 NAs 的向量来完成的。 例如,我想要一个 AR(1,12) 模型,所以我需要制作一个看起来像这样的向量。 NA 是第 1 个索引,NA 是第 12 个索引。最后一个索引是常量,如果没有常量,它需要为空。

fixed_constant   <- c(NA,0,0,0,0,0,0,0,0,0,0,NA,NA)
fixed_noconstant <- c(NA,0,0,0,0,0,0,0,0,0,0,NA) #No Constant 

然后使用sarima 函数。

sarima(Sun.ts, p = 12, d = 0,q = 0, fixed = fixed_constant, no.constant = F)

然后没有常数

sarima(Sun.ts, p = 12, d = 0,q = 0, fixed = fixed_noconstant, no.constant = T)

我创建了一个辅助函数来制作简约的 ARIMA 模型。这可以很容易地扩展到sarima.for

psarima <- function(tsdata, p, d, q, no.constant = FALSE){

pt = max(p)
qt = max(q)

pvector<- rep(0,pt)
qvector <- rep(0,qt)
for (i in p){
  pvector[i] <- NA
}
for (i in q){
  qvector[i] <- NA
}
if (no.constant == T | d > 1){
  intercept <- NULL
} else{
  intercept <- NA
}
parameters<- c(pvector,qvector,intercept)
sarima(tsdata,pt,d,qt, fixed = parameters, no.constant = no.constant)
}

p 表示简约的 sarima。

在行动 这是一个带有 AR(12) 和 MA(2,3) 的 ARIMA。

psarima(Sun.ts,c(12),0,c(2,3), no.constant = F) 

我仍在学习 ARIMA 模型,但由于某种原因,这样做不起作用。

psarima(Sun.ts,1,2,c(2,3), no.constant = F)
Error in optim(init[mask], armafn, method = optim.method, hessian = TRUE,  : 
  non-finite finite-difference value [1]

我不确定是什么导致了这种情况发生。但它与差异有关。

【讨论】:

  • 有谁知道制作简约 ARIMA 模型的更简单方法。也许在另一个包中?
最近更新 更多