R/ordinalreliability.h.R

Defines functions ordinalReliability

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

ordinalReliabilityOptions <- if (requireNamespace('jmvcore')) R6::R6Class(
    "ordinalReliabilityOptions",
    inherit = jmvcore::Options,
    public = list(
        initialize = function(
            items = NULL,
            alphaTable = FALSE,
            thetaTable = FALSE,
            omegaTable = FALSE,
            guttmanTable = FALSE,
            polyTable = FALSE,
            omegaPlot = NULL, ...) {

            super$initialize(
                package='psychoPDA',
                name='ordinalReliability',
                requiresData=TRUE,
                ...)

            private$..items <- jmvcore::OptionVariables$new(
                "items",
                items)
            private$..alphaTable <- jmvcore::OptionBool$new(
                "alphaTable",
                alphaTable,
                default=FALSE)
            private$..thetaTable <- jmvcore::OptionBool$new(
                "thetaTable",
                thetaTable,
                default=FALSE)
            private$..omegaTable <- jmvcore::OptionBool$new(
                "omegaTable",
                omegaTable,
                default=FALSE)
            private$..guttmanTable <- jmvcore::OptionBool$new(
                "guttmanTable",
                guttmanTable,
                default=FALSE)
            private$..polyTable <- jmvcore::OptionBool$new(
                "polyTable",
                polyTable,
                default=FALSE)
            private$..omegaPlot <- jmvcore::OptionBool$new(
                "omegaPlot",
                omegaPlot)

            self$.addOption(private$..items)
            self$.addOption(private$..alphaTable)
            self$.addOption(private$..thetaTable)
            self$.addOption(private$..omegaTable)
            self$.addOption(private$..guttmanTable)
            self$.addOption(private$..polyTable)
            self$.addOption(private$..omegaPlot)
        }),
    active = list(
        items = function() private$..items$value,
        alphaTable = function() private$..alphaTable$value,
        thetaTable = function() private$..thetaTable$value,
        omegaTable = function() private$..omegaTable$value,
        guttmanTable = function() private$..guttmanTable$value,
        polyTable = function() private$..polyTable$value,
        omegaPlot = function() private$..omegaPlot$value),
    private = list(
        ..items = NA,
        ..alphaTable = NA,
        ..thetaTable = NA,
        ..omegaTable = NA,
        ..guttmanTable = NA,
        ..polyTable = NA,
        ..omegaPlot = NA)
)

