Nothing
## ---- fig.height=3.5, fig.width=7---------------------------------------------
library(TSrepr)
library(ggplot2)
library(data.table)
data_ts <- as.numeric(elec_load[1,])
length(data_ts)
data_ts_sums <- repr_paa(data_ts, q = 2, func = sum)
length(data_ts_sums)
ggplot(data.table(Time = 1:length(data_ts_sums),
Value = data_ts_sums),
aes(Time, Value)) +
geom_line() +
theme_bw()
## ---- fig.height=3.2, fig.width=6---------------------------------------------
library(moments)
data_ts_skew <- repr_paa(data_ts, q = 48, func = skewness)
ggplot(data.table(Time = 1:length(data_ts_skew),
Value = data_ts_skew),
aes(Time, Value)) +
geom_line() +
theme_bw()
## -----------------------------------------------------------------------------
repr_fea_extract <- function(x) {
return(c(mean(x), median(x), max(x), min(x), sd(x)))
}
## ---- fig.height=3.5, fig.width=7---------------------------------------------
data_fea <- repr_windowing(data_ts, win_size = 48, func = repr_fea_extract)
ggplot(data.table(Time = 1:length(data_fea),
Value = data_fea),
aes(Time, Value)) +
geom_line() +
theme_bw()
## -----------------------------------------------------------------------------
norm_max <- function(x) {
return(x/max(x))
}
## -----------------------------------------------------------------------------
data_mat <- repr_matrix(elec_load,
func = repr_fea_extract,
windowing = T,
win_size = 48,
normalise = T,
func_norm = norm_max)
set.seed(123)
clus_res <- kmeans(data_mat, centers = 5, nstart = 10)
## ---- warning=F, message=F, fig.height=5, fig.width=6-------------------------
# prepare data for plotting
data_plot <- melt(data.table(ID = 1:nrow(data_mat),
class = clus_res$cluster,
data_mat),
id.vars = c("ID", "class"),
variable.name = "Time",
variable.factor = FALSE
)
data_plot[, Time := as.integer(gsub("V", "", Time))]
# prepare centroids
centers <- melt(data.table(ID = 1:nrow(clus_res$centers),
class = 1:nrow(clus_res$centers),
clus_res$centers),
id.vars = c("ID", "class"),
variable.name = "Time",
variable.factor = FALSE
)
centers[, Time := as.integer(gsub("V", "", Time))]
# plot the results
ggplot(data_plot,
aes(Time, value, group = ID)) +
facet_wrap(~class, ncol = 2, scales = "free_y") +
geom_line(color = "grey10", alpha = 0.65) +
geom_line(data = centers,
aes(Time, value),
color = "firebrick1", alpha = 0.80, size = 1.2) +
labs(x = "Time", y = "Load (normalised)") +
theme_bw()
## -----------------------------------------------------------------------------
table(clus_res$cluster)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.