R/buildTransArray.R

Defines functions buildTransArray

Documented in buildTransArray

#' Builds a transition array between raw time series data
#'
#'
#'
#' @param x A data set of binary time series to be included in a transition matrix.
#' @param W A hyperparameter denoting the number of observations to include in a single transition matrix.
#' @return An object of class "transArray". An array of transition matrices with the following dimensions:
#' * dimension 1: participant
#' * dimension 2: first time series
#' * dimension 3: second time series
#' * dimension 4: transition matrix
#' @import utils
#' @examples
#' #load in example data
#' data(exampleTransitionData)
#'
#' #calculate transition array for example data with a window size of 5
#' myArray <- buildTransArray(x=exampleTransitionData, W=5)
#'
#' @export

buildTransArray <- function(x,W=5){
  myDataMatrix <- x[,-1]
  N <- length(unique(x[,1]))
  IDs <- unique(x[,1])
  numVars<- ncol(myDataMatrix)
  numObs <- nrow(myDataMatrix)/N
  vars <- paste("x_",1:numVars,sep="")
  myDataArray <- array(NA, dim=c(N, numObs,numVars), dimnames=list(IDs, paste("Obs", 1:numObs, sep=""),vars))
  myTransArray <- array(NA, dim=c(N, numVars, numVars, (numObs-W+1)),
                        dimnames=list(IDs, paste("to", vars, sep = "_"), paste("from", vars, sep = "_"),
                                     paste("Window", 1:(numObs-W+1), sep="")))
 colnames(myDataMatrix) <- vars
 pb <- utils::txtProgressBar(min = 0, max = N, style = 3)
  for(i in 1:N){
    myDataArray[i,,] <- as.matrix(myDataMatrix[which(x[,1]==IDs[i]),])
    for(j in 1:numVars){
      for(k in 1:numVars){
        for(l in 1:(numObs-W+1)){
          myTransArray[i,j,k,l] <- countTrans(myDataArray[i,l:(l+W-1),k], myDataArray[i,l:(l+W-1),j])
        }
      }
    }
    utils::setTxtProgressBar(pb, i)
  }
 close(pb)
  class(myTransArray) <- "transArray"
  return(myTransArray)
}

#Copyright (c) 2020, Katharine Daniel
KatharineDaniel/transitionMetrics documentation built on Jan. 7, 2021, 7:30 p.m.