我需要R编程方面的帮助。
用样本大小n = 50和e_t〜N(0,1)模拟100个AR(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)