# This file is automatically generated, you probably don't want to edit this
dichotomousOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"dichotomousOptions",
inherit = jmvcore::Options,
public = list(
initialize = function(
vars = NULL,
prop = TRUE,
imeasure = FALSE,
ise = FALSE,
infit = FALSE,
outfit = FALSE,
reliability = TRUE,
modelfit = FALSE,
modelfitp = FALSE,
mat = FALSE,
wrightmap = TRUE,
inplot = FALSE,
outplot = FALSE,
angle = 0,
to = FALSE,
plot2 = FALSE,
st = FALSE,
plot3 = FALSE,
width = 500,
height = 500,
num = 1,
plot4 = FALSE,
width4 = 500,
height4 = 500,
width1 = 500,
height1 = 500,
width3 = 500,
height3 = 500,
width2 = 500,
height2 = 500, ...) {
super$initialize(
package="snowIRT",
name="dichotomous",
requiresData=TRUE,
...)
private$..vars <- jmvcore::OptionVariables$new(
"vars",
vars,
suggested=list(
"continuous"),
permitted=list(
"numeric"))
private$..prop <- jmvcore::OptionBool$new(
"prop",
prop,
default=TRUE)
private$..imeasure <- jmvcore::OptionBool$new(
"imeasure",
imeasure,
default=FALSE)
private$..ise <- jmvcore::OptionBool$new(
"ise",
ise,
default=FALSE)
private$..infit <- jmvcore::OptionBool$new(
"infit",
infit,
default=FALSE)
private$..outfit <- jmvcore::OptionBool$new(
"outfit",
outfit,
default=FALSE)
private$..reliability <- jmvcore::OptionBool$new(
"reliability",
reliability,
default=TRUE)
private$..modelfit <- jmvcore::OptionBool$new(
"modelfit",
modelfit,
default=FALSE)
private$..modelfitp <- jmvcore::OptionBool$new(
"modelfitp",
modelfitp,
default=FALSE)
private$..mat <- jmvcore::OptionBool$new(
"mat",
mat,
default=FALSE)
private$..wrightmap <- jmvcore::OptionBool$new(
"wrightmap",
wrightmap,
default=TRUE)
private$..total <- jmvcore::OptionOutput$new(
"total")
private$..pmeasure <- jmvcore::OptionOutput$new(
"pmeasure")
private$..pse <- jmvcore::OptionOutput$new(
"pse")
private$..pinfit <- jmvcore::OptionOutput$new(
"pinfit")
private$..poutfit <- jmvcore::OptionOutput$new(
"poutfit")
private$..inplot <- jmvcore::OptionBool$new(
"inplot",
inplot,
default=FALSE)
private$..outplot <- jmvcore::OptionBool$new(
"outplot",
outplot,
default=FALSE)
private$..angle <- jmvcore::OptionNumber$new(
"angle",
angle,
min=0,
max=90,
default=0)
private$..resid <- jmvcore::OptionOutput$new(
"resid")
private$..to <- jmvcore::OptionBool$new(
"to",
to,
default=FALSE)
private$..plot2 <- jmvcore::OptionBool$new(
"plot2",
plot2,
default=FALSE)
private$..st <- jmvcore::OptionBool$new(
"st",
st,
default=FALSE)
private$..plot3 <- jmvcore::OptionBool$new(
"plot3",
plot3,
default=FALSE)
private$..width <- jmvcore::OptionInteger$new(
"width",
width,
default=500)
private$..height <- jmvcore::OptionInteger$new(
"height",
height,
default=500)
private$..num <- jmvcore::OptionInteger$new(
"num",
num,
default=1,
min=1)
private$..plot4 <- jmvcore::OptionBool$new(
"plot4",
plot4,
default=FALSE)
private$..width4 <- jmvcore::OptionInteger$new(
"width4",
width4,
default=500)
private$..height4 <- jmvcore::OptionInteger$new(
"height4",
height4,
default=500)
private$..width1 <- jmvcore::OptionInteger$new(
"width1",
width1,
default=500)
private$..height1 <- jmvcore::OptionInteger$new(
"height1",
height1,
default=500)
private$..width3 <- jmvcore::OptionInteger$new(
"width3",
width3,
default=500)
private$..height3 <- jmvcore::OptionInteger$new(
"height3",
height3,
default=500)
private$..width2 <- jmvcore::OptionInteger$new(
"width2",
width2,
default=500)
private$..height2 <- jmvcore::OptionInteger$new(
"height2",
height2,
default=500)
self$.addOption(private$..vars)
self$.addOption(private$..prop)
self$.addOption(private$..imeasure)
self$.addOption(private$..ise)
self$.addOption(private$..infit)
self$.addOption(private$..outfit)
self$.addOption(private$..reliability)
self$.addOption(private$..modelfit)
self$.addOption(private$..modelfitp)
self$.addOption(private$..mat)
self$.addOption(private$..wrightmap)
self$.addOption(private$..total)
self$.addOption(private$..pmeasure)
self$.addOption(private$..pse)
self$.addOption(private$..pinfit)
self$.addOption(private$..poutfit)
self$.addOption(private$..inplot)
self$.addOption(private$..outplot)
self$.addOption(private$..angle)
self$.addOption(private$..resid)
self$.addOption(private$..to)
self$.addOption(private$..plot2)
self$.addOption(private$..st)
self$.addOption(private$..plot3)
self$.addOption(private$..width)
self$.addOption(private$..height)
self$.addOption(private$..num)
self$.addOption(private$..plot4)
self$.addOption(private$..width4)
self$.addOption(private$..height4)
self$.addOption(private$..width1)
self$.addOption(private$..height1)
self$.addOption(private$..width3)
self$.addOption(private$..height3)
self$.addOption(private$..width2)
self$.addOption(private$..height2)
}),
active = list(
vars = function() private$..vars$value,
prop = function() private$..prop$value,
imeasure = function() private$..imeasure$value,
ise = function() private$..ise$value,
infit = function() private$..infit$value,
outfit = function() private$..outfit$value,
reliability = function() private$..reliability$value,
modelfit = function() private$..modelfit$value,
modelfitp = function() private$..modelfitp$value,
mat = function() private$..mat$value,
wrightmap = function() private$..wrightmap$value,
total = function() private$..total$value,
pmeasure = function() private$..pmeasure$value,
pse = function() private$..pse$value,
pinfit = function() private$..pinfit$value,
poutfit = function() private$..poutfit$value,
inplot = function() private$..inplot$value,
outplot = function() private$..outplot$value,
angle = function() private$..angle$value,
resid = function() private$..resid$value,
to = function() private$..to$value,
plot2 = function() private$..plot2$value,
st = function() private$..st$value,
plot3 = function() private$..plot3$value,
width = function() private$..width$value,
height = function() private$..height$value,
num = function() private$..num$value,
plot4 = function() private$..plot4$value,
width4 = function() private$..width4$value,
height4 = function() private$..height4$value,
width1 = function() private$..width1$value,
height1 = function() private$..height1$value,
width3 = function() private$..width3$value,
height3 = function() private$..height3$value,
width2 = function() private$..width2$value,
height2 = function() private$..height2$value),
private = list(
..vars = NA,
..prop = NA,
..imeasure = NA,
..ise = NA,
..infit = NA,
..outfit = NA,
..reliability = NA,
..modelfit = NA,
..modelfitp = NA,
..mat = NA,
..wrightmap = NA,
..total = NA,
..pmeasure = NA,
..pse = NA,
..pinfit = NA,
..poutfit = NA,
..inplot = NA,
..outplot = NA,
..angle = NA,
..resid = NA,
..to = NA,
..plot2 = NA,
..st = NA,
..plot3 = NA,
..width = NA,
..height = NA,
..num = NA,
..plot4 = NA,
..width4 = NA,
..height4 = NA,
..width1 = NA,
..height1 = NA,
..width3 = NA,
..height3 = NA,
..width2 = NA,
..height2 = NA)
)
dichotomousResults <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"dichotomousResults",
inherit = jmvcore::Group,
active = list(
instructions = function() private$.items[["instructions"]],
items = function() private$.items[["items"]],
stand = function() private$.items[["stand"]],
mf = function() private$.items[["mf"]],
plot = function() private$.items[["plot"]],
plot4 = function() private$.items[["plot4"]],
inplot = function() private$.items[["inplot"]],
outplot = function() private$.items[["outplot"]],
total = function() private$.items[["total"]],
pmeasure = function() private$.items[["pmeasure"]],
pse = function() private$.items[["pse"]],
pinfit = function() private$.items[["pinfit"]],
poutfit = function() private$.items[["poutfit"]],
resid = function() private$.items[["resid"]],
plot3 = function() private$.items[["plot3"]],
plot2 = function() private$.items[["plot2"]]),
private = list(),
public=list(
initialize=function(options) {
super$initialize(
options=options,
name="",
title="Dichotomous Model",
refs="snowIRT")
self$add(jmvcore::Html$new(
options=options,
name="instructions",
title="Instructions",
visible=TRUE))
self$add(jmvcore::Table$new(
options=options,
name="items",
title="Item Statistics",
visible="(prop || imeasure || ise || infit || outfit)",
rows="(vars)",
clearWith=list(
"vars"),
refs="TAM",
columns=list(
list(
`name`="name",
`title`="",
`type`="text",
`content`="($key)"),
list(
`name`="prop",
`title`="Proportion",
`visible`="(prop)"),
list(
`name`="measure",
`title`="Measure",
`visible`="(imeasure)"),
list(
`name`="ise",
`title`="S.E.Measure",
`visible`="(ise)"),
list(
`name`="infit",
`title`="Infit",
`visible`="(infit)"),
list(
`name`="outfit",
`title`="Outfit",
`visible`="(outfit)"))))
self$add(R6::R6Class(
inherit = jmvcore::Group,
active = list(
st = function() private$.items[["st"]],
to = function() private$.items[["to"]]),
private = list(),
public=list(
initialize=function(options) {
super$initialize(
options=options,
name="stand",
title="Standard Scores")
self$add(jmvcore::Table$new(
options=options,
name="st",
title="Standard score",
visible="(st)",
clearWith=list(
"vars"),
refs="ShinyItemAnalysis",
columns=list(
list(
`name`="name",
`title`="",
`type`="text",
`content`="($key)"),
list(
`name`="Total",
`type`="integer"),
list(
`name`="Percentile",
`type`="number"),
list(
`name`="Z",
`type`="number"),
list(
`name`="T",
`type`="number"))))
self$add(jmvcore::Table$new(
options=options,
name="to",
title="Summary of total score",
rows=1,
visible="(to)",
clearWith=list(
"vars"),
refs="snowIRT",
columns=list(
list(
`name`="N",
`type`="number"),
list(
`name`="Minimum",
`type`="number"),
list(
`name`="Maximum",
`type`="number"),
list(
`name`="Mean",
`type`="number"),
list(
`name`="Median",
`type`="number"),
list(
`name`="SD",
`type`="number"),
list(
`name`="SE",
`type`="number"),
list(
`name`="Skewness",
`type`="number"),
list(
`name`="Kurtosis",
`type`="number"))))}))$new(options=options))
self$add(R6::R6Class(
inherit = jmvcore::Group,
active = list(
scale = function() private$.items[["scale"]],
mat = function() private$.items[["mat"]]),
private = list(),
public=list(
initialize=function(options) {
super$initialize(
options=options,
name="mf",
title="Model Fit")
self$add(jmvcore::Table$new(
options=options,
name="scale",
title="Model Fit",
rows=1,
clearWith=list(
"vars"),
refs="TAM",
columns=list(
list(
`name`="name",
`title`="",
`type`="text",
`content`="scale"),
list(
`name`="reliability",
`title`="Person Reliability",
`visible`="(reliability)"),
list(
`name`="modelfit",
`title`="MADaQ3",
`visible`="(modelfit)"),
list(
`name`="modelfitp",
`title`="p",
`format`="zto,pvalue",
`visible`="(modelfitp)"))))
self$add(jmvcore::Table$new(
options=options,
name="mat",
title="Q3 Correlation Matrix",
rows="(vars)",
visible="(mat)",
refs="TAM",
clearWith=list(
"vars"),
columns=list(
list(
`name`=".name",
`title`="",
`type`="text",
`content`="($key)",
`combineBelow`=TRUE))))}))$new(options=options))
self$add(jmvcore::Image$new(
options=options,
name="plot",
title="Wright Map",
renderFun=".plot",
visible="(wrightmap)",
clearWith=list(
"vars",
"width",
"height"),
refs="ShinyItemAnalysis"))
self$add(jmvcore::Image$new(
options=options,
name="plot4",
title="Expected Score Curve",
visible="(plot4)",
renderFun=".plot4",
clearWith=list(
"vars",
"num",
"width4",
"height4")))
self$add(jmvcore::Image$new(
options=options,
name="inplot",
title="Item Infit Plot",
visible="(inplot)",
renderFun=".inPlot",
clearWith=list(
"vars",
"angle",
"width1",
"height1")))
self$add(jmvcore::Image$new(
options=options,
name="outplot",
title="Item Outfit Plot",
visible="(outplot)",
renderFun=".outPlot",
clearWith=list(
"vars",
"angle",
"width1",
"height1")))
self$add(jmvcore::Output$new(
options=options,
name="total",
title="Total",
varTitle="Total",
measureType="continuous",
clearWith=list(
"vars")))
self$add(jmvcore::Output$new(
options=options,
name="pmeasure",
title="Measure",
varTitle="Measure",
measureType="continuous",
clearWith=list(
"vars")))
self$add(jmvcore::Output$new(
options=options,
name="pse",
title="SE",
varTitle="SE",
measureType="continuous",
clearWith=list(
"vars")))
self$add(jmvcore::Output$new(
options=options,
name="pinfit",
title="Infit",
varTitle="Infit",
measureType="continuous",
clearWith=list(
"vars")))
self$add(jmvcore::Output$new(
options=options,
name="poutfit",
title="Outfit",
varTitle="Outfit",
measureType="continuous",
clearWith=list(
"vars")))
self$add(jmvcore::Output$new(
options=options,
name="resid",
title="Standardized residuals for PCA",
clearWith=list(
"vars")))
self$add(jmvcore::Image$new(
options=options,
name="plot3",
title="Person Fit Plot",
requiresData=TRUE,
visible="(plot3)",
renderFun=".plot3",
refs="snowIRT",
clearWith=list(
"vars",
"width3",
"height3")))
self$add(jmvcore::Image$new(
options=options,
name="plot2",
title="Histogram of Total Score",
requiresData=TRUE,
visible="(plot2)",
renderFun=".plot2",
refs="snowIRT",
clearWith=list(
"vars",
"width2",
"height2")))}))
dichotomousBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"dichotomousBase",
inherit = jmvcore::Analysis,
public = list(
initialize = function(options, data=NULL, datasetId="", analysisId="", revision=0) {
super$initialize(
package = "snowIRT",
name = "dichotomous",
version = c(1,0,0),
options = options,
results = dichotomousResults$new(options=options),
data = data,
datasetId = datasetId,
analysisId = analysisId,
revision = revision,
pause = NULL,
completeWhenFilled = FALSE,
requiresMissings = FALSE,
weightsSupport = 'none')
}))
#' Dichotomous Model
#'
#'
#' @param data The data as a data frame.
#' @param vars .
#' @param prop .
#' @param imeasure .
#' @param ise .
#' @param infit .
#' @param outfit .
#' @param reliability .
#' @param modelfit .
#' @param modelfitp .
#' @param mat .
#' @param wrightmap .
#' @param inplot .
#' @param outplot .
#' @param angle a number from 0 to 90 defining the angle of the x-axis labels,
#' where 0 degrees represents completely horizontal labels.
#' @param to .
#' @param plot2 .
#' @param st .
#' @param plot3 .
#' @param width .
#' @param height .
#' @param num .
#' @param plot4 .
#' @param width4 .
#' @param height4 .
#' @param width1 .
#' @param height1 .
#' @param width3 .
#' @param height3 .
#' @param width2 .
#' @param height2 .
#' @return A results object containing:
#' \tabular{llllll}{
#' \code{results$instructions} \tab \tab \tab \tab \tab a html \cr
#' \code{results$items} \tab \tab \tab \tab \tab a table \cr
#' \code{results$stand$st} \tab \tab \tab \tab \tab a table \cr
#' \code{results$stand$to} \tab \tab \tab \tab \tab a table \cr
#' \code{results$mf$scale} \tab \tab \tab \tab \tab a table \cr
#' \code{results$mf$mat} \tab \tab \tab \tab \tab a table \cr
#' \code{results$plot} \tab \tab \tab \tab \tab an image \cr
#' \code{results$plot4} \tab \tab \tab \tab \tab an image \cr
#' \code{results$inplot} \tab \tab \tab \tab \tab an image \cr
#' \code{results$outplot} \tab \tab \tab \tab \tab an image \cr
#' \code{results$total} \tab \tab \tab \tab \tab an output \cr
#' \code{results$pmeasure} \tab \tab \tab \tab \tab an output \cr
#' \code{results$pse} \tab \tab \tab \tab \tab an output \cr
#' \code{results$pinfit} \tab \tab \tab \tab \tab an output \cr
#' \code{results$poutfit} \tab \tab \tab \tab \tab an output \cr
#' \code{results$resid} \tab \tab \tab \tab \tab an output \cr
#' \code{results$plot3} \tab \tab \tab \tab \tab an image \cr
#' \code{results$plot2} \tab \tab \tab \tab \tab an image \cr
#' }
#'
#' Tables can be converted to data frames with \code{asDF} or \code{\link{as.data.frame}}. For example:
#'
#' \code{results$items$asDF}
#'
#' \code{as.data.frame(results$items)}
#'
#' @export
dichotomous <- function(
data,
vars,
prop = TRUE,
imeasure = FALSE,
ise = FALSE,
infit = FALSE,
outfit = FALSE,
reliability = TRUE,
modelfit = FALSE,
modelfitp = FALSE,
mat = FALSE,
wrightmap = TRUE,
inplot = FALSE,
outplot = FALSE,
angle = 0,
to = FALSE,
plot2 = FALSE,
st = FALSE,
plot3 = FALSE,
width = 500,
height = 500,
num = 1,
plot4 = FALSE,
width4 = 500,
height4 = 500,
width1 = 500,
height1 = 500,
width3 = 500,
height3 = 500,
width2 = 500,
height2 = 500) {
if ( ! requireNamespace("jmvcore", quietly=TRUE))
stop("dichotomous requires jmvcore to be installed (restart may be required)")
if ( ! missing(vars)) vars <- jmvcore::resolveQuo(jmvcore::enquo(vars))
if (missing(data))
data <- jmvcore::marshalData(
parent.frame(),
`if`( ! missing(vars), vars, NULL))
options <- dichotomousOptions$new(
vars = vars,
prop = prop,
imeasure = imeasure,
ise = ise,
infit = infit,
outfit = outfit,
reliability = reliability,
modelfit = modelfit,
modelfitp = modelfitp,
mat = mat,
wrightmap = wrightmap,
inplot = inplot,
outplot = outplot,
angle = angle,
to = to,
plot2 = plot2,
st = st,
plot3 = plot3,
width = width,
height = height,
num = num,
plot4 = plot4,
width4 = width4,
height4 = height4,
width1 = width1,
height1 = height1,
width3 = width3,
height3 = height3,
width2 = width2,
height2 = height2)
analysis <- dichotomousClass$new(
options = options,
data = data)
analysis$run()
analysis$results
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.