R/correlational.h.R

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

correlationalOptions <- if (requireNamespace('jmvcore')) R6::R6Class(
    "correlationalOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            dep = NULL,
            independents = NULL,
            controls = NULL, ...) {

            super$initialize(
                package='Statkat',
                name='correlational',
                requiresData=TRUE,
                ...)

            private$..dep <- jmvcore::OptionVariable$new(
                "dep",
                dep)
            private$..independents <- jmvcore::OptionVariables$new(
                "independents",
                independents)
            private$..controls <- jmvcore::OptionVariables$new(
                "controls",
                controls,
                default=NULL)

            self$.addOption(private$..dep)
            self$.addOption(private$..independents)
            self$.addOption(private$..controls)
        }),
    active = list(
        dep = function() private$..dep$value,
        independents = function() private$..independents$value,
        controls = function() private$..controls$value),
    private = list(
        ..dep = NA,
        ..independents = NA,
        ..controls = NA)
)

correlationalResults <- if (requireNamespace('jmvcore')) R6::R6Class(
    inherit = jmvcore::Group,
    active = list(
        advice = function() private$.items[["advice"]],
        plotsIndependents = function() private$.items[["plotsIndependents"]],
        plotsControls = function() private$.items[["plotsControls"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="Relationships, Prediction, and Group Comparisons")
            self$add(jmvcore::Html$new(
                options=options,
                name="advice",
                title="Advice",
                visible="(text)"))
            self$add(jmvcore::Array$new(
                options=options,
                name="plotsIndependents",
                title="Scatter Plots of Bivariate Relationships - Dependent/Independent Variables",
                items="(independents)",
                template=jmvcore::Image$new(
                    options=options,
                    requiresData=TRUE,
                    width=400,
                    height=300,
                    renderFun=".plot")))
            self$add(jmvcore::Array$new(
                options=options,
                name="plotsControls",
                title="Scatter Plots of Bivariate Relationships - Dependent/Control Variables",
                items="(controls)",
                template=jmvcore::Image$new(
                    options=options,
                    requiresData=TRUE,
                    width=400,
                    height=300,
                    renderFun=".plot")))}))

correlationalBase <- if (requireNamespace('jmvcore')) R6::R6Class(
    "correlationalBase",
    inherit = jmvcore::Analysis,
    public = list(
        initialize = function(options, data=NULL, datasetId="", analysisId="", revision=0) {
            super$initialize(
                package = 'Statkat',
                name = 'correlational',
                version = c(1,0,0),
                options = options,
                results = correlationalResults$new(options=options),
                data = data,
                datasetId = datasetId,
                analysisId = analysisId,
                revision = revision,
                pause = NULL,
                completeWhenFilled = TRUE)
        }))

#' Relationships, Prediction, and Group Comparisons
#'
#' Provides a recommended statistical method given the measurement level of 
#' your data. Appropriate when the interest is in the relationship between 
#' variables.
#'
#' @examples
#' exampleData <- data.frame(x1 = rnorm(20),
#'                           x2 = as.factor(c(rep(1, 10), rep(2, 10))),
#'                           x3 = as.ordered(c(rep(1, 5), rep(2, 5), rep(3, 10))),
#'                           x4 = rnorm(20),
#'                           x5 = rnorm(20))
#'
#' correlational(exampleData, dep = 'x3', independents = 'x2')
#' correlational(exampleData, dep = 'x1', independents = c('x2', 'x3'), controls = c('x4', 'x5'))
#'
#' @param data the data as a data frame, with variables encoded as numeric
#'   (for interval/ratio variables), ordered (for ordinal variables), or factor
#'   (for nominal variables)
#' @param dep a string naming variable 1 / the dependent variable from
#'   \code{data}
#' @param independents a string or vector of strings naming variable 2 / the
#'   independent variable(s) from \code{data}
#' @param controls a string or vector of strings naming the control
#'   variable(s) from \code{data}
#' @return A results object containing:
#' \tabular{llllll}{
#'   \code{results$advice} \tab \tab \tab \tab \tab the method recommendation \cr
#'   \code{results$plotsIndependents} \tab \tab \tab \tab \tab scatter plots of the dependent variable and the independent variables \cr
#'   \code{results$plotsControls} \tab \tab \tab \tab \tab scatter plots of the dependent variable and the control variables \cr
#' }
#'
#' @export
correlational <- function(
    data,
    dep,
    independents,
    controls = NULL) {

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

    options <- correlationalOptions$new(
        dep = dep,
        independents = independents,
        controls = controls)

    results <- correlationalResults$new(
        options = options)

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

    analysis$run()

    analysis$results
}
rivkamdevries/Statkat documentation built on May 24, 2019, 2:02 a.m.