ordinalReliabilityResults <- if (requireNamespace('jmvcore')) R6::R6Class(
    inherit = jmvcore::Group,
    active = list(
        instructions = function() private$.items[["instructions"]],
        summaryTableAlpha = function() private$.items[["summaryTableAlpha"]],
        summaryTableGuttman = function() private$.items[["summaryTableGuttman"]],
        summaryTableOmega = function() private$.items[["summaryTableOmega"]],
        summaryTableTheta = function() private$.items[["summaryTableTheta"]],
        polychoricRho = function() private$.items[["polychoricRho"]],
        omegaPlot = function() private$.items[["omegaPlot"]]),
    private = list(),
    public=list(
        initialize=function(options) {
            super$initialize(
                options=options,
                name="",
                title="Ordinal Reliability")
            self$add(jmvcore::Html$new(
                options=options,
                name="instructions",
                visible=TRUE))
            self$add(jmvcore::Table$new(
                options=options,
                name="summaryTableAlpha",
                title="Ordinal Reliability",
                rows=1,
                clearWith=list(
                    "items"),
                columns=list(
                    list(
                        `name`="raw_alpha", 
                        `title`="raw_alpha", 
                        `type`="number"),
                    list(
                        `name`="std.alpha", 
                        `title`="std.alpha", 
                        `type`="number"),
                    list(
                        `name`="G6", 
                        `title`="G6(smc)", 
                        `type`="number"),
                    list(
                        `name`="average_r", 
                        `title`="average_r", 
                        `type`="number"),
                    list(
                        `name`="SN", 
                        `title`="SN", 
                        `type`="number"),
                    list(
                        `name`="median_r", 
                        `title`="median_r", 
                        `type`="number"))))
            self$add(jmvcore::Table$new(
                options=options,
                name="summaryTableGuttman",
                title="Ordinal Guttman",
                visible="(guttmanTable)",
                rows=1,
                clearWith=list(
                    "items",
                    "groups"),
                columns=list(
                    list(
                        `name`="maxSHR", 
                        `title`="Max Split-Half (lambda 4)", 
                        `type`="number"),
                    list(
                        `name`="guttmanL6", 
                        `title`="Lambda 6", 
                        `type`="number"),
                    list(
                        `name`="avgSHR", 
                        `title`="Average Split-Half", 
                        `type`="number"),
                    list(
                        `name`="alpha", 
                        `title`="Alpha (lambda 3)", 
                        `type`="number"),
                    list(
                        `name`="minSHR", 
                        `title`="Min Split-Half (beta)", 
                        `type`="number"))))
            self$add(jmvcore::Table$new(
                options=options,
                name="summaryTableOmega",
                title="Ordinal Omega",
                visible="(omegaTable)",
                rows=1,
                clearWith=list(
                    "items",
                    "groups"),
                columns=list(
                    list(
                        `name`="omega_h", 
                        `title`="omega_h", 
                        `type`="number"),
                    list(
                        `name`="omega.lim", 
                        `title`="omega.lim", 
                        `type`="number"),
                    list(
                        `name`="alpha", 
                        `title`="alpha", 
                        `type`="number"),
                    list(
                        `name`="omega.tot", 
                        `title`="omega.tot", 
                        `type`="number"),
                    list(
                        `name`="G6", 
                        `title`="G6", 
                        `type`="number"))))
            self$add(jmvcore::Table$new(
                options=options,
                name="summaryTableTheta",
                title="Ordinal Theta",
                visible="(thetaTable)",
                rows=1,
                clearWith=list(
                    "items",
                    "groups"),
                columns=list(
                    list(
                        `name`="ordinalTheta", 
                        `title`="ordinalTheta", 
                        `type`="number"))))
            self$add(jmvcore::Preformatted$new(
                options=options,
                name="polychoricRho",
                title="Polychoric Correlation Matrix",
                visible="(polyTable)",
                clearWith=list(
                    "items",
                    "groups")))
            self$add(jmvcore::Array$new(
                options=options,
                name="omegaPlot",
                title="Ordinal Omega Factor Analysis",
                visible="(omegaPlot)",
                items=0,
                template=jmvcore::Image$new(
                    options=options,
                    width=550,
                    height=450,
                    renderFun=".plot",
                    clearWith=list(
                        "items",
                        "groups"))))}))

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

#' Ordinal Reliability
#'
#' 
#' @param data .
#' @param items .
#' @param alphaTable .
#' @param thetaTable .
#' @param omegaTable .
#' @param guttmanTable .
#' @param polyTable .
#' @param omegaPlot .
#' @return A results object containing:
#' \tabular{llllll}{
#'   \code{results$instructions} \tab \tab \tab \tab \tab a html \cr
#'   \code{results$summaryTableAlpha} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$summaryTableGuttman} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$summaryTableOmega} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$summaryTableTheta} \tab \tab \tab \tab \tab a table \cr
#'   \code{results$polychoricRho} \tab \tab \tab \tab \tab a preformatted \cr
#'   \code{results$omegaPlot} \tab \tab \tab \tab \tab an array of images \cr
#' }
#'
#' Tables can be converted to data frames with \code{asDF} or \code{\link{as.data.frame}}. For example:
#'
#' \code{results$summaryTableAlpha$asDF}
#'
#' \code{as.data.frame(results$summaryTableAlpha)}
#'
#' @export
ordinalReliability <- function(
    data,
    items,
    alphaTable = FALSE,
    thetaTable = FALSE,
    omegaTable = FALSE,
    guttmanTable = FALSE,
    polyTable = FALSE,
    omegaPlot) {

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

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


    options <- ordinalReliabilityOptions$new(
        items = items,
        alphaTable = alphaTable,
        thetaTable = thetaTable,
        omegaTable = omegaTable,
        guttmanTable = guttmanTable,
        polyTable = polyTable,
        omegaPlot = omegaPlot)

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

    analysis$run()

    analysis$results
}
lucasjfriesen/jamoviPsychoPDA documentation built on May 23, 2021, 5:20 p.m.