Cross Validated Asked on January 5, 2022
I don’t understand results of ar()
function in R.
I made up a very simple case, Fibonacci sequence:
x <- c(1,1,2,3,5,8,13,21,34,55)
ar(x)
result is
Coefficients:
1
0.5531
I would expect result of 1,1 – for the model x(n) = 1* x(n-1) + 1 * x(n-2)
Can anyone explain me please why I don’t get expected result?
You may use ar.ols
to estimate this non-stationary series.
From the docs,
ar.ols fits the general AR model to a possibly non-stationary and/or multivariate system of series x.
Example with your data:
ar.ols(x,demean=FALSE)
Call:
ar.ols(x = x, demean = FALSE)
Coefficients:
1 2
1 1
Answered by A. Webb on January 5, 2022
As I said in my comment, you are going toward a wrong direction.
ar
is assuming x
as a stationary process AR(p)
. The default estimation method "yule-walker"
is a moment estimator. Please see Yule-Walker equations of autoregressive process for more.
ar
selects order p
by minimizing AIC. For you example Fibonacci sequence x
, it has selected p = 1
. The resulting coefficient, by Yule-Walker equations, matches the sample ACF at lag 1:
z <- acf(x, lag.max = 1)
# 0 1
#1.000 0.553
Since model assumption is wrong, you definitely can not get c(1, 1)
as the answer. A crude way to get you to the right estimation is using least squares linear regression:
N <- length(x)
y <- x[3:N]
x1 <- x[2:(N-1)] # lag-1
x2 <- x[1:(N-2)] # lag-2
lm(y ~ x1 + x2 - 1) ## drop intercept (as you know it for sure)
#Coefficients:
#x1 x2
# 1 1
Answered by Zheyuan Li on January 5, 2022
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP