R/MatricesDescriptives.R

Defines functions MatricesDescriptives

Documented in MatricesDescriptives

#' Descriptive statistics of a list of invariance matrices
#'
#' \code{MatricesDescriptives} calculates descrptive statistics for each
#' invariance matrix in a list and returns them in a data frame. 
#'
#' This function computes the minimum, maximum, mean, standard deviation, 
#' median, median absolute deviation (scaled by 1.4826), skew, kurtosis, and 
#' acheivement rate. Achievement rate is the proportion of changes in CFI that
#' are less than .01. 
#'
#' @param matrix.list A list of invariance matrices from 
#' \code{\link{InvarianceMatrices}}
#' @return This function returns a data frame with each row describing a 
#' different matrix in the list and a column for each descriptive statistic. 
#'
#' @export
MatricesDescriptives <- function(matrix.list) {
  # creating empty matrix to hold results
  descriptive.matrix <- matrix(nrow = length(matrix.list), ncol = 9)
  rownames(descriptive.matrix) <- names(matrix.list)
  colnames(descriptive.matrix) <- c("minimum", 
                                    "maximum",
                                    "mean",
                                    "standard.deviation",
                                    "median",
                                    "median.absolute.deviation",
                                    "skew",
                                    "kurtosis",
                                    "achievement.rate")
  # filling in descriptive matrix
  for(matrix.number in 1:length(matrix.list)){
    # subsetting matrices to only include lower triangle
    # so that don't count every delta CFI twice
    lower.matrix = matrix.list[[matrix.number]]
    lower.matrix = lower.matrix[lower.tri(lower.matrix)]
    descriptive.matrix[matrix.number, "minimum"] <- 
      min(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "maximum"] <- 
      max(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "mean"] <- 
      mean(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "standard.deviation"] <- 
      stats::sd(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "median"] <- 
      stats::median(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "median.absolute.deviation"] <- 
      stats::mad(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "skew"] <- 
      psych::skew(lower.matrix, na.rm = T)
    descriptive.matrix[matrix.number, "kurtosis"] <- 
      psych::kurtosi(lower.matrix, na.rm = T)
    lower.matrix[lower.matrix < .01] <- 1
    lower.matrix[lower.matrix > .01 & lower.matrix != 1] <- 0
    descriptive.matrix[matrix.number, "achievement.rate"] <- 
      mean(lower.matrix, na.rm = T)
  }
  return(descriptive.matrix)
}
sethmargolis/PairMeasInv documentation built on May 23, 2019, 1:48 p.m.