时间序列之间的回归 2012-05-05

上图是两个独立的模拟时间序列。可能会很容易认为红线和黑线二者有依赖关系,尤其是线性回归还支持这一结论(如下图)。而真实原因是因为他们都是时间序列!如果做相关性检验则只考虑了他们距离零点的距离,不确定性被低估了,同样会得出二者“相关”的错误结论。你可能会觉得很奇怪,虽然上面的例子暗示出二者很强的相关性,却明明是独立的(如下面R的例子,使我们造出来的独立)。实际上这就涉及到了统计学为什么引入时间序列的意义。当模型是时间的函数和一个普通的噪声叠加时,普通的统计回归就够用了,此谓显式时间依赖。当一个时间点与另外时间点所发生的存在依赖性时,是时间序列才能处理的问题,就是所谓的隐式时间依赖。“时间序列之间的回归”告诉我们:有些事情你回归不了。

这是一个用R写的例子:

n=100   # 观测的数量
a=0.99  # 自相关系数
mu=1    # 期望
sigma=1 # 标准差
tau=sigma*sqrt(1-a^2) # 标准差

# 序列一
x=array(NA,n)
x[1]=rnorm(1,mu,sigma)
for(i in 2:n)
  x[i]=a*x[i-1]+(1-a)*mu+rnorm(1,0,tau)

# 序列二
y=array(NA,n)
y[1]=rnorm(1,mu,sigma)
for(i in 2:n)
  y[i]=a*y[i-1]+(1-a)*mu+rnorm(1,0,tau)


# 画出二者后看起来有相关性?实际独立。
plot(1:n,x,type="l",ylim=c(min(c(x,y)),max(c(x,y))))
lines(1:n,y,col="red")

# 直接画散点图看
plot(x,y,cex=0.9)

# 用线性模型拟合居然也是显著的
linreg=lm(y~x)
abline(linreg,cex=1.5)
summary(linreg)
#Call:
#lm(formula = y ~ x)
#
#Residuals:
#     Min       1Q   Median       3Q      Max 
#-0.70823 -0.19115 -0.03474  0.19931  0.93094 
#
#Coefficients:
#            Estimate Std. Error t value Pr(>|t|)    
#(Intercept)  1.37361    0.05864  23.424  < 2e-16 ***
#x           -0.30180    0.06566  -4.597 1.28e-05 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 
#
#Residual standard error: 0.351 on 98 degrees of freedom
#Multiple R-squared: 0.1774,	Adjusted R-squared: 0.169 
#F-statistic: 21.13 on 1 and 98 DF,  p-value: 1.282e-05 


Powered by Jekyll on GitHub | ©2016 Meroa | Last modified: 2018-03-22