Count and format stages transitions.

transitions(
  hypnogram,
  stages = c("AWA", "REM", "N1", "N2", "N3"),
  format = "vector"
)

Arguments

hypnogram

A hypnogram dataframe. Dataframe must contain begin (POSIXt), end (POSIXt) and event (character) columns.

stages

Stages to include in transitions Defaults to c("N1", "N2", "N3", "N4", "REM").

format

Set the return format. 'vector', 'dataframe' or 'heatmap'.

Value

Count of stages transitions in selected format.

References

Swihart BJ, Punjabi NM, Crainiceanu CM. Modeling sleep fragmentation in sleep hypnograms: An instance of fast, scalable discrete-state, discrete-time analyses. Comput Stat Data Anal. 2015 Sep;89:1-11. doi: 10.1016/j.csda.2015.03.001. PMID: 27182097; PMCID: PMC4865264.

Examples

download.file("https://rsleep.org/data/hypnodensity.csv", "hypnodensity.csv")

hypnodensity <- read.csv2("hypnodensity.csv")

unlink("hypnodensity.csv")

events <- hypnogram(hypnodensity)

transitions(events)
#> AWA_AWA AWA_REM  AWA_N1  AWA_N2  AWA_N3 REM_AWA REM_REM  REM_N1  REM_N2  REM_N3 
#>     120       9      44       0       1      26     269      38      48       1 
#>  N1_AWA  N1_REM   N1_N1   N1_N2   N1_N3  N2_AWA  N2_REM   N2_N1   N2_N2   N2_N3 
#>      20      43      35      27       0       6      60       9     391      35 
#>  N3_AWA  N3_REM   N3_N1   N3_N2   N3_N3 
#>       1       1       0      35     252 

transitions(events, format = "dataframe")
#>     AWA REM N1  N2  N3
#> AWA 120   9 44   0   1
#> REM  26 269 38  48   1
#> N1   20  43 35  27   0
#> N2    6  60  9 391  35
#> N3    1   1  0  35 252

transitions(events, format = "heatmap")


events <- data.frame(event = c(
  "AWA","N1","N2","N2", "N3","N3",
  "REM","N2","REM","REM", "N2","REM","AWA"))

events$begin <- as.POSIXlt(seq(from = 0, to = 30*(nrow(events)-1), by = 30),origin = "1970-01-01")

events$end <- as.POSIXlt(seq(from = 30, to = 30*nrow(events), by = 30), origin = "1970-01-01")

transitions(events)
#> AWA_AWA AWA_REM  AWA_N1  AWA_N2  AWA_N3 REM_AWA REM_REM  REM_N1  REM_N2  REM_N3 
#>       0       0       1       0       0       1       1       0       2       0 
#>  N1_AWA  N1_REM   N1_N1   N1_N2   N1_N3  N2_AWA  N2_REM   N2_N1   N2_N2   N2_N3 
#>       0       0       0       1       0       0       2       0       1       1 
#>  N3_AWA  N3_REM   N3_N1   N3_N2   N3_N3 
#>       0       1       0       0       1 

transitions(events, format = "dataframe")
#>     AWA REM N1 N2 N3
#> AWA   0   0  1  0  0
#> REM   1   1  0  2  0
#> N1    0   0  0  1  0
#> N2    0   2  0  1  1
#> N3    0   1  0  0  1

transitions(events, format = "heatmap")