计算R中时间序列的自相关

时间:2013-11-26 13:42:19

标签: r time-series correlation

据我了解,自相关是一组数字与其自身的相关性。

我知道,我可以使用acf函数来计算R中的自相关,但我想自己实现它。

我有一个时间序列X [t],我想计算这个时间序列与X [t-1]的相关性

我在R中做到了这一点:

ts <- c(1,2,8,1,2,2,3,2,3,2,2,1,3,2,3,1,1,2)
cor(ts,ts-1)

但相关性总是1,我认为这不是正确的答案。我怎么能在R?中做到这一点?

2 个答案:

答案 0 :(得分:4)

您希望计算时间序列与其自身滞后版本的相关性。 首先设置滞后,然后移动系列

require(zoo)
ts <- as.zoo(c(1,2,8,1,2,2,3,2,3,2,2,1,3,2,3,1,1,2))
n <- 3
ts_n <- lag(ts, k=-n, na.pad=T)

然后计算相关性,同时省略NA

cor(ts[!is.na(ts_n)], ts_n[!is.na(ts_n)])

答案 1 :(得分:1)

当然,在这种情况下相关性是因为:

> v <- 1:4
> v
 [1]  1  2  3  4
> v-1
 [1] 0 1 2 3

你可以修改这个f.x。:

> v <- runif(5)
> v
[1] 0.8321065 0.1707357 0.7341771 0.2247614 0.1879239

# leaves out first element
> v[-1]
[1] 0.1707357 0.7341771 0.2247614 0.1879239

#leaves out last element
> v[-length(v)]
[1] 0.8321065 0.1707357 0.7341771 0.2247614

> cor(v[-1],v[-length(v)])
[1] -0.6191359