模拟100 AR(2)时间序列

时间:2018-11-10 21:26:00

标签: r time-series

我需要R编程方面的帮助。

用样本大小n = 50和e_t〜N(0,1)模拟100个AR(2)时间序列。

2 个答案:

答案 0 :(得分:0)

library(FitAR)
set.seed(54321)
n=50
phi <- c(0.1,0.5)

count <- 0

for(i in 1:100){
  yt <- unclass(arima.sim(n=n,list(ar=phi),innov=rnorm(n,0,1)))
  p=SelectModel(as.ts(yt), lag.max = 20, Criterion = "BIC", Best=1)
  fit.monthly <- arima(yt, order = c(p, 0, 0))
  my_coefficients =fit.monthly$coef
  my_coefficients=my_coefficients[!names(my_coefficients) == 'intercept']
  print(my_coefficients)

  if(length(my_coefficients) == 2){
    count <- count + 1
  }
}

print(paste0("AR(2) model count is: ", count))

答案 1 :(得分:0)

使用rGARMA包中的ts.extend函数

您可以使用ts.extend包从任何平稳的高斯ARMA模型生成随机向量。该程序包使用为随机向量计算的自相关矩阵,直接从多元正态分布生成随机向量,因此它从精确分布中提供了随机向量,并且不需要“老化”迭代。这是AR(2)模型的示例。

#Load the package
library(ts.extend)

#Set parameters
AR <- c(0.9, -0.2)
m  <- 50

#Generate n = 100 random vectors from this model
set.seed(1)
SERIES <- rGARMA(n = 100, m = m, ar = AR, errorvar = 1)

#Plot the series using ggplot2 graphics
library(ggplot2)
plot(SERIES)

enter image description here