R/glmbasic.h.R

Defines functions glmbasic

Documented in glmbasic

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

glmbasicOptions <- if (requireNamespace('jmvcore')) R6::R6Class(
    "glmbasicOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            out = NULL,
            preds = NULL,
            graphic = TRUE,
            graphicassump = FALSE,
            estimates = TRUE,
            se = TRUE,
            line = "Loess",
            center = "Median + quartiles", ...) {

            super$initialize(
                package='flexplot',
                name='glmbasic',
                requiresData=TRUE,
                ...)

            private$..out <- jmvcore::OptionVariable$new(
                "out",
                out)
            private$..preds <- jmvcore::OptionVariables$new(
                "preds",
                preds)
            private$..graphic <- jmvcore::OptionBool$new(
                "graphic",
                graphic,
                default=TRUE)
            private$..graphicassump <- jmvcore::OptionBool$new(
                "graphicassump",
                graphicassump,
                default=FALSE)
            private$..estimates <- jmvcore::OptionBool$new(
                "estimates",
                estimates,
                default=TRUE)
            private$..se <- jmvcore::OptionBool$new(
                "se",
                se,
                default=TRUE)
            private$..line <- jmvcore::OptionList$new(
                "line",
                line,
                options=list(
                    "Loess",
                    "Regression",
                    "Logistic"),
                default="Loess")
            private$..center <- jmvcore::OptionList$new(
                "center",
                center,
                options=list(
                    "Median + quartiles",
                    "Mean + sterr",
                    "Mean + stdev"),
                default="Median + quartiles")

            self$.addOption(private$..out)
            self$.addOption(private$..preds)
            self$.addOption(private$..graphic)
            self$.addOption(private$..graphicassump)
            self$.addOption(private$..estimates)
            self$.addOption(private$..se)
            self$.addOption(private$..line)
            self$.addOption(private$..center)
        }),
    active = list(
        out = function() private$..out$value,
        preds = function() private$..preds$value,
        graphic = function() private$..graphic$value,
        graphicassump = function() private$..graphicassump$value,
        estimates = function() private$..estimates$value,
        se = function() private$..se$value,
        line = function() private$..line$value,
        center = function() private$..center$value),
    private = list(
        ..out = NA,
        ..preds = NA,
        ..graphic = NA,
        ..graphicassump = NA,
        ..estimates = NA,
        ..se = NA,
        ..line = NA,
        ..center = NA)
)

glmbasicResults <- if (requireNamespace('jmvcore')) R6::R6Class(
    inherit = jmvcore::Group,
    active = list(
        assumpplot = function() private$.items[["assumpplot"]],
        plot = function() private$.items[["plot"]],
        glmcat = function() private$.items[["glmcat"]],
        diff = function() private$.items[["diff"]],
        rsq = function() private$.items[["rsq"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="General Linear Model")
            self$add(jmvcore::Image$new(
                options=options,
                name="assumpplot",
                title="Residual (diagnostic) plots",
                width=600,
                height=400,
                renderFun=".assumpplot",
                visible="(graphicassump)"))
            self$add(jmvcore::Image$new(
                options=options,
                name="plot",
                title="Analysis plot",
                width=600,
                height=400,
                renderFun=".plot",
                visible="(graphic)"))
            self$add(jmvcore::Table$new(
                options=options,
                name="glmcat",
                title="Estimates and effect sizes for categorical predictors",
                columns=list(
                    list(
                        `name`="var", 
                        `title`="Variable", 
                        `type`="text"),
                    list(
                        `name`="levels", 
                        `title`="Level", 
                        `type`="text"),
                    list(
                        `name`="means", 
                        `title`="Estimate", 
                        `type`="number"),
                    list(
                        `name`="lower", 
                        `title`="Lower", 
                        `superTitle`="95% Confidence Interval", 
                        `type`="number"),
                    list(
                        `name`="upper", 
                        `title`="Upper", 
                        `superTitle`="95% Confidence Interval", 
                        `type`="number")),
                visible="(estimates)"))
            self$add(jmvcore::Table$new(
                options=options,
                name="diff",
                title="Difference between factor levels for categorical predictors",
                columns=list(
                    list(
                        `name`="variables", 
                        `title`="Variable", 
                        `type`="text"),
                    list(
                        `name`="comparison", 
                        `title`="Comparison", 
                        `type`="text"),
                    list(
                        `name`="diff", 
                        `title`="Difference", 
                        `type`="number"),
                    list(
                        `name`="lower", 
                        `title`="Lower", 
                        `superTitle`="95% Confidence Interval", 
                        `type`="number"),
                    list(
                        `name`="upper", 
                        `title`="Upper", 
                        `superTitle`="95% Confidence Interval", 
                        `type`="number"),
                    list(
                        `name`="cohensd", 
                        `title`="Cohen's d", 
                        `type`="number")),
                visible="(estimates)"))
            self$add(jmvcore::Table$new(
                options=options,
                name="rsq",
                title="R\u00B2 and semi-partial R\u00B2 estimates",
                columns=list(
                    list(
                        `name`="var", 
                        `title`="Source", 
                        `type`="text"),
                    list(
                        `name`="Estimate", 
                        `type`="number")),
                visible="(estimates)"))}))

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

#' General Linear Model
#'
#' 
#' @param data .
#' @param out .
#' @param preds .
#' @param graphic .
#' @param graphicassump .
#' @param estimates .
#' @param se .
#' @param line .
#' @param center .
#' @return A results object containing:
#' \tabular{llllll}{
#'   \code{results$assumpplot} \tab \tab \tab \tab \tab an image \cr
#'   \code{results$plot} \tab \tab \tab \tab \tab an image \cr
#'   \code{results$glmcat} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$diff} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$rsq} \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$glmcat$asDF}
#'
#' \code{as.data.frame(results$glmcat)}
#'
#' @export
glmbasic <- function(
    data,
    out,
    preds,
    graphic = TRUE,
    graphicassump = FALSE,
    estimates = TRUE,
    se = TRUE,
    line = "Loess",
    center = "Median + quartiles") {

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

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


    options <- glmbasicOptions$new(
        out = out,
        preds = preds,
        graphic = graphic,
        graphicassump = graphicassump,
        estimates = estimates,
        se = se,
        line = line,
        center = center)

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

    analysis$run()

    analysis$results
}
dustinfife/flexplot documentation built on Sept. 23, 2024, 9:01 p.m.