lm函数和arma函数之间的区别

时间:2014-04-18 11:43:23

标签: r statistics

我在r中有这两个模型。当我在时间序列数据上使用lm函数和arma函数时,我可以得到一个解释为什么我有不同的结果

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 ***

1 个答案:

答案 0 :(得分:3)

lag没有按照您的想法行事。它将对象转换为ts并更改索引,而不是实际的矢量值。 k的值的符号也与您期望的相反。

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提供了您期望的行为:

library(xts)
x <- .xts(z, 1:6)
xData <- merge(x=x, x1=lag(x,1))
fit3 <- lm(x ~ x1, data=xData)
summary(fit3)