首页 > 解决方案 > R dtw 包:二进制数据的查询和参考向量以将其传递给 dtw 函数

问题描述

我有两个看起来像这样的时间序列表。

在此处输入图像描述

我计算了二进制列来计算特定的分类值,如果这个值 = “x”,则分配 1,否则分配 0。我使用 ggplot 像这样绘制它,

 p <-ggplot(x1,aes(Time, binary))
 p + geom_line()+ 
 xlab("Time in seconds (s)")+
 scale_y_continuous(name="x = 1, anything else = 0", breaks=c(0, 1))+
 labs(title = "Example of the duration")

我得到了我想要的,

在此处输入图像描述

我对第二个时间序列做了同样的事情,我得到了这张图, 在此处输入图像描述

现在是时候使用dtw 函数来计算距离了。我不确定如何将这个二进制数据存储到进位或矩阵中以通过 dtw 函数在这里传递,

dtw(
  x,
  y = NULL,
  dist.method = "Euclidean",
  step.pattern = symmetric2,
  window.type = "none",
  keep.internals = FALSE,
  distance.only = FALSE,
  open.end = FALSE,
  open.begin = FALSE,
  ...
)

其中 x 是查询向量或本地成本矩阵,y 是参考向量,如果 x 作为本地成本矩阵给出,则为 NULL

我做的是这个,

i<-c(x1$binary)
j<-c(x2$binary)
dtw1 <-dtw(i, j, dist.method="Euclidean", keep.internals = T, step.pattern= symmetric)
plot(dtw1)

但这是不正确的。每一个的图表都不相同,如下所示。矩阵成本为空。它只计算每列的 0,1 的数量。我知道这是不正确的,但我不知道如何获取查询和参考向量来计算 dtw。如何将其应用于此二进制数据? 在此处输入图像描述

标签: rtime-seriesdtw

解决方案


我所做的是,我没有将二进制值分配给 dtw 函数,而是使用了时间。

i<-c(x1$Time)
j<-c(x2$Time)
dtw1 <-dtw(i, j, dist.method="Euclidean", keep.internals = T, step.pattern= asymmetric)
plot(dtw1)

推荐阅读