R/correlation.h.R

Defines functions correlation

# This file is automatically generated, you probably don't want to edit this

correlationOptions <- if (requireNamespace('jmvcore')) R6::R6Class(
    "correlationOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            corrvars = NULL,
            ctrlvars = NULL,
            personCoef = TRUE,
            spearmanCoef = FALSE,
            TetrachoricCoef = FALSE,
            partialCoef = FALSE,
            PolychoricCoef = FALSE,
            BiserialCoef = FALSE,
            sidSig = "twotailed",
            GaussianPlot = FALSE,
            shwSig = TRUE,
            flgSig = TRUE, ...) {

            super$initialize(
                package='Correlations',
                name='correlation',
                requiresData=TRUE,
                ...)

            private$..corrvars <- jmvcore::OptionVariables$new(
                "corrvars",
                corrvars,
                suggested=list(
                    "nominal",
                    "continuous"),
                permitted=list(
                    "numeric"))
            private$..ctrlvars <- jmvcore::OptionVariables$new(
                "ctrlvars",
                ctrlvars,
                suggested=list(
                    "continuous"),
                permitted=list(
                    "numeric"))
            private$..personCoef <- jmvcore::OptionBool$new(
                "personCoef",
                personCoef,
                default=TRUE)
            private$..spearmanCoef <- jmvcore::OptionBool$new(
                "spearmanCoef",
                spearmanCoef,
                default=FALSE)
            private$..TetrachoricCoef <- jmvcore::OptionBool$new(
                "TetrachoricCoef",
                TetrachoricCoef,
                default=FALSE)
            private$..partialCoef <- jmvcore::OptionBool$new(
                "partialCoef",
                partialCoef,
                default=FALSE)
            private$..PolychoricCoef <- jmvcore::OptionBool$new(
                "PolychoricCoef",
                PolychoricCoef,
                default=FALSE)
            private$..BiserialCoef <- jmvcore::OptionBool$new(
                "BiserialCoef",
                BiserialCoef,
                default=FALSE)
            private$..sidSig <- jmvcore::OptionList$new(
                "sidSig",
                sidSig,
                options=list(
                    "onetailed",
                    "twotailed"),
                default="twotailed")
            private$..GaussianPlot <- jmvcore::OptionBool$new(
                "GaussianPlot",
                GaussianPlot,
                default=FALSE)
            private$..shwSig <- jmvcore::OptionBool$new(
                "shwSig",
                shwSig,
                default=TRUE)
            private$..flgSig <- jmvcore::OptionBool$new(
                "flgSig",
                flgSig,
                default=TRUE)

            self$.addOption(private$..corrvars)
            self$.addOption(private$..ctrlvars)
            self$.addOption(private$..personCoef)
            self$.addOption(private$..spearmanCoef)
            self$.addOption(private$..TetrachoricCoef)
            self$.addOption(private$..partialCoef)
            self$.addOption(private$..PolychoricCoef)
            self$.addOption(private$..BiserialCoef)
            self$.addOption(private$..sidSig)
            self$.addOption(private$..GaussianPlot)
            self$.addOption(private$..shwSig)
            self$.addOption(private$..flgSig)
        }),
    active = list(
        corrvars = function() private$..corrvars$value,
        ctrlvars = function() private$..ctrlvars$value,
        personCoef = function() private$..personCoef$value,
        spearmanCoef = function() private$..spearmanCoef$value,
        TetrachoricCoef = function() private$..TetrachoricCoef$value,
        partialCoef = function() private$..partialCoef$value,
        PolychoricCoef = function() private$..PolychoricCoef$value,
        BiserialCoef = function() private$..BiserialCoef$value,
        sidSig = function() private$..sidSig$value,
        GaussianPlot = function() private$..GaussianPlot$value,
        shwSig = function() private$..shwSig$value,
        flgSig = function() private$..flgSig$value),
    private = list(
        ..corrvars = NA,
        ..ctrlvars = NA,
        ..personCoef = NA,
        ..spearmanCoef = NA,
        ..TetrachoricCoef = NA,
        ..partialCoef = NA,
        ..PolychoricCoef = NA,
        ..BiserialCoef = NA,
        ..sidSig = NA,
        ..GaussianPlot = NA,
        ..shwSig = NA,
        ..flgSig = NA)
)

