R/kurtosis.R

Defines functions skewness kurtosis

Documented in kurtosis skewness

#' Kurtosis
#'
#' Calculates kurtosis coefficient for given variable (see \code{\link{is.variable}}), \code{matrix} or a \code{data.frame}.
#' @param x a \code{variable}, \code{matrix} or a \code{data.frame}
#' @param na.rm should \code{NA}s be removed before computation?
#' @references Tenjovic, L. (2000). Statistika u psihologiji - prirucnik. Centar za primenjenu psihologiju.
#' @examples
#' set.seed(0)
#' x <- rnorm(100)
#' kurtosis(x)
#' kurtosis(matrix(x, 10))
#' kurtosis(mtcars)
#' rm(x)
#' @export
#' @importFrom stats na.omit
kurtosis <- function(x, na.rm = TRUE){

    if (is.variable(x)){

        if (na.rm)
            x <- na.omit(x)

        m <- base::mean(x)
        s <- stats::sd(x)
        n <- length(x)
        (((base::sum((x - m) ^ 4) / n) / s ^ 4) - 3)
    } else {

        if (is.matrix(x))
            apply(x, 2, kurtosis, na.rm = na.rm)
        else if (is.data.frame(x))
            sapply(x, kurtosis, na.rm = na.rm)
        else
            stop('unsupported type')
    }
}


#' Skewness
#'
#' Calculates skewness coefficient for given variable (see \code{\link{is.variable}}), \code{matrix} or a \code{data.frame}.
#' @param x a \code{variable}, \code{matrix} or a \code{data.frame}
#' @param na.rm should \code{NA}s be removed before computation?
#' @references Tenjovic, L. (2000). Statistika u psihologiji - prirucnik. Centar za primenjenu psihologiju.
#' @examples
#' set.seed(0)
#' x <- rnorm(100)
#' skewness(x)
#' skewness(matrix(x, 10))
#' skewness(mtcars)
#' rm(x)
#' @export
skewness <- function(x, na.rm = TRUE){

    if (is.variable(x)){

        if (na.rm)
            x <- na.omit(x)

        m <- base::mean(x)
        s <- stats::sd(x)
        n <- length(x)
        (base::sum((x - m) ^ 3) / n) / s ^ 3

    } else {

        if (is.matrix(x))
            apply(x, 2, skewness, na.rm = na.rm)
        else if (is.data.frame(x))
            sapply(x, skewness, na.rm = na.rm)
        else
            stop('unsupported type')
    }
}
Rapporter/rapportools documentation built on March 23, 2022, 2:23 a.m.