2017-09-26 11 views
0

SAXを使用して多数の時系列プロットを表現しようとしています。私はRでjmotifパッケージを使用しています。jmotifパッケージを使用したRのSAX時系列表現

#Create an example dataframe 
example1 <- data.frame(flow=c(1.1,2.2,3.3,4.4,5.5,6.6), 
        weight1=c(7.1,7.2,7.3,7.4,7.5,7.6), 
        weight2=c(8.1,8.2,8.3,8.4,8.5,8.6)) 
# Create a timeseries object 
examplets1 <- ts(example1, start = 1, end = 6) 

#Analysis 
library(jmotif) 
#Normalise the data using Znorm 
examplezn <- znorm(examplets1, threshold = 0.01) 
#Perform piecewise aggregate approximation 
examplepaa <- paa(examplezn, 3) 
#Represent time series as SAX 
sax_via_window(examplepaa, 3, 3, 10, "mindist", 0.1) 

#This produces the result 
> sax_via_window(examplepaa, 3, 3, 10, "mindist", 0.1) 
$`0` 
[1] "bgh" 

これらの結果を解釈する際に問題があります。私が期待するのは、私が各列に関連付けることができる象徴的な表現です。フロー:acc、weight1:bghなど。実際のdatsetには約100列のtsデータがあります。

私はこの方法を間違って適用していますか?

は、すべてのヘルプは大ここでの問題は、私はない「ベクトル化」jmotifたことがあるので、

答えて

0

を高く評価しているつまり、いないデータフレームへの入力時系列を表し、数字の順序付けられたシーケンスにのみ適用その機能、オブジェクトまたはtimeseriesオブジェクトです。可愛いですが、私はそれを簡単に保ちたいと思っていました。

私はそれが役に立てば幸い、タスクを実行するようにコードビットを変更しました:

library(jmotif) 

# create an example dataframe, list works the best cause library is not "vectorized" 
example1 <- list(flow = c(1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9), 
      weight1 = c(7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 8.8, 9.9), 
      weight2 = c(8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7, 8.8, 8.9)) 

# this library makes working with not-vectorized code easier 
library(plyr) 

# z-normalize 
examplezn <- llply(example1, function(x){znorm(x, threshold = 0.01)}) 

# perform piecewise aggregate approximation, probably not needed for following up with SAX transform, so just for illustration ... 
llply(examplezn, function(x){paa(x, 3)}) 

# represent time series as SAX strings using via window SAX transform 
example_sax <- llply(example1, function(x){sax_via_window(x, 3, 2, 3, "none", 0.1)}) 

# convert the result to a data frame, by rows though 
df_by_row <- ldply(example_sax, unlist) 

# and finally obtain a column-oriented data frame 
df_by_column <- as.data.frame(t(df_by_row)) 
関連する問題