diff --git a/R/efa.h.R b/R/efa.h.R index 030cbb58..20a4a167 100644 --- a/R/efa.h.R +++ b/R/efa.h.R @@ -12,6 +12,10 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( minEigen = 0, extraction = "minres", rotation = "oblimin", + countCorrMin = "", + countCorrMax = "", + kmo = FALSE, + bartlett = FALSE, hideLoadings = 0.3, sortLoadings = FALSE, screePlot = FALSE, @@ -19,8 +23,6 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( factorCor = FALSE, factorSummary = FALSE, modelFit = FALSE, - kmo = FALSE, - bartlett = FALSE, factorScoreMethod = "Thurstone", ...) { super$initialize( @@ -75,6 +77,22 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( "oblimin", "simplimax"), default="oblimin") + private$..countCorrMin <- jmvcore::OptionString$new( + "countCorrMin", + countCorrMin, + default="") + private$..countCorrMax <- jmvcore::OptionString$new( + "countCorrMax", + countCorrMax, + default="") + private$..kmo <- jmvcore::OptionBool$new( + "kmo", + kmo, + default=FALSE) + private$..bartlett <- jmvcore::OptionBool$new( + "bartlett", + bartlett, + default=FALSE) private$..hideLoadings <- jmvcore::OptionNumber$new( "hideLoadings", hideLoadings, @@ -103,14 +121,6 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( "modelFit", modelFit, default=FALSE) - private$..kmo <- jmvcore::OptionBool$new( - "kmo", - kmo, - default=FALSE) - private$..bartlett <- jmvcore::OptionBool$new( - "bartlett", - bartlett, - default=FALSE) private$..factorScoresOV <- jmvcore::OptionOutput$new( "factorScoresOV") private$..factorScoreMethod <- jmvcore::OptionList$new( @@ -130,6 +140,10 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( self$.addOption(private$..minEigen) self$.addOption(private$..extraction) self$.addOption(private$..rotation) + self$.addOption(private$..countCorrMin) + self$.addOption(private$..countCorrMax) + self$.addOption(private$..kmo) + self$.addOption(private$..bartlett) self$.addOption(private$..hideLoadings) self$.addOption(private$..sortLoadings) self$.addOption(private$..screePlot) @@ -137,8 +151,6 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( self$.addOption(private$..factorCor) self$.addOption(private$..factorSummary) self$.addOption(private$..modelFit) - self$.addOption(private$..kmo) - self$.addOption(private$..bartlett) self$.addOption(private$..factorScoresOV) self$.addOption(private$..factorScoreMethod) }), @@ -149,6 +161,10 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( minEigen = function() private$..minEigen$value, extraction = function() private$..extraction$value, rotation = function() private$..rotation$value, + countCorrMin = function() private$..countCorrMin$value, + countCorrMax = function() private$..countCorrMax$value, + kmo = function() private$..kmo$value, + bartlett = function() private$..bartlett$value, hideLoadings = function() private$..hideLoadings$value, sortLoadings = function() private$..sortLoadings$value, screePlot = function() private$..screePlot$value, @@ -156,8 +172,6 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( factorCor = function() private$..factorCor$value, factorSummary = function() private$..factorSummary$value, modelFit = function() private$..modelFit$value, - kmo = function() private$..kmo$value, - bartlett = function() private$..bartlett$value, factorScoresOV = function() private$..factorScoresOV$value, factorScoreMethod = function() private$..factorScoreMethod$value), private = list( @@ -167,6 +181,10 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( ..minEigen = NA, ..extraction = NA, ..rotation = NA, + ..countCorrMin = NA, + ..countCorrMax = NA, + ..kmo = NA, + ..bartlett = NA, ..hideLoadings = NA, ..sortLoadings = NA, ..screePlot = NA, @@ -174,8 +192,6 @@ efaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( ..factorCor = NA, ..factorSummary = NA, ..modelFit = NA, - ..kmo = NA, - ..bartlett = NA, ..factorScoresOV = NA, ..factorScoreMethod = NA) ) @@ -263,6 +279,16 @@ efaBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( #' @param rotation \code{'none'}, \code{'varimax'}, \code{'quartimax'}, #' \code{'promax'}, \code{'oblimin'} (default), or \code{'simplimax'}, the #' rotation to use in estimation +#' @param countCorrMin a number (default: NA), returns the number of +#' correlations between variables above this minimum (if NA, no output is +#' produced) +#' @param countCorrMax a number (default: NA), returns the number of +#' correlations between variables above this maxmimum (if NA, no output is +#' produced) +#' @param kmo \code{TRUE} or \code{FALSE} (default), show Kaiser-Meyer-Olkin +#' (KMO) measure of sampling adequacy (MSA) results +#' @param bartlett \code{TRUE} or \code{FALSE} (default), show Bartlett's test +#' of sphericity results #' @param hideLoadings a number (default: 0.3), hide factor loadings below #' this value #' @param sortLoadings \code{TRUE} or \code{FALSE} (default), sort the factor @@ -275,10 +301,6 @@ efaBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( #' summary #' @param modelFit \code{TRUE} or \code{FALSE} (default), show model fit #' measures and test -#' @param kmo \code{TRUE} or \code{FALSE} (default), show Kaiser-Meyer-Olkin -#' (KMO) measure of sampling adequacy (MSA) results -#' @param bartlett \code{TRUE} or \code{FALSE} (default), show Bartlett's test -#' of sphericity results #' @param factorScoreMethod \code{'Thurstone'} (default), \code{'Bartlett'}, #' \code{'tenBerge'}, \code{'Anderson'}, or \code{'Harman'} use respectively #' 'Thurstone', 'Bartlett', 'ten Berge', 'Anderson & Rubin', or 'Harman' @@ -297,6 +319,10 @@ efa <- function( minEigen = 0, extraction = "minres", rotation = "oblimin", + countCorrMin = "", + countCorrMax = "", + kmo = FALSE, + bartlett = FALSE, hideLoadings = 0.3, sortLoadings = FALSE, screePlot = FALSE, @@ -304,8 +330,6 @@ efa <- function( factorCor = FALSE, factorSummary = FALSE, modelFit = FALSE, - kmo = FALSE, - bartlett = FALSE, factorScoreMethod = "Thurstone") { if ( ! requireNamespace("jmvcore", quietly=TRUE)) @@ -326,6 +350,10 @@ efa <- function( minEigen = minEigen, extraction = extraction, rotation = rotation, + countCorrMin = countCorrMin, + countCorrMax = countCorrMax, + kmo = kmo, + bartlett = bartlett, hideLoadings = hideLoadings, sortLoadings = sortLoadings, screePlot = screePlot, @@ -333,8 +361,6 @@ efa <- function( factorCor = factorCor, factorSummary = factorSummary, modelFit = modelFit, - kmo = kmo, - bartlett = bartlett, factorScoreMethod = factorScoreMethod) analysis <- efaClass$new( diff --git a/R/pca.b.R b/R/pca.b.R index 4dd47850..d2370f3f 100644 --- a/R/pca.b.R +++ b/R/pca.b.R @@ -110,6 +110,7 @@ pcaClass <- R6::R6Class( private$.initLoadingsTable() private$.initModelFitTable() private$.initEigenTable() + private$.initCorrCountTable() private$.initKMOTable() private$.initFactorCor() }, @@ -124,6 +125,7 @@ pcaClass <- R6::R6Class( private$.populateFactorSummaryTable() private$.populateFactorCorTable() private$.populateModelFitTable() + private$.populateCorrCountTable() private$.populateKMOTable() private$.populateBartlettTable() private$.prepareScreePlot() @@ -250,6 +252,21 @@ pcaClass <- R6::R6Class( for (i in seq_along(self$options$vars)) table$addRow(rowKey=i, values=list(comp = as.character(i))) }, + .initCorrCountTable = function() { + group <- self$results$dataSummary + vars <- self$options$vars + + for (t in c("Min", "Max")) { + table <- group[[paste0("corrAbove", t)]] + title <- jmvcore::format(.("Correlations Above {} Threshold ({})"), + ifelse(t == "Min", .("Minimum"), .("Maximum")), + self$options[[paste0("countCorr", t)]]) + table$setTitle(title) + for (i in seq_along(vars)) { + table$addColumn(name = sprintf("c%d", i), title = "", type = 'integer') + } + } + }, .initKMOTable = function() { table <- self$results$assump$kmo vars <- self$options$vars @@ -413,6 +430,30 @@ pcaClass <- R6::R6Class( table$setRow(rowNo=1, values=row) } }, + .populateCorrCountTable = function() { + group <- self$results$dataSummary + vars <- self$options$vars + if (length(vars) >= 1) { + corrMatrix = abs(cor(sapply(self$data[, vars], jmvcore::toNumeric), use = "pairwise")) + diag(corrMatrix) <- NA + + for (t in c("Min", "Max")) { + thresh <- as.numeric(self$options[[paste0("countCorr", t)]]) + if (is.na(thresh)) next + if (thresh <= 0 || thresh >= 1) + jmvcore::reject(.("Values for the Correlation Min. / Max. need to be Numeric and Between 0 and 1")) + table <- group[[paste0("corrAbove", t)]] + # sort the columns by the number of correlations above threshold (increasing for min: lower counts + # on the left, decreasing for max: higher counts on the left) + counts <- sort(colSums(corrMatrix > thresh, na.rm = TRUE), decreasing = (t == "Max")) + cnames <- names(counts) + table$setRow(rowNo = 1, setNames(as.list(counts), sprintf("c%d", seq_along(vars)))) + for (i in seq_along(cnames)) { + table$columns[[i + 1]]$setTitle(cnames[i]) + } + } + } + }, .populateKMOTable = function() { if (! self$options$kmo) return() diff --git a/R/pca.h.R b/R/pca.h.R index 3ad569d4..1f89ffa1 100644 --- a/R/pca.h.R +++ b/R/pca.h.R @@ -11,14 +11,16 @@ pcaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( nFactors = 1, minEigen = 1, rotation = "varimax", + countCorrMin = "", + countCorrMax = "", + kmo = FALSE, + bartlett = FALSE, hideLoadings = 0.3, sortLoadings = FALSE, screePlot = FALSE, eigen = FALSE, factorCor = FALSE, - factorSummary = FALSE, - kmo = FALSE, - bartlett = FALSE, ...) { + factorSummary = FALSE, ...) { super$initialize( package="jmv", @@ -64,6 +66,22 @@ pcaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( "oblimin", "simplimax"), default="varimax") + private$..countCorrMin <- jmvcore::OptionString$new( + "countCorrMin", + countCorrMin, + default="") + private$..countCorrMax <- jmvcore::OptionString$new( + "countCorrMax", + countCorrMax, + default="") + private$..kmo <- jmvcore::OptionBool$new( + "kmo", + kmo, + default=FALSE) + private$..bartlett <- jmvcore::OptionBool$new( + "bartlett", + bartlett, + default=FALSE) private$..hideLoadings <- jmvcore::OptionNumber$new( "hideLoadings", hideLoadings, @@ -88,14 +106,6 @@ pcaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( "factorSummary", factorSummary, default=FALSE) - private$..kmo <- jmvcore::OptionBool$new( - "kmo", - kmo, - default=FALSE) - private$..bartlett <- jmvcore::OptionBool$new( - "bartlett", - bartlett, - default=FALSE) private$..factorScoresOV <- jmvcore::OptionOutput$new( "factorScoresOV") @@ -104,14 +114,16 @@ pcaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( self$.addOption(private$..nFactors) self$.addOption(private$..minEigen) self$.addOption(private$..rotation) + self$.addOption(private$..countCorrMin) + self$.addOption(private$..countCorrMax) + self$.addOption(private$..kmo) + self$.addOption(private$..bartlett) self$.addOption(private$..hideLoadings) self$.addOption(private$..sortLoadings) self$.addOption(private$..screePlot) self$.addOption(private$..eigen) self$.addOption(private$..factorCor) self$.addOption(private$..factorSummary) - self$.addOption(private$..kmo) - self$.addOption(private$..bartlett) self$.addOption(private$..factorScoresOV) }), active = list( @@ -120,14 +132,16 @@ pcaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( nFactors = function() private$..nFactors$value, minEigen = function() private$..minEigen$value, rotation = function() private$..rotation$value, + countCorrMin = function() private$..countCorrMin$value, + countCorrMax = function() private$..countCorrMax$value, + kmo = function() private$..kmo$value, + bartlett = function() private$..bartlett$value, hideLoadings = function() private$..hideLoadings$value, sortLoadings = function() private$..sortLoadings$value, screePlot = function() private$..screePlot$value, eigen = function() private$..eigen$value, factorCor = function() private$..factorCor$value, factorSummary = function() private$..factorSummary$value, - kmo = function() private$..kmo$value, - bartlett = function() private$..bartlett$value, factorScoresOV = function() private$..factorScoresOV$value), private = list( ..vars = NA, @@ -135,14 +149,16 @@ pcaOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( ..nFactors = NA, ..minEigen = NA, ..rotation = NA, + ..countCorrMin = NA, + ..countCorrMax = NA, + ..kmo = NA, + ..bartlett = NA, ..hideLoadings = NA, ..sortLoadings = NA, ..screePlot = NA, ..eigen = NA, ..factorCor = NA, ..factorSummary = NA, - ..kmo = NA, - ..bartlett = NA, ..factorScoresOV = NA) ) @@ -153,6 +169,7 @@ pcaResults <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( loadings = function() private$.items[["loadings"]], factorStats = function() private$.items[["factorStats"]], modelFit = function() private$.items[["modelFit"]], + dataSummary = function() private$.items[["dataSummary"]], assump = function() private$.items[["assump"]], eigen = function() private$.items[["eigen"]], factorScoresOV = function() private$.items[["factorScoresOV"]]), @@ -311,6 +328,48 @@ pcaResults <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( `type`="number", `format`="zto,pvalue", `superTitle`="Model Test"))))}))$new(options=options)) + self$add(R6::R6Class( + inherit = jmvcore::Group, + active = list( + corrAboveMin = function() private$.items[["corrAboveMin"]], + corrAboveMax = function() private$.items[["corrAboveMax"]]), + private = list(), + public=list( + initialize=function(options) { + super$initialize( + options=options, + name="dataSummary", + title="Data Summary") + self$add(jmvcore::Table$new( + options=options, + name="corrAboveMin", + title="", + visible="(countCorrMin != \"\")", + rows=1, + clearWith=list( + "vars", + "countCorrMin"), + columns=list( + list( + `name`="header", + `title`="", + `type`="text", + `content`="N")))) + self$add(jmvcore::Table$new( + options=options, + name="corrAboveMax", + title="", + visible="(countCorrMax != \"\")", + rows=1, + clearWith=list( + "vars", + "countCorrMax"), + columns=list( + list( + `name`="header", + `title`="", + `type`="text", + `content`="N"))))}))$new(options=options)) self$add(R6::R6Class( inherit = jmvcore::Group, active = list( @@ -480,6 +539,16 @@ pcaBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( #' @param rotation \code{'none'}, \code{'varimax'} (default), #' \code{'quartimax'}, \code{'promax'}, \code{'oblimin'}, or #' \code{'simplimax'}, the rotation to use in estimation +#' @param countCorrMin a number (default: NA), returns the number of +#' correlations between variables above this minimum (if NA, no output is +#' produced) +#' @param countCorrMax a number (default: NA), returns the number of +#' correlations between variables above this maxmimum (if NA, no output is +#' produced) +#' @param kmo \code{TRUE} or \code{FALSE} (default), show Kaiser-Meyer-Olkin +#' (KMO) measure of sampling adequacy (MSA) results +#' @param bartlett \code{TRUE} or \code{FALSE} (default), show Bartlett's test +#' of sphericity results #' @param hideLoadings a number (default: 0.3), hide loadings below this value #' @param sortLoadings \code{TRUE} or \code{FALSE} (default), sort the factor #' loadings by size @@ -489,16 +558,14 @@ pcaBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class( #' correlations #' @param factorSummary \code{TRUE} or \code{FALSE} (default), show factor #' summary -#' @param kmo \code{TRUE} or \code{FALSE} (default), show Kaiser-Meyer-Olkin -#' (KMO) measure of sampling adequacy (MSA) results -#' @param bartlett \code{TRUE} or \code{FALSE} (default), show Bartlett's test -#' of sphericity results #' @return A results object containing: #' \tabular{llllll}{ #' \code{results$loadings} \tab \tab \tab \tab \tab a table \cr #' \code{results$factorStats$factorSummary} \tab \tab \tab \tab \tab a table \cr #' \code{results$factorStats$factorCor} \tab \tab \tab \tab \tab a table \cr #' \code{results$modelFit$fit} \tab \tab \tab \tab \tab a table \cr +#' \code{results$dataSummary$corrAboveMin} \tab \tab \tab \tab \tab a table \cr +#' \code{results$dataSummary$corrAboveMax} \tab \tab \tab \tab \tab a table \cr #' \code{results$assump$bartlett} \tab \tab \tab \tab \tab a table \cr #' \code{results$assump$kmo} \tab \tab \tab \tab \tab a table \cr #' \code{results$eigen$initEigen} \tab \tab \tab \tab \tab a table \cr @@ -520,14 +587,16 @@ pca <- function( nFactors = 1, minEigen = 1, rotation = "varimax", + countCorrMin = "", + countCorrMax = "", + kmo = FALSE, + bartlett = FALSE, hideLoadings = 0.3, sortLoadings = FALSE, screePlot = FALSE, eigen = FALSE, factorCor = FALSE, - factorSummary = FALSE, - kmo = FALSE, - bartlett = FALSE) { + factorSummary = FALSE) { if ( ! requireNamespace("jmvcore", quietly=TRUE)) stop("pca requires jmvcore to be installed (restart may be required)") @@ -546,14 +615,16 @@ pca <- function( nFactors = nFactors, minEigen = minEigen, rotation = rotation, + countCorrMin = countCorrMin, + countCorrMax = countCorrMax, + kmo = kmo, + bartlett = bartlett, hideLoadings = hideLoadings, sortLoadings = sortLoadings, screePlot = screePlot, eigen = eigen, factorCor = factorCor, - factorSummary = factorSummary, - kmo = kmo, - bartlett = bartlett) + factorSummary = factorSummary) analysis <- pcaClass$new( options = options, diff --git a/jamovi/efa.a.yaml b/jamovi/efa.a.yaml index 3fc74cd5..09370645 100644 --- a/jamovi/efa.a.yaml +++ b/jamovi/efa.a.yaml @@ -121,6 +121,39 @@ options: `'oblimin'` (default), or `'simplimax'`, the rotation to use in estimation + - name: countCorrMin + type: String + default: "" + description: + R: > + a number (default: NA), returns the number of correlations between + variables above this minimum (if NA, no output is produced) + + - name: countCorrMax + type: String + default: "" + description: + R: > + a number (default: NA), returns the number of correlations between + variables above this maxmimum (if NA, no output is produced) + + - name: kmo + title: KMO measure of sampling adequacy + type: Bool + default: false + description: + R: > + `TRUE` or `FALSE` (default), show Kaiser-Meyer-Olkin (KMO) measure of + sampling adequacy (MSA) results + + - name: bartlett + title: Bartlett's test of sphericity + type: Bool + default: false + description: + R: > + `TRUE` or `FALSE` (default), show Bartlett's test of sphericity results + - name: hideLoadings title: Hide loadings below type: Number @@ -177,23 +210,6 @@ options: R: > `TRUE` or `FALSE` (default), show model fit measures and test - - name: kmo - title: KMO measure of sampling adequacy - type: Bool - default: false - description: - R: > - `TRUE` or `FALSE` (default), show Kaiser-Meyer-Olkin (KMO) measure of - sampling adequacy (MSA) results - - - name: bartlett - title: Bartlett's test of sphericity - type: Bool - default: false - description: - R: > - `TRUE` or `FALSE` (default), show Bartlett's test of sphericity results - - name: factorScoresOV title: Factor scores type: Output diff --git a/jamovi/efa.u.yaml b/jamovi/efa.u.yaml index 5d570680..855ba5f2 100644 --- a/jamovi/efa.u.yaml +++ b/jamovi/efa.u.yaml @@ -64,6 +64,36 @@ children: suffix: factor(s) format: number enable: (nFactorMethod_fixed) + - type: Label + label: Data Summary + children: + - type: Label + label: Count Correlations Above Min. + cell: + column: 0 + row: 0 + - type: LayoutBox + cell: + column: 1 + row: 0 + children: + - name: countCorrMin + type: TextBox + format: string + - type: Label + label: And Above Max. + horizontalAlignment: right + cell: + column: 0 + row: 1 + - type: LayoutBox + cell: + column: 1 + row: 1 + children: + - name: countCorrMax + type: TextBox + format: string - type: LayoutBox margin: large cell: diff --git a/jamovi/pca.a.yaml b/jamovi/pca.a.yaml index af81ec76..2c65e9c9 100644 --- a/jamovi/pca.a.yaml +++ b/jamovi/pca.a.yaml @@ -101,6 +101,41 @@ options: `'oblimin'`, or `'simplimax'`, the rotation to use in estimation + - name: countCorrMin + title: "" + type: String + default: "" + description: + R: > + a number (default: NA), returns the number of correlations between + variables above this minimum (if NA, no output is produced) + + - name: countCorrMax + title: "" + type: String + default: "" + description: + R: > + a number (default: NA), returns the number of correlations between + variables above this maxmimum (if NA, no output is produced) + + - name: kmo + title: KMO measure of sampling adequacy + type: Bool + default: false + description: + R: > + `TRUE` or `FALSE` (default), show Kaiser-Meyer-Olkin (KMO) measure of + sampling adequacy (MSA) results + + - name: bartlett + title: Bartlett's test of sphericity + type: Bool + default: false + description: + R: > + `TRUE` or `FALSE` (default), show Bartlett's test of sphericity results + - name: hideLoadings title: Hide loadings below type: Number @@ -149,23 +184,6 @@ options: R: > `TRUE` or `FALSE` (default), show factor summary - - name: kmo - title: KMO measure of sampling adequacy - type: Bool - default: false - description: - R: > - `TRUE` or `FALSE` (default), show Kaiser-Meyer-Olkin (KMO) measure of - sampling adequacy (MSA) results - - - name: bartlett - title: Bartlett's test of sphericity - type: Bool - default: false - description: - R: > - `TRUE` or `FALSE` (default), show Bartlett's test of sphericity results - - name: factorScoresOV title: Component scores type: Output diff --git a/jamovi/pca.r.yaml b/jamovi/pca.r.yaml index 16fb38a2..c6507e76 100644 --- a/jamovi/pca.r.yaml +++ b/jamovi/pca.r.yaml @@ -123,6 +123,37 @@ items: format: zto,pvalue superTitle: Model Test + - name: dataSummary + title: Data Summary + type: Group + items: + - name: corrAboveMin + title: "" + type: Table + visible: (countCorrMin != "") + rows: 1 + clearWith: + - vars + - countCorrMin + columns: + - name: header + title: "" + type: text + content: N + - name: corrAboveMax + title: "" + type: Table + visible: (countCorrMax != "") + rows: 1 + clearWith: + - vars + - countCorrMax + columns: + - name: header + title: "" + type: text + content: N + - name: assump title: Assumption Checks type: Group diff --git a/jamovi/pca.u.yaml b/jamovi/pca.u.yaml index 4584a816..db0651bf 100644 --- a/jamovi/pca.u.yaml +++ b/jamovi/pca.u.yaml @@ -65,6 +65,36 @@ children: suffix: component(s) format: number enable: (nFactorMethod_fixed) + - type: Label + label: Data Summary + children: + - type: Label + label: Count Correlations Above Min. + cell: + column: 0 + row: 0 + - type: LayoutBox + cell: + column: 1 + row: 0 + children: + - name: countCorrMin + type: TextBox + format: string + - type: Label + label: And Above Max. + horizontalAlignment: right + cell: + column: 0 + row: 1 + - type: LayoutBox + cell: + column: 1 + row: 1 + children: + - name: countCorrMax + type: TextBox + format: string - type: LayoutBox margin: large cell: