R/gcat.stat.R

Defines functions gcat.stat

Documented in gcat.stat

#' @describeIn gcat returns the association statistics instead of the 
#' p-value.
#' @examples
#' gcat_stat <- gcat.stat(sim_geno, LF, sim_trait)
#' @export
gcat.stat <- function(X, LF, trait, adjustment = NULL) {
    if (missing(X))
        stop("Genotype matrix `X` is required!")
    if (missing(LF))
        stop("`LF` matrix is required!")
    if (missing(trait))
        stop("`trait` is required!")
    # check class, get dimensions
    if (methods::is(X, "BEDMatrix")) {
        n <- nrow(X)
    } else if (is.matrix(X)) {
        n <- ncol(X)
    } else stop("`X` must be a matrix!")
    # check dimensions
    if (nrow(LF) != n)
        stop("Number of individuals in `X` and `LF` disagree!")
    if (length(trait) != n)
        stop("Number of individuals in `X` and `trait` disagree!")
    # check trait and LF for missing values
    if (anyNA(trait))
        stop("`trait` must not have missing values!")
    if (anyNA(LF))
        stop("`LF` must not have missing values!")
    # check adjustment var
    if (!is.null(adjustment)) {
        if (!is.matrix(adjustment))
            stop("`adjustment` must be matrix!")
        if (nrow(adjustment) != n)
            stop("Number of individuals in `X` and `adjustment` disagree!")
        # if all good, add adjustments to LFs
        LF <- cbind(LF, adjustment)
    }
    # bind matrices
    LF1 <- cbind(LF, trait)
    # this performs the calculations in a broader setting (shared with
    # `jackstraw` package)
    devdiff <- delta_deviance_lf(X, LF, LF1)
    return(devdiff)
}
StoreyLab/gcatest documentation built on March 7, 2024, 9:59 p.m.