我正在对R
中的几个时间序列进行聚类分析(不同商店的产品销售)。
我在包CORT(S1,S2)
中使用第一顺序时间相关系数TSclust
,其中S1
和S2
是两个时间序列。
文献(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 :(得分: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)
行。谷歌它,你得到:.Replace()
#############################################################################
################# 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) ))
}
现在,我认为这就是你要找的东西。