我在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 ***
答案 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)