2016-04-21 149 views
0

我正在對R(某個產品在不同商店的銷售量)的多個時間序列進行聚類分析。當在R中聚類時間序列時,諮詢一階時間相關係數CORT的值

我使用的一階時間相關性係數CORT(S1,S2),在包TSclust,其中S1S2是兩個時間序列。

的literaure(https://cran.r-project.org/web/packages/TSclust/TSclust.pdf)解釋了CORT屬於interval [-1,1]:當CORT(S1,S2)=1兩個系列顯示出類似的動態行爲,而當CORT(S1,S2)=-1它們具有相反的行爲。

我想知道如何查看CORT的結果,以便觀察每對時間序列的CORT的值。

我們可以看到下一個例子TSclust包:

## Create three sample time series 
x <- cumsum(rnorm(100)) 
y <- cumsum(rnorm(100)) 
z <- sin(seq(0, pi, length.out=100)) 

## Compute the distance and check for coherent results 
diss.CORT(x, y, 2) 
diss.CORT(x, z, 2) 
diss.CORT(y, z, 2) 

因此,與上述代碼中,我們使用係數CORT(S1,S2)可以計算德相異指數,但我們不能諮詢CORT係數的值。

那麼,沒有人如何看到CORT係數的值在R

在此先感謝。

回答

0

我不知道這是否是你想要的,但任何如何,這是我做過什麼:

View(diss.CORT) 

其中R表示:

function (x, y, k = 2, deltamethod = "Euclid") 

{ 
    .ts.sanity.check(x, y) 
    .check.equal.length.ts(x, y) 
    corrt <- corrtemporder1(x, y) 
    type <- (pmatch(deltamethod, c("Euclid", "Frechet", "DTW"))) 
    typedist <- 0 
    if (is.na(type)) { 
    stop(paste("Unknown method", deltamethod)) 
    } 
    else if (type == 1) { 
    typedist <- as.numeric(dist(rbind(x, y))) 
    } 
    else if (type == 2) { 
    typedist <- diss.FRECHET(x, y) 
    } 
    else if (type == 3) { 
    typedist <- dtw(x, y, dist.method = "Manhattan", distance.only = T)$distance 
    } 
    (2/(1 + exp(k * corrt))) * typedist 
} 

現在,如果你去通過,並開始閱讀腳本似乎你正在尋找行corrt <- corrtemporder1(x, y)。谷歌它,你會得到:https://github.com/cran/TSclust/blob/master/R/diss.R

############################################################################# 
################# Temporal Correlation Distance ######################### 
############################################################################# 

##CHOUAKRIA-DOUZAL 

corrtemporder1 <- function (x, y) { 
    p <- length(x) 
    sum((x[2:p] - x[1:(p-1)]) * (y[2:p] - y[1:(p-1)]))/(sqrt(sum((x[2:p] - x[1:(p-1)])^2)) * sqrt(sum((y[2:p] - y[1:(p-1)])^2))) 
} 

現在,我認爲這是你在找什麼。

+0

非常感謝你,這就是我一直在尋找的!現在,我想做30個時間序列,我想繪製'CORT'矩陣,就像我們使用'corrplot'命令一樣。你知道有沒有辦法用'CORT'來做? –

+0

@AnaA你可以請投票答案? – user2007598

+0

我已經做到了,但是我得到的消息是:「感謝您的反饋!一旦您獲得了15個聲望,您的選票將改變公開顯示的帖子得分」 –