## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE, comment = "#>", fig.width = 7, fig.height = 5
)
set.seed(1234)

## ----packages-----------------------------------------------------------------
library(stream)
library(rEMM)

## ----data---------------------------------------------------------------------
data("EMMsim")
dsd <- DSD_Memory(EMMsim_train)
dsd

## ----model--------------------------------------------------------------------
dsc <- DSC_DBSTREAM(r = 0.1, lambda = 0)
tr <- TRACDS()

## ----update-models------------------------------------------------------------
batch_size <- 50L
for (i in seq_len(ceiling(nrow(EMMsim_train) / batch_size))) {
  points <- get_points(dsd, n = batch_size)
  assignment <- update(dsc, points, return = "assignment")
  update(tr, as.character(assignment$.mc_id))
}
head(assignment)

## ----model-summary------------------------------------------------------------
c(states = nstates(tr), transitions = ntransitions(tr))
current_state(tr)

edges <- transitions(tr)
head(cbind(as.data.frame(edges),
  counts = transition(tr, edges, type = "counts", prior = FALSE)))

## ----transition-counts--------------------------------------------------------
counts <- transition_matrix(tr, type = "counts", prior = FALSE)
sum(counts)

## ----temporal-graph-----------------------------------------------------------
plot(tr, vertex.size = 16, vertex.label.cex = 0.8,
  edge.arrow.size = 0.3, main = "Transitions between DBSTREAM micro-clusters")

## ----predict-state------------------------------------------------------------
next_state <- predict(tr, n = 1, probabilities = TRUE)
head(sort(next_state, decreasing = TRUE))

## ----reset-sequence-----------------------------------------------------------
reset(tr)
current_state(tr)

