From 2357b2648001c427513e497067a9364ea6b73d96 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 07:59:08 +0000 Subject: [PATCH 1/7] Initial plan From 8430d6abf3cb90ba379b0f641c427ad83aad6eaf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 08:09:07 +0000 Subject: [PATCH 2/7] Add SE column helper function and integrate SE columns into main tables Co-authored-by: FBartos <38475991+FBartos@users.noreply.github.com> --- R/classicalmetaanalysiscommon.R | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/R/classicalmetaanalysiscommon.R b/R/classicalmetaanalysiscommon.R index a9595cbf..b73b5f2a 100644 --- a/R/classicalmetaanalysiscommon.R +++ b/R/classicalmetaanalysiscommon.R @@ -865,6 +865,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { pooledEstimatesTable$addColumnInfo(name = "par", type = "string", title = "") .maAddSubgroupColumn(pooledEstimatesTable, options) pooledEstimatesTable$addColumnInfo(name = "est", type = "number", title = gettext("Estimate")) + .maAddSeColumn(pooledEstimatesTable, options) .maAddCiColumn(pooledEstimatesTable, options) .maAddPiColumn(pooledEstimatesTable, options) if (options[["predictionIntervals"]] && .mammHasMultipleHeterogeneities(options, canAddOutput = TRUE)) { @@ -1340,6 +1341,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { estimatedMarginalMeansTable$addColumnInfo(name = "value", type = "string", title = gettext("Level")) .maAddSubgroupColumn(estimatedMarginalMeansTable, options) estimatedMarginalMeansTable$addColumnInfo(name = "est", type = "number", title = gettext("Estimate")) + .maAddSeColumn(estimatedMarginalMeansTable, options) .maAddCiColumn(estimatedMarginalMeansTable, options) if (parameter == "effectSize") { .maAddPiColumn(estimatedMarginalMeansTable, options) @@ -1401,6 +1403,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { contrastsTable$addColumnInfo(name = "comparison", type = "string", title = gettext("Comparison")) .maAddSubgroupColumn(contrastsTable, options) contrastsTable$addColumnInfo(name = "est", type = "number", title = gettext("Estimate")) + .maAddSeColumn(contrastsTable, options) .maAddCiColumn(contrastsTable, options) if (parameter == "effectSize") { .maAddPiColumn(contrastsTable, options) @@ -2286,6 +2289,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { # remove non-requested columns predictedEffect <- predictedEffect[,c( "par", "est", + if (options[["transformEffectSize"]] == "none") "se", if (options[["confidenceIntervals"]]) c("lCi", "uCi"), if (options[["predictionIntervals"]]) c("lPi", "uPi") )] @@ -2939,7 +2943,8 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { # remove unnecessary columns - computedMarginalMeans <- computedMarginalMeans[,!colnames(computedMarginalMeans) %in% "se", drop = FALSE] + seColumnsToRemove <- if (options[["transformEffectSize"]] == "none") character(0) else "se" + computedMarginalMeans <- computedMarginalMeans[,!colnames(computedMarginalMeans) %in% seColumnsToRemove, drop = FALSE] if (!options[["confidenceIntervals"]]) computedMarginalMeans <- computedMarginalMeans[,!colnames(computedMarginalMeans) %in% c("lCi", "uCi"), drop = FALSE] @@ -3107,7 +3112,8 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { computedContrasts <- .maExtractAndFormatPrediction(computedContrasts) # remove unnecessary columns - computedContrasts <- computedContrasts[,!colnames(computedContrasts) %in% "se", drop = FALSE] + seColumnsToRemove <- if (options[["transformEffectSize"]] == "none") character(0) else "se" + computedContrasts <- computedContrasts[,!colnames(computedContrasts) %in% seColumnsToRemove, drop = FALSE] if (!options[["confidenceIntervals"]]) computedContrasts <- computedContrasts[,!colnames(computedContrasts) %in% c("lCi", "uCi"), drop = FALSE] @@ -4715,6 +4721,14 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { return(tempTable) } +.maAddSeColumn <- function(tempTable, options) { + + if (options[["transformEffectSize"]] == "none") { + tempTable$addColumnInfo(name = "se", title = gettext("SE"), type = "number") + } + + return(tempTable) +} .maAddSubgroupColumn <- function(tempTable, options) { if (options[["subgroup"]] != "") From 624b84276b2d1f82b4bc7637941367981bc58cc0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 09:29:01 +0000 Subject: [PATCH 3/7] Change SE column title to "Standard Error" with proper translation Co-authored-by: FBartos <38475991+FBartos@users.noreply.github.com> --- R/classicalmetaanalysiscommon.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/classicalmetaanalysiscommon.R b/R/classicalmetaanalysiscommon.R index b73b5f2a..74acfd6c 100644 --- a/R/classicalmetaanalysiscommon.R +++ b/R/classicalmetaanalysiscommon.R @@ -4724,7 +4724,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { .maAddSeColumn <- function(tempTable, options) { if (options[["transformEffectSize"]] == "none") { - tempTable$addColumnInfo(name = "se", title = gettext("SE"), type = "number") + tempTable$addColumnInfo(name = "se", title = gettext("Standard Error"), type = "number") } return(tempTable) From 3ae210060df7fdf4ff817021c7a99b850c154639 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 09:49:16 +0000 Subject: [PATCH 4/7] Add standardError checkbox and update dependencies Co-authored-by: FBartos <38475991+FBartos@users.noreply.github.com> --- R/classicalmetaanalysiscommon.R | 8 ++++---- .../qml_components/ClassicalMetaAnalysisStatistics.qml | 8 ++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/R/classicalmetaanalysiscommon.R b/R/classicalmetaanalysiscommon.R index 74acfd6c..a0fb42e6 100644 --- a/R/classicalmetaanalysiscommon.R +++ b/R/classicalmetaanalysiscommon.R @@ -859,7 +859,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { pooledEstimatesTable$position <- 4 pooledEstimatesTable$dependOn(c("heterogeneityTau", "heterogeneityTau2", "heterogeneityI2", "heterogeneityH2", "confidenceIntervals", "confidenceIntervalsLevel", "predictionIntervals", "transformEffectSize", - "includeFullDatasetInSubgroupAnalysis")) + "standardError", "includeFullDatasetInSubgroupAnalysis")) modelSummaryContainer[["pooledEstimatesTable"]] <- pooledEstimatesTable pooledEstimatesTable$addColumnInfo(name = "par", type = "string", title = "") @@ -1331,7 +1331,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { estimatedMarginalMeansTable$dependOn(c(switch( parameter, effectSize = c("estimatedMarginalMeansEffectSize", "estimatedMarginalMeansEffectSizeSdFactorCovariates", "estimatedMarginalMeansEffectSizeTestAgainst", - "estimatedMarginalMeansEffectSizeTestAgainstValue", "transformEffectSize", "predictionIntervals"), + "estimatedMarginalMeansEffectSizeTestAgainstValue", "transformEffectSize", "predictionIntervals", "standardError"), heterogeneity = c("estimatedMarginalMeansHeterogeneity", "estimatedMarginalMeansHeterogeneityTransformation", "estimatedMarginalMeansHeterogeneitySdFactorCovariates") ))) variableContainer[["estimatedMarginalMeansTable"]] <- estimatedMarginalMeansTable @@ -1394,7 +1394,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { contrastsTable$position <- 1 contrastsTable$dependOn(switch( parameter, - effectSize = c("contrastsEffectSize", "contrastsEffectSizePValueAdjustment", "predictionIntervals", "transformEffectSize"), + effectSize = c("contrastsEffectSize", "contrastsEffectSizePValueAdjustment", "predictionIntervals", "transformEffectSize", "standardError"), heterogeneity = c("contrastsHeterogeneity", "contrastsHeterogeneityPValueAdjustment", "estimatedMarginalMeansHeterogeneityTransformation") )) variableContainer[["contrastsTable"]] <- contrastsTable @@ -4723,7 +4723,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { } .maAddSeColumn <- function(tempTable, options) { - if (options[["transformEffectSize"]] == "none") { + if (options[["standardError"]] && options[["transformEffectSize"]] == "none") { tempTable$addColumnInfo(name = "se", title = gettext("Standard Error"), type = "number") } diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml index 803809bc..cd0d96c0 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml @@ -141,6 +141,14 @@ Section } } + CheckBox + { + text: qsTr("Standard errors") + name: "standardError" + checked: true + info: qsTr("Include standard errors in the tabular output. Only available when no effect size transformation is applied.") + } + CheckBox { text: qsTr("Prediction intervals") From 1f57ce1590606a8b1550279d5bdb33a9362c24f4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Sep 2025 11:36:25 +0000 Subject: [PATCH 5/7] Enable standardError checkbox only when transformation is not specified Co-authored-by: FBartos <38475991+FBartos@users.noreply.github.com> --- inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml index cd0d96c0..f9e7279a 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml @@ -146,6 +146,7 @@ Section text: qsTr("Standard errors") name: "standardError" checked: true + enabled: transformEffectSizeDropdown.value === "none" info: qsTr("Include standard errors in the tabular output. Only available when no effect size transformation is applied.") } @@ -160,6 +161,7 @@ Section DropDown {//TODO: make shorter or across both rows? + id: transformEffectSizeDropdown name: "transformEffectSize" label: qsTr("Transform effect size") setLabelAbove: true From cf8dab8d841d45fd72883aa4b9c1be28c221afec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Barto=C5=A1?= Date: Tue, 9 Sep 2025 14:43:49 +0200 Subject: [PATCH 6/7] styling fixes --- R/classicalmetaanalysiscommon.R | 8 ++++---- .../ClassicalMetaAnalysisStatistics.qml | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/R/classicalmetaanalysiscommon.R b/R/classicalmetaanalysiscommon.R index a0fb42e6..26665550 100644 --- a/R/classicalmetaanalysiscommon.R +++ b/R/classicalmetaanalysiscommon.R @@ -859,7 +859,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { pooledEstimatesTable$position <- 4 pooledEstimatesTable$dependOn(c("heterogeneityTau", "heterogeneityTau2", "heterogeneityI2", "heterogeneityH2", "confidenceIntervals", "confidenceIntervalsLevel", "predictionIntervals", "transformEffectSize", - "standardError", "includeFullDatasetInSubgroupAnalysis")) + "standardErrors", "includeFullDatasetInSubgroupAnalysis")) modelSummaryContainer[["pooledEstimatesTable"]] <- pooledEstimatesTable pooledEstimatesTable$addColumnInfo(name = "par", type = "string", title = "") @@ -1331,7 +1331,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { estimatedMarginalMeansTable$dependOn(c(switch( parameter, effectSize = c("estimatedMarginalMeansEffectSize", "estimatedMarginalMeansEffectSizeSdFactorCovariates", "estimatedMarginalMeansEffectSizeTestAgainst", - "estimatedMarginalMeansEffectSizeTestAgainstValue", "transformEffectSize", "predictionIntervals", "standardError"), + "estimatedMarginalMeansEffectSizeTestAgainstValue", "transformEffectSize", "predictionIntervals", "standardErrors"), heterogeneity = c("estimatedMarginalMeansHeterogeneity", "estimatedMarginalMeansHeterogeneityTransformation", "estimatedMarginalMeansHeterogeneitySdFactorCovariates") ))) variableContainer[["estimatedMarginalMeansTable"]] <- estimatedMarginalMeansTable @@ -1394,7 +1394,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { contrastsTable$position <- 1 contrastsTable$dependOn(switch( parameter, - effectSize = c("contrastsEffectSize", "contrastsEffectSizePValueAdjustment", "predictionIntervals", "transformEffectSize", "standardError"), + effectSize = c("contrastsEffectSize", "contrastsEffectSizePValueAdjustment", "predictionIntervals", "transformEffectSize", "standardErrors"), heterogeneity = c("contrastsHeterogeneity", "contrastsHeterogeneityPValueAdjustment", "estimatedMarginalMeansHeterogeneityTransformation") )) variableContainer[["contrastsTable"]] <- contrastsTable @@ -4723,7 +4723,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { } .maAddSeColumn <- function(tempTable, options) { - if (options[["standardError"]] && options[["transformEffectSize"]] == "none") { + if (options[["standardErrors"]] && options[["transformEffectSize"]] == "none") { tempTable$addColumnInfo(name = "se", title = gettext("Standard Error"), type = "number") } diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml index f9e7279a..b2d775be 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml @@ -127,6 +127,16 @@ Section Group { + + CheckBox + { + text: qsTr("Standard errors") + name: "standardErrors" + checked: true + enabled: transformEffectSizeDropdown.value === "none" + info: qsTr("Include standard errors in the tabular output. Only available when no effect size transformation is applied.") + } + CheckBox { name: "confidenceIntervals" @@ -141,15 +151,6 @@ Section } } - CheckBox - { - text: qsTr("Standard errors") - name: "standardError" - checked: true - enabled: transformEffectSizeDropdown.value === "none" - info: qsTr("Include standard errors in the tabular output. Only available when no effect size transformation is applied.") - } - CheckBox { text: qsTr("Prediction intervals") From 71586d128ce331d2ccc1ea9d6edd07ba04898352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Barto=C5=A1?= Date: Wed, 10 Sep 2025 09:45:36 +0200 Subject: [PATCH 7/7] clean up column removal --- R/classicalmetaanalysiscommon.R | 78 ++++++++++----------------------- 1 file changed, 22 insertions(+), 56 deletions(-) diff --git a/R/classicalmetaanalysiscommon.R b/R/classicalmetaanalysiscommon.R index 26665550..d7e235b6 100644 --- a/R/classicalmetaanalysiscommon.R +++ b/R/classicalmetaanalysiscommon.R @@ -31,7 +31,6 @@ # - vs covariates # Generic # - allow different covariates factoring across all settings -# - confidence interval for heterogeneity in multilevel multivariate ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { @@ -856,6 +855,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { # pooled estimates pooledEstimatesTable <- createJaspTable(gettext("Meta-Analytic Estimates")) + pooledEstimatesTable$showSpecifiedColumnsOnly <- TRUE pooledEstimatesTable$position <- 4 pooledEstimatesTable$dependOn(c("heterogeneityTau", "heterogeneityTau2", "heterogeneityI2", "heterogeneityH2", "confidenceIntervals", "confidenceIntervalsLevel", "predictionIntervals", "transformEffectSize", @@ -1034,13 +1034,13 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { effectSize = 3, heterogeneity = 4 ) - coefficientsTable$dependOn(c("metaregressionCoefficientEstimates", "confidenceIntervals", "confidenceIntervalsLevel", "includeFullDatasetInSubgroupAnalysis")) + coefficientsTable$dependOn(c("metaregressionCoefficientEstimates", "confidenceIntervals", "confidenceIntervalsLevel", "standardErrors", "includeFullDatasetInSubgroupAnalysis")) metaregressionContainer[[paste0(parameter, "CoefficientTable")]] <- coefficientsTable coefficientsTable$addColumnInfo(name = "name", type = "string", title = "") .maAddSubgroupColumn(coefficientsTable, options) coefficientsTable$addColumnInfo(name = "est", type = "number", title = gettext("Estimate")) - coefficientsTable$addColumnInfo(name = "se", type = "number", title = gettext("Standard Error")) + .maAddSeColumn(coefficientsTable, options, noTransformation = TRUE) .maAddCiColumn(coefficientsTable, options) coefficientsTable$addColumnInfo(name = "stat", type = "number", title = if(.maIsMetaregressionFtest(options)) gettext("t") else gettext("z")) if (.maIsMetaregressionFtest(options)) @@ -1328,6 +1328,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { estimatedMarginalMeansTable <- createJaspTable(if (selectedVariable == "") gettext("Adjusted Estimate") else gettext("Estimated Marginal Means")) estimatedMarginalMeansTable$position <- 1 + estimatedMarginalMeansTable$showSpecifiedColumnsOnly <- TRUE estimatedMarginalMeansTable$dependOn(c(switch( parameter, effectSize = c("estimatedMarginalMeansEffectSize", "estimatedMarginalMeansEffectSizeSdFactorCovariates", "estimatedMarginalMeansEffectSizeTestAgainst", @@ -1341,7 +1342,8 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { estimatedMarginalMeansTable$addColumnInfo(name = "value", type = "string", title = gettext("Level")) .maAddSubgroupColumn(estimatedMarginalMeansTable, options) estimatedMarginalMeansTable$addColumnInfo(name = "est", type = "number", title = gettext("Estimate")) - .maAddSeColumn(estimatedMarginalMeansTable, options) + if (parameter == "effectSize") + .maAddSeColumn(estimatedMarginalMeansTable, options) .maAddCiColumn(estimatedMarginalMeansTable, options) if (parameter == "effectSize") { .maAddPiColumn(estimatedMarginalMeansTable, options) @@ -1369,15 +1371,6 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { # reorder by estimated marginal means estimate estimatedMarginalMeans <- .maSafeOrderAndSimplify(estimatedMarginalMeans, "value", options) - # drop non-required columns - estimatedMarginalMeans <- estimatedMarginalMeans[,!colnames(estimatedMarginalMeans) %in% "variable", drop = FALSE] - if (parameter == "effectSize" && !options[["estimatedMarginalMeansEffectSizeTestAgainst"]]) - estimatedMarginalMeans <- estimatedMarginalMeans[,!colnames(estimatedMarginalMeans) %in% c("df", "stat", "pval"), drop = FALSE] - if (parameter == "heterogeneity") - estimatedMarginalMeans <- estimatedMarginalMeans[,!colnames(estimatedMarginalMeans) %in% c("lPi", "uPi"), drop = FALSE] - if (selectedVariable == "") - estimatedMarginalMeans <- estimatedMarginalMeans[,!colnames(estimatedMarginalMeans) %in% c("value"), drop = FALSE] - # set data estimatedMarginalMeansTable$setData(estimatedMarginalMeans) @@ -1392,6 +1385,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { contrastsTable <- createJaspTable(gettext("Contrasts")) contrastsTable$position <- 1 + contrastsTable$showSpecifiedColumnsOnly <- TRUE contrastsTable$dependOn(switch( parameter, effectSize = c("contrastsEffectSize", "contrastsEffectSizePValueAdjustment", "predictionIntervals", "transformEffectSize", "standardErrors"), @@ -1403,7 +1397,8 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { contrastsTable$addColumnInfo(name = "comparison", type = "string", title = gettext("Comparison")) .maAddSubgroupColumn(contrastsTable, options) contrastsTable$addColumnInfo(name = "est", type = "number", title = gettext("Estimate")) - .maAddSeColumn(contrastsTable, options) + if (parameter == "effectSize") + .maAddSeColumn(contrastsTable, options) .maAddCiColumn(contrastsTable, options) if (parameter == "effectSize") { .maAddPiColumn(contrastsTable, options) @@ -1430,10 +1425,6 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { # reorder by estimated marginal means estimate contrasts <- .maSafeOrderAndSimplify(contrasts, "comparison", options) - # drop non-required columns - if (parameter == "heterogeneity") - contrasts <- contrasts[,!colnames(contrasts) %in% c("lPi", "uPi"), drop = FALSE] - # set data contrastsTable$setData(contrasts) @@ -2286,14 +2277,6 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { .maGetEffectSizeTransformationOptions(options[["transformEffectSize"]]), list(predictedEffect[,c("est", "lCi", "uCi", "lPi", "uPi")])) - # remove non-requested columns - predictedEffect <- predictedEffect[,c( - "par", "est", - if (options[["transformEffectSize"]] == "none") "se", - if (options[["confidenceIntervals"]]) c("lCi", "uCi"), - if (options[["predictionIntervals"]]) c("lPi", "uPi") - )] - # return the tau levels if (.mammHasMultipleHeterogeneities(options, canAddOutput = TRUE) && options[["predictionIntervals"]]) predictedEffect <- cbind(predictedEffect, tauLevels) @@ -2420,6 +2403,10 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { colnames(confIntHeterogeneity) <- c("est", "lCi", "uCi") confIntHeterogeneity$par <- c("\U1D70F", "\U1D70F\U00B2", "I\U00B2", "H\U00B2") + if (options[["standardErrors"]]){ + confIntHeterogeneity$se <- c(.maGetSqrtTransformationSeDeltaMethod(fit$tau2 ,fit$se.tau2), fit$se.tau2, NA, NA) + } + # keep only the requested parameters heterogeneityShow <- c( if (options[["heterogeneityTau"]]) 1, @@ -2941,17 +2928,6 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { ) } - - # remove unnecessary columns - seColumnsToRemove <- if (options[["transformEffectSize"]] == "none") character(0) else "se" - computedMarginalMeans <- computedMarginalMeans[,!colnames(computedMarginalMeans) %in% seColumnsToRemove, drop = FALSE] - - if (!options[["confidenceIntervals"]]) - computedMarginalMeans <- computedMarginalMeans[,!colnames(computedMarginalMeans) %in% c("lCi", "uCi"), drop = FALSE] - - if (!options[["predictionIntervals"]]) - computedMarginalMeans <- computedMarginalMeans[,!colnames(computedMarginalMeans) %in% c("lPi", "uPi"), drop = FALSE] - # return the tau levels if (.mammHasMultipleHeterogeneities(options, canAddOutput = TRUE) && options[["predictionIntervals"]]) computedMarginalMeans <- cbind(computedMarginalMeans, tauLevels) @@ -3111,16 +3087,6 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { # reformat computedContrasts <- .maExtractAndFormatPrediction(computedContrasts) - # remove unnecessary columns - seColumnsToRemove <- if (options[["transformEffectSize"]] == "none") character(0) else "se" - computedContrasts <- computedContrasts[,!colnames(computedContrasts) %in% seColumnsToRemove, drop = FALSE] - - if (!options[["confidenceIntervals"]]) - computedContrasts <- computedContrasts[,!colnames(computedContrasts) %in% c("lCi", "uCi"), drop = FALSE] - - if (!options[["predictionIntervals"]]) - computedContrasts <- computedContrasts[,!colnames(computedContrasts) %in% c("lPi", "uPi"), drop = FALSE] - # TODO: ? return the tau levels # if (.mammHasMultipleHeterogeneities(options, canAddOutput = TRUE) && options[["predictionIntervals"]]) # computedMarginalMeans <- cbind(computedMarginalMeans, tauLevels) @@ -4053,6 +4019,7 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { "estimatedMarginalMeansEffectSizeSdFactorCovariates", "estimatedMarginalMeansEffectSizeAddAdjustedEstimate", + "standardErrors", "confidenceIntervals", "confidenceIntervalsLevel", "predictionIntervals", @@ -4472,12 +4439,6 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { } row$subgroup <- attr(fit, "subgroup") - row <- row[,c( - "par", "est", - if (options[["confidenceIntervals"]]) c("lCi", "uCi"), - "subgroup" - )] - return(row) } .maRowFitMeasures <- function(fit, options) { @@ -4721,9 +4682,12 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { return(tempTable) } -.maAddSeColumn <- function(tempTable, options) { +.maAddSeColumn <- function(tempTable, options, noTransformation = FALSE) { + + if (!options[["standardErrors"]]) + return(tempTable) - if (options[["standardErrors"]] && options[["transformEffectSize"]] == "none") { + if (noTransformation || options[["transformEffectSize"]] == "none") { tempTable$addColumnInfo(name = "se", title = gettext("Standard Error"), type = "number") } @@ -5028,7 +4992,9 @@ ClassicalMetaAnalysisCommon <- function(jaspResults, dataset, options, ...) { return(termsIndicies) } - +.maGetSqrtTransformationSeDeltaMethod <- function(estimate, estimate_se) { + estimate_se / (2 * sqrt(estimate)) +} # messages .maFixedEffectTextMessage <- function(options) { return(switch(