在OLS中使用一阶自动回归过程创建x

时间:2015-04-21 03:20:42

标签: r linear-regression autoregressive-models

我有一个简单的回归:yt =β1+β2xi+ ei,n = 27,“x”是AR(1):

xi = c +∅x(i-1)+ηi,其中ηi~N(0,1),x0~N(c /(1-∅),1 /(1-∅^ 2),c = 2,∅= 0.6

我需要创建“x”,为此我设置了所有内容,包括“x0”,但是我被卡住了:

phi <- 0.6
c <- 2
ni <- rnorm(27)
x0 <- rnorm(1,(c/(1-phi)),(1/(1-(phi)^2)))

使用for我无法正常工作:

xa<- vector(mode="numeric",length=0)
x<- rep(0,27)
for(i in 1:27){
  w<-c+phi*x[i-1]+ni[i]
  xa <- c(xa,w)
}

我应该如何创建“x”?

2 个答案:

答案 0 :(得分:1)

看起来你的计算x [i-1]不用于计算x [i]。如果我了解您的AR模型,您可以尝试

x <- rep(0,27)
x[1] <- x0
for(i in 2:27){
  x[i] <-c + phi*x[i-1] + ni[i]
}

或使用R函数生成更一般的AR模拟

mu <- c/(1-phi)
x <- arima.sim(model=list(ar=c(phi,0), sd=1), n=27) + mu

<强>更新

要让x [1]包含x0之后的第一个计算值,请尝试

x <- rep(0,28)
x[1] <- x0
for(i in 2:28){
  x[i] <-c + phi*x[i-1] + ni[i-1]
}
# to change indexing so x[1] is not x0 but is first computed value
for( i in 1:27) { x[i] <- x[i+1] }
x <- x[-28]

答案 1 :(得分:0)

好吧,我设法找到了解决方案:

设置

phi <- 0.6
c <- 2
e <- as.vector(rnorm(27))
ni<- as.vector(rnorm(27))
x0 <- rnorm(1,(c/(1-phi)),(1/(1-(phi)^2)))

我们需要这样做for

x<- rep(0,27)
x[1]<- c+phi*x0+ni[1]
for(i in 2:27){
  x[i]<-c+phi*x[i-1]+ni[i]
}

然后它有效!!!!