R中AR(2)过程的模拟

R中AR(2)过程的模拟,r,statistics,autoregressive-models,R,Statistics,Autoregressive Models,我需要模拟一个AR(2)过程Y[t]=1/20+(Sqrt(3)/2)Y[t-1]-(1/4)Y[t-2]+e[t] e[t]~(0,0.02^2) 如果模型是按季度计量的,则模拟时间必须超过30年 我试过使用xhi,这是一个简单的修复,您需要从3运行I直到n。如果要设置y_0或y_1的值,需要将y中的第一个值设置为y_0,将第二个值设置为y_1。你的过程是爆炸式的,因为你加上y[i-2,k],而你的公式说明你应该减去它。回答你的问题了吗?请注意,您的问题中没有定义phi1和phi2,并且您对错

我需要模拟一个AR(2)过程
Y[t]=1/20+(Sqrt(3)/2)Y[t-1]-(1/4)Y[t-2]+e[t]

e[t]~(0,0.02^2)

如果模型是按季度计量的,则模拟时间必须超过30年


我试过使用
xhi,这是一个简单的修复,您需要从3运行I直到n。如果要设置y_0或y_1的值,需要将y中的第一个值设置为y_0,将第二个值设置为y_1。你的过程是爆炸式的,因为你加上y[i-2,k],而你的公式说明你应该减去它。回答你的问题了吗?请注意,您的问题中没有定义
phi1
phi2
,并且您对错误术语的定义有误。根据您的代码,它应该是e[t]~N(0,0.02^2)。您好,感谢您的回复,回复RBeginner的评论,从3到N运行i,您的意思是
(3:N中的i){
在原始代码中,3取代了2,我也不太明白你在y中设置第一和第二个值到y_0和y_1是什么意思。作为对Limey的响应,phi 0、phi 1和phi 2是y上的系数,为1/20,sqrt(3)/2和-1/4,是的,抱歉忘记了N,但它在代码中是正态分布的,对吗?我认为@RBeginner的意思是你应该将你的
x
设置为
c(y0,y-1,arima.sim(model=list(order=c(2,0,0),ar=c(a1,a2)),N=120,N.start=100,sd=0.02))
。然后从
3
运行到
n
将起作用,因为您将获得在时间
i
估计观测值所需的前两个术语的值。希望它有帮助!
set.seed(9029) # set a seed to fix the simulated numbers

nsim = 1      # no. of simulations
burn = 100    # burn-in periods
n = 220       # sample length + burn-in periods --> sample length = 4quarters*30yrs
tp=(burn+1):n # time points to be sampled
sigerr = 0.02    # error s.d.
a1 = (sqrt(3)/2)      # AR(2) coefficient
a2 = 0.25     # AR(2) coefficient = 1/4
a0 = 1/20     # Phi 0 

# create data series and error series
y = array(0,c(n,nsim))                          # data series
err = array(rnorm(n*nsim,0,sigerr),c(n,nsim))       # iid errors

# simulate y from an AR(2) process
for (k in 1:nsim) {
  for (i in 2:n) {
    y[i,k] = a0 + a1*y[i-1,k] + a2*y[i-2,k] + err[i,k]
  }
}