[英]Can Dynamic Time Warping be used on time series with missing values?
如標題中所示,我想知道是否可以使用DTW(動態時間扭曲)來計算具有缺失值的兩個時間序列之間的DTW距離。
假設兩個時間序列是兩個氣象站的日常溫度,並且長度相等(例如365天),並且兩個時間序列的缺失值在不同日期。
如果這是可能的,R中的dtw包是否能夠處理缺失的值? 我沒有找到可以在dtw()中設置的參數,如na.rm = T
非常感謝!
感謝thelatemail提出的建議。 下面是兩個時間序列的簡化示例,其中每個時間序列僅包含52個元素,缺失值設置為NA
。
TS1 = c(-3.26433, -5.09096, NA, -8.4158, -5.85485, -3.49234, -7.64666, -4.90124, NA, -4.68836, -1.38114, 1.55527, 2.81872, 2.44261, 3.57963, 6.19983, 7.42515, 8.41524, 6.32686, 10.0144, 9.53251, 13.4781, 12.3585, 10.6706, 10.2647, 16.6848, 16.4855, 20.1482, NA, 21.5734, 20.3946, 20.8824, 18.0325, 18.5813, 17.5453, 16.3315, 14.3068, 11.3164, 9.96398, 5.53102, 9.55094, 9.05897, 6.81199, 5.20343, 1.63158, -0.661077, -4.33853, -6.53655, NA, -10.8646, 1.11843, 1.23786)
TS2 = c(-5.76852, -10.2207, -11.8465, NA, -1.70019, -3.60319, -5.7718, -3.81106, -5.62284, -3.57516, 0.314511, 0.64058, 0.476162, NA, 4.23757, 5.15417, 7.29422, NA, 1.57376, 9.28236, 8.05182, 13.7175, 9.5453, 10.2417, 9.32423, 18.214, 18.3726, 16.661, 20.6563, 22.2901, 22.1109, 19.129, 15.8615, 16.7817, 17.247, 15.9921, 14.5804, 11.3693, 10.9349, 10.1196, 3.7467, 9.09229, 6.91285, NA, 4.20934, -0.566403, -2.94184, -3.81432, -10.0212, -15.9876, -2.56286, -1.88976)
可能不是,我查看了包裝手冊,沒有關於缺失或NA值的信息。 我還試圖將您的數據提供給dtw()
,但它失敗了:
Error in dtw(TS1, TS2) :
No warping paths exists that is allowed by costraints
但是當我將所有NA值更改為0時,它很容易工作。
因此,如果您的唯一解決方案是此軟件包,您可以在DTW軟件包論壇上發帖 ,或者您可能必須自己處理丟失的數據。 您可以在這里找到一些提示或
使用
*
fSeries
包
的
。 na()
函數
*此套餐已不再提供 。 建議使用timeSeries
包 。
dtw函數的工作原理如下。
#this shows how to register a distance function with proxy
install.packages("proxy")
require("proxy")
DWT.DIST<-function (x,y)
{
a<-na.omit(x)
b<-na.omit(y)
return(dtw(a,b)$normalizedDistance)
}
## create a new entry in the registry with two aliases
pr_DB$set_entry(FUN = DWT.DIST, names = c("DWT.DIST"))
d<-dist(appliances_t, method = "DWT.DIST")
hc<-hclust(d,"ave")
plot(hc)
pr_DB$delete_entry("DWT.DIST")
資料來源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.