문제

I have these two model in r. can i get an explanation for why i have different results when i use lm function and arma function on my time series data

fit1=arma(z,order=c(1,0))  
summary(fit1)

#Coefficient(s):  
#             Estimate    Std. Error    t value     Pr(>|t|)      
#  ar1        1.0001557      0.0001761   5678.00     <2e-16 ***  
#  intercept  1.8491535      0.1469061   12.59       <2e-16 ***  


fit2=lm(z~lag(z,1))  
summary(fit2)  

#Call:      
#lm(formula = z ~ lag(z, 1))       
#Coefficients:   
#            Estimate Std. Error   t value Pr(>|t|)          
#(Intercept) 8.699e-14  6.772e-15 1.285e+01   <2e-16 ***   
#lag(z, 1)   1.000e+00  8.109e-18 1.233e+17   <2e-16 ***
도움이 되었습니까?

해결책

lag does not do what you think it does. It converts the object to ts and changes the index, not the actual vector values. The sign of the value for k is also opposite of what you'd expect.

set.seed(21)
z <- rnorm(6)
as.ts(z)
# Time Series:
# Start = 1 
# End = 8 
# Frequency = 1 
# [1]  0.7930132  0.5222513  1.7462222 -1.2713361  2.1973895  0.4331308
lag(as.ts(z),1)
# Time Series:
# Start = 0 
# End = 7 
# Frequency = 1 
# [1]  0.7930132  0.5222513  1.7462222 -1.2713361  2.1973895  0.4331308

xts::lag.xts provides the behavior you expect:

library(xts)
x <- .xts(z, 1:6)
xData <- merge(x=x, x1=lag(x,1))
fit3 <- lm(x ~ x1, data=xData)
summary(fit3)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top