correlationResults <- if (requireNamespace('jmvcore')) R6::R6Class(
    inherit = jmvcore::Group,
    active = list(
        instructions = function() private$.items[["instructions"]],
        text1 = function() private$.items[["text1"]],
        pearsontable = function() private$.items[["pearsontable"]],
        spearmantable = function() private$.items[["spearmantable"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="Correlation")
            self$add(jmvcore::Html$new(
                options=options,
                name="instructions",
                title="Instructions",
                visible=TRUE))
            self$add(jmvcore::Preformatted$new(
                options=options,
                name="text1",
                title="Pearson Correlation"))
            self$add(jmvcore::Table$new(
                options=options,
                name="pearsontable",
                title="Pearson Correlation",
                visible=TRUE,
                rows=1,
                columns=list(
                    list(
                        `name`="var1", 
                        `title`="Parameter1", 
                        `type`="text"),
                    list(
                        `name`="var2", 
                        `title`="Parameter2", 
                        `type`="text"),
                    list(
                        `name`="r", 
                        `title`="r", 
                        `type`="number"),
                    list(
                        `name`="ci.low", 
                        `title`="Lower", 
                        `type`="number"),
                    list(
                        `name`="ci.high", 
                        `title`="Upper", 
                        `type`="number"),
                    list(
                        `name`="t", 
                        `title`="t", 
                        `type`="number"),
                    list(
                        `name`="df", 
                        `title`="df", 
                        `type`="number"),
                    list(
                        `name`="p", 
                        `title`="p", 
                        `type`="number", 
                        `format`="zto,pvalue"),
                    list(
                        `name`="n", 
                        `title`="N", 
                        `type`="number"))))
            self$add(jmvcore::Table$new(
                options=options,
                name="spearmantable",
                title="Result Table",
                visible=TRUE,
                rows=1,
                columns=list(
                    list(
                        `name`="var", 
                        `title`="", 
                        `type`="text"),
                    list(
                        `name`="r", 
                        `title`="Spearman r", 
                        `type`="number"),
                    list(
                        `name`="ci.low", 
                        `title`="Lower", 
                        `type`="number"),
                    list(
                        `name`="ci.high", 
                        `title`="Upper", 
                        `type`="number"),
                    list(
                        `name`="t", 
                        `title`="t", 
                        `type`="number"),
                    list(
                        `name`="df", 
                        `title`="df", 
                        `type`="number"),
                    list(
                        `name`="p", 
                        `title`="p", 
                        `type`="number", 
                        `format`="zto,pvalue"),
                    list(
                        `name`="n", 
                        `title`="N", 
                        `type`="Integer"))))}))

correlationBase <- if (requireNamespace('jmvcore')) R6::R6Class(
    "correlationBase",
    inherit = jmvcore::Analysis,
    public = list(
        initialize = function(options, data=NULL, datasetId="", analysisId="", revision=0) {
            super$initialize(
                package = 'Correlations',
                name = 'correlation',
                version = c(1,0,0),
                options = options,
                results = correlationResults$new(options=options),
                data = data,
                datasetId = datasetId,
                analysisId = analysisId,
                revision = revision,
                pause = NULL,
                completeWhenFilled = FALSE,
                requiresMissings = FALSE)
        }))

#' Correlation
#'
#' 
#' @param data The data as a data frame.
#' @param corrvars .
#' @param ctrlvars .
#' @param personCoef \code{TRUE} (default) or \code{FALSE}, provide Pearson
#' @param spearmanCoef \code{TRUE} (default) or \code{FALSE}, provide Spearman
#' @param TetrachoricCoef \code{TRUE} (default) or \code{FALSE}, provide
#'   Tetrachoric
#' @param partialCoef \code{TRUE} (default) or \code{FALSE}, provide Partial
#' @param PolychoricCoef \code{TRUE} (default) or \code{FALSE}, provide
#'   Polychoric
#' @param BiserialCoef \code{TRUE} (default) or \code{FALSE}, provide Biserial
#' @param sidSig .
#' @param GaussianPlot \code{TRUE} (default) or \code{FALSE}, provide
#'   correlation plot
#' @param shwSig .
#' @param flgSig .
#' @return A results object containing:
#' \tabular{llllll}{
#'   \code{results$instructions} \tab \tab \tab \tab \tab a html \cr
#'   \code{results$text1} \tab \tab \tab \tab \tab a preformatted \cr
#'   \code{results$pearsontable} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$spearmantable} \tab \tab \tab \tab \tab a table \cr
#' }
#'
#' Tables can be converted to data frames with \code{asDF} or \code{\link{as.data.frame}}. For example:
#'
#' \code{results$pearsontable$asDF}
#'
#' \code{as.data.frame(results$pearsontable)}
#'
#' @export
correlation <- function(
    data,
    corrvars,
    ctrlvars,
    personCoef = TRUE,
    spearmanCoef = FALSE,
    TetrachoricCoef = FALSE,
    partialCoef = FALSE,
    PolychoricCoef = FALSE,
    BiserialCoef = FALSE,
    sidSig = "twotailed",
    GaussianPlot = FALSE,
    shwSig = TRUE,
    flgSig = TRUE) {

    if ( ! requireNamespace('jmvcore'))
        stop('correlation requires jmvcore to be installed (restart may be required)')

    if ( ! missing(corrvars)) corrvars <- jmvcore::resolveQuo(jmvcore::enquo(corrvars))
    if ( ! missing(ctrlvars)) ctrlvars <- jmvcore::resolveQuo(jmvcore::enquo(ctrlvars))
    if (missing(data))
        data <- jmvcore::marshalData(
            parent.frame(),
            `if`( ! missing(corrvars), corrvars, NULL),
            `if`( ! missing(ctrlvars), ctrlvars, NULL))


    options <- correlationOptions$new(
        corrvars = corrvars,
        ctrlvars = ctrlvars,
        personCoef = personCoef,
        spearmanCoef = spearmanCoef,
        TetrachoricCoef = TetrachoricCoef,
        partialCoef = partialCoef,
        PolychoricCoef = PolychoricCoef,
        BiserialCoef = BiserialCoef,
        sidSig = sidSig,
        GaussianPlot = GaussianPlot,
        shwSig = shwSig,
        flgSig = flgSig)

    analysis <- correlationClass$new(
        options = options,
        data = data)

    analysis$run()

    analysis$results
}
hyunsooseol/Correlations documentation built on June 6, 2020, 2:27 a.m.