Clústers de trayectorias con la distancia de Fréchet

Los viejos del lugar recordarán esto, donde agrupo trayectorias usando k-medias a pelo. El paquete kmlShape usa la distancia de Fréchet para hacer algo parecido: buscar trayectorias geométricamente similares. El código es library(kmlShape) library(tseries) library(zoo) library(XML) library(reshape) library(ggplot2) foo <- function( simbolo, final = Sys.time(), profundidad = 30 * 24 * 3600) { precios <- get.hist.quote( instrument= simbolo, start = final - profundidad, end = final, quote=c("AdjClose"), provider="yahoo", origin="1970-01-01", compression="d", retclass="zoo") colnames(precios) <- simbolo return(precios) } # lista de símbolos del ibex tmp <- readHTMLTable("http://finance.yahoo.com/q/cp?s=%5EIBEX+Components")[[5]] tmp <- as.character(tmp$V1[-(1:6)]) ibex <- do.call(merge, sapply(simbolos, foo, simplify = F)) ibex.scaled <- data.frame(t(scale(ibex))) tmp <- cldsWide(ibex.scaled) res <- kmlShape(tmp, 4, toPlot = "none") tmp <- data.frame( id = rownames(ibex.scaled), cluster = res@clusters, ibex.scaled) tmp <- melt(tmp, id.vars = c("id", "cluster")) tmp$fecha <- as.Date(tmp$variable, "X%Y.%m.%d") ggplot(tmp, aes(x=fecha, y=value, group=id)) + geom_line() + facet_wrap(~cluster) y el resultado, ...

8 de abril de 2016 · Carlos J. Gil Bellosta