R中具有两个不同时间长度的动态时间规整

时间:2018-07-07 09:03:30

标签: r plot time-series stock dtw

我目前正在尝试对两个时间序列进行分析。由于我的两个时间序列都是金融股票数据,因此我想尝试找到一些相似之处。

第一件事:

问题:获取我的两个时间序列数据:

    # Get quantmod for pulling the data
if (!require("quantmod")) {
  install.packages("quantmod")
  library(quantmod)
}

#defining the period for time series 1:
start <- as.Date("1997-08-08")
end <- as.Date("2000-12-31")


#Pulling data directly from Yahoo using the Quantmod package
getSymbols('^NDX',src='yahoo', from = start, to = end)

由于我认为我的数据有点嘈杂,因此我将5天平均值进行平滑处理,然后对数据进行归一化以比较两个时间序列:

####taking the average due to noisy daily data -> smoothing it:
ma <- function(x,n=5){filter(x,rep(1/n,n), sides=1)}

#NDX smoothing - 5 day average and delete NA (missing values)
sNDX <- na.omit(data.frame(sNDX = ma(NDX[, "NDX.Close"], n=5)))

#NDX smoothed data normalizing  
nNDX <- data.frame(time = 1:nrow(sNDX), nNDX = nd(sNDX))

此过程是第二次进行...

重要的是,两个时间序列都从不同的日期开始,并且具有不同的长度。我认为开始日期并不那么重要,因为我正在对数据进行规范化并将其按索引1:n缩放。

现在,我想到了使用动态时间规整。 “在时间序列分析中,动态时间规整(DTW)是用于测量两个时间序列之间相似度的算法之一,它们之间的速度可能会发生变化。” https://en.wikipedia.org/wiki/Dynamic_time_warping

我在R中使用了称为dtw()的程序包,因为该程序包似乎是在两个时间序列上计算DTW的最佳程序包。

从软件包中:“动态时间扭曲是一种比较时间序列的流行技术,它既提供了对局部压缩和拉伸不敏感的距离度量,又提供了使两个输入序列之一最佳变形到屏幕上的扭曲。文献中已经讨论了各种算法和约束条件,dtw软件包提供了它们的统一性;它允许R用户自由混合各种连续性约束条件,约束窗口,端点,局部距离定义,该软件包还提供了使用几种经典图表类型可视化路线和约束的功能。“ http://dtw.r-forge.r-project.org/

立即打包:

   # Get DTW
    if (!require("dtw")) {
      install.packages("dtw")
      library(dtw)
    }

    #Defining the DTW function with query=nNDX$sNDX and index=nbdx$sbdx
    ts <- dtw(nNDX$sNDX, nbdx$sbdx, keep=TRUE,step=asymmetric,
              open.end=TRUE,open.begin=TRUE)

    hi <- 1:length(ts$index1)

    #creating a three plot:
    dtwPlotThreeWay(ts,match.indices=hi)

Three Way Plot of DTW with different lenghts

上面的图片在矢量中的长度不同。

此长度几乎相同:

Three Way Plot of DTW with almost same lenghts

现在我的问题是,我可以使用更少的数据作为参考索引吗,因为第二张图表的数据量几乎相同,因此显示出巨大的垂直移动。根据DTW算法,这似乎是参考索引中的所有数据都引用查询索引中的第一个数据点。 另外,在软件包中,他们讨论了不同的步进模式移动。我使用了非对称,但是在大多数情况下,对称是最熟悉的:

symmetric1

anyopne可以帮助我吗,应该正确使用哪种方法?

有关更多详细信息,请告诉我。

最好, 阿伦

0 个答案:

没有答案