diff --git a/inst/help/ClassicalMetaAnalysis.md b/inst/help/ClassicalMetaAnalysis.md deleted file mode 100644 index 9ad5724d..00000000 --- a/inst/help/ClassicalMetaAnalysis.md +++ /dev/null @@ -1,11 +0,0 @@ -Classical Meta-Analysis -========================== - -You can read this blog to have more information about Meta Analysis. - -Additional documentation will be available in future releases of JASP. - -### R Packages ---- -- metafor -- stats diff --git a/inst/help/ClassicalMetaAnalysis_nl.md b/inst/help/ClassicalMetaAnalysis_nl.md deleted file mode 100644 index dce460fd..00000000 --- a/inst/help/ClassicalMetaAnalysis_nl.md +++ /dev/null @@ -1,11 +0,0 @@ -Klassieke Meta-Analyse -========================== - -Om meer informatie te verkrijgen over Meta-Analyses kan dit bestand worden gelezen: blog. - -Aanvullende documentatie zal beschikbaar zijn in toekomstige versies van JASP. - -### R Packages ---- -- metafor -- stats diff --git a/inst/qml/ClassicalMetaAnalysis.qml b/inst/qml/ClassicalMetaAnalysis.qml index 62e9c1e2..7a5a0fcc 100644 --- a/inst/qml/ClassicalMetaAnalysis.qml +++ b/inst/qml/ClassicalMetaAnalysis.qml @@ -40,6 +40,7 @@ Form title: qsTr("Effect Size") singleVariable: true allowedColumns: ["scale"] + info: qsTr("Variable containing the observed effect sizes.") } AssignedVariablesList { @@ -48,6 +49,7 @@ Form title: qsTr("Effect Size Standard Error") singleVariable: true allowedColumns: ["scale"] + info: qsTr("Variable containing the standard errors corresponding to the effect sizes.") } DropDown @@ -56,6 +58,7 @@ Form id: method label: qsTr("Method") startValue: "restrictedML" + info: qsTr("Method used to estimate heterogeneity (tau-squared) in the meta-analysis. The available methods depend on the inclusion of heterogeneity model terms.") values: (function() { if (sectionModel.heterogeneityModelTermsCount == 0) { return [ @@ -89,6 +92,7 @@ Form label: qsTr("Fixed effect test") startValue: "knha" values: [ "z", "t", "knha"] + info: qsTr("Method for testing the model coefficients: 'z' uses standard normal approximation, 't' uses t-distribution, and 'knha' uses the Knapp and Hartung adjustment (default).") } AssignedVariablesList @@ -98,6 +102,7 @@ Form title: qsTr("Predictors") allowedColumns: ["nominal", "scale"] allowTypeChange: true + info: qsTr("Variables to include as predictors (moderators) in the meta-regression model.") } AssignedVariablesList @@ -108,6 +113,7 @@ Form singleVariable: true enabled: !sectionAdvanced.permutationTestChecked allowedColumns: ["nominal"] + info: qsTr("Variable indicating clustering of effect sizes. This option is disabled when permutation tests are selected.") } AssignedVariablesList @@ -116,6 +122,7 @@ Form title: qsTr("Study Labels") singleVariable: true allowedColumns: ["nominal"] + info: qsTr("Variable containing labels for the studies. Used for labeling outputs and plots.") } } diff --git a/inst/qml/ClassicalMetaAnalysisMultilevelMultivariate.qml b/inst/qml/ClassicalMetaAnalysisMultilevelMultivariate.qml index 4cba766d..afddbafd 100644 --- a/inst/qml/ClassicalMetaAnalysisMultilevelMultivariate.qml +++ b/inst/qml/ClassicalMetaAnalysisMultilevelMultivariate.qml @@ -41,6 +41,7 @@ Form title: qsTr("Effect Size") singleVariable: true allowedColumns: ["scale"] + info: qsTr("Variable containing the observed effect sizes.") } AssignedVariablesList @@ -50,6 +51,7 @@ Form title: qsTr("Effect Size Standard Error") singleVariable: true allowedColumns: ["scale"] + info: qsTr("Variable containing the standard errors corresponding to the effect sizes.") } DropDown @@ -58,6 +60,7 @@ Form id: method label: qsTr("Method") startValue: "restrictedML" + info: qsTr("Method used to estimate heterogeneity in the meta-analysis.") values: [ { label: qsTr("Maximum Likelihood") , value: "maximumLikelihood"}, { label: qsTr("Restricted ML") , value: "restrictedML" } @@ -70,6 +73,7 @@ Form label: qsTr("Fixed effect test") startValue: "t" values: [ "z", "t"] + info: qsTr("Method for testing the model coefficients: 'z' uses standard normal approximation, 't' uses t-distribution.") } AssignedVariablesList @@ -78,6 +82,7 @@ Form id: predictors title: qsTr("Predictors") allowedColumns: ["nominal", "scale"] + info: qsTr("Variables to include as predictors (moderators) in the meta-regression model.") } AssignedVariablesList @@ -87,6 +92,7 @@ Form title: qsTr("Clustering") singleVariable: true allowedColumns: ["nominal"] + info: qsTr("Variable indicating clustering of effect sizes. This option is disabled when permutation tests are selected.") } AssignedVariablesList @@ -95,6 +101,7 @@ Form title: qsTr("Study Labels") singleVariable: true allowedColumns: ["nominal"] + info: qsTr("Variable containing labels for the studies. Used for labeling outputs and plots.") } } @@ -102,7 +109,8 @@ Form Section { title: qsTr("Random Effects / Model Structure") - expanded: true + expanded: true + info: qsTr("Specify the random effects structure for the meta-analysis model, including the types of random effects and their associated variables. Allows modeling of complex data structures such as multilevel, multivariate, autoregressive, spatial, and other forms of dependency.") ComponentsList { @@ -130,6 +138,7 @@ Form { id: type name: "type" + info: qsTr("Type of random effect to include in the model.") values: [ { label: qsTr("Simple"), value: "simple"}, { label: qsTr("Nested (multilevel)"), value: "nested"}, @@ -147,6 +156,7 @@ Form name: "structure" label: qsTr("Structure") visible: type.value == "structured" || type.value == "autoregressive" || type.value == "spatial" + info: qsTr("Structure of the random effect when the type is 'Structured', 'Autoregressive', or 'Spatial'. Available structures depend on the selected type.") values: (function() { if (type.value == "structured") { return [ @@ -214,6 +224,7 @@ Form visible: typeValue == "randomSlopes" listViewType: JASP.Interaction allowedColumns: ["nominal", "scale"] // this should be choose on assignment + info: qsTr("Variables to include as random slope terms in the model. Available when the random effect type is 'Random slopes'.") addAvailableVariablesToAssigned: false } @@ -223,6 +234,7 @@ Form title: qsTr("Factor Levels") visible: typeValue == "structured" singleVariable: true + info: qsTr("Variable indicating the factor levels ('Inner Term') for the structured random effect. Available when the random effect type is 'Structured'.") allowedColumns: ["nominal"] } @@ -279,6 +291,7 @@ Form visible: typeValue == "autoregressive" singleVariable: true allowedColumns: ["ordinal", "scale"] // scale for continuous time AR otherwise ordinal + info: qsTr("Variable indicating time points for an autoregressive random effects structure. Available when the random effect type is 'Autoregressive'.") } AssignedVariablesList @@ -287,6 +300,7 @@ Form title: qsTr("Spatial Coordinates") visible: typeValue == "spatial" && distanceMetric.value != "greatCircle" && distanceMetric.value != "loadFromFile" allowedColumns: ["scale"] + info: qsTr("Variables representing spatial coordinates for a spatial random effects structure. Available when the random effect type is 'Spatial' and the distance metric is not 'Great-circle' or prespecified in a file.") } AssignedVariablesList @@ -296,6 +310,7 @@ Form visible: typeValue == "spatial" && distanceMetric.value == "greatCircle" allowedColumns: ["scale"] singleVariable: true + info: qsTr("Variable representing longitude (in decimal degrees, with minus signs for West) for a spatial random effects structure using the 'Great-circle' distance metric. Available when the random effect type is 'Spatial' and the distance metric is 'Great-circle'.") } AssignedVariablesList @@ -305,6 +320,7 @@ Form visible: typeValue == "spatial" && distanceMetric.value == "greatCircle" allowedColumns: ["scale"] singleVariable: true + info: qsTr("Variable representing latitude (in decimal degrees, with minus signs for South) for a spatial random effects structure using the 'Great-circle' distance metric. Available when the random effect type is 'Spatial' and the distance metric is 'Great-circle'.") } AssignedVariablesList @@ -314,6 +330,7 @@ Form visible: typeValue == "spatial" && distanceMetric.value == "loadFromFile" allowedColumns: ["nominal"] singleVariable: true + info: qsTr("Variable identifying locations when loading distances matrix from a file for a spatial random effects structure. The location corresponds to the row and column names of the distance matrix. The names cannot start with a number.") } AssignedVariablesList @@ -323,6 +340,7 @@ Form visible: typeValue != "nested" singleVariable: true allowedColumns: ["nominal"] + info: qsTr("Grouping variable specifying which observations share the same random effect ('Outer Term'). Available for random effect types other than 'Nested (Multilevel)'. The 'Grouping Factor' is not required for 'Spatial' Random Effects.") } } @@ -332,6 +350,7 @@ Form id: distanceMetric label: qsTr("Distance metric") visible: typeValue == "spatial" + info: qsTr("Distance metric used to calculate distances in a spatial random effects structure. Available when the random effect type is 'Spatial'.") values: [ { label: qsTr("Euclidean"), value: "euclidean" }, { label: qsTr("Manhattan"), value: "manhattan" }, @@ -348,6 +367,8 @@ Form visible: typeValue == "spatial" && distanceMetric.value == "loadFromFile" filter: "*.csv" save: false + info: qsTr("CSV file containing the distance matrix for the spatial random effects structure. The first row and the first column of the file must contain names that map the matrix entries to the 'Location Identifier' (the names cannot start with a number). Available when the random effect type is 'Spatial' and the distance metric is loaded from a file.") + } FileSelector @@ -357,6 +378,7 @@ Form visible: typeValue == "knownCorrelation" filter: "*.csv" save: false + info: qsTr("CSV file containing the known correlation matrix for the random effects structure. The first row and the first column of the file must contain names that map the matrix entries to the 'Grouping Factor' (the names cannot start with a number). Available when the random effect type is 'Known correlation'.") } Divider { } diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisAdvanced.qml b/inst/qml/qml_components/ClassicalMetaAnalysisAdvanced.qml index 50a4d6b1..f81116ca 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisAdvanced.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisAdvanced.qml @@ -27,6 +27,7 @@ Section property string module: "metaAnalysis" columns: 1 + info: qsTr("Advanced options for the meta-analysis, including optimization settings, clustering, and permutation tests.") property alias permutationTestChecked: permutationTest.checked @@ -42,6 +43,7 @@ Section name: "showMetaforRCode" text: qsTr("Show metafor R code") Layout.preferredWidth: 300 * jaspTheme.uiScale + info: qsTr("Display the underlying R code used by the metafor package to fit the model.") } CheckBox @@ -49,6 +51,7 @@ Section name: "weightedEstimation" text: qsTr("Weighted estimation") checked: true + info: qsTr("Perform weighted estimation using inverse-variance weights. Uncheck for unweighted estimation.") } Group @@ -61,6 +64,7 @@ Section name: "clusteringUseClubSandwich" text: qsTr("Use clubSandwich") checked: true + info: qsTr("Use the clubSandwich package for robust variance estimation in clustered data. Enabled when a clustering variable is specified.") } CheckBox @@ -68,6 +72,7 @@ Section name: "clusteringSmallSampleCorrection" text: qsTr("Small sample correction") checked: true + info: qsTr("Apply a small-sample correction to the clustered standard errors.") } } @@ -81,6 +86,7 @@ Section name: "useSparseMatricies" text: qsTr("Use sparse matricies") checked: false + info: qsTr("Use sparse matrix representations to speed up computations in models with large datasets or complex random effects structures. Available in multilevel/multivariate meta-analysis.") } CheckBox @@ -88,6 +94,7 @@ Section name: "computeCovarianceMatrix" text: qsTr("Compute covariance matrix") checked: true + info: qsTr("Compute the covariance matrix of the parameter estimates. Available in multilevel/multivariate meta-analysis.") } } } @@ -103,6 +110,7 @@ Section text: qsTr("𝜏²") enabled: sectionModel.heterogeneityModelTermsCount == 0 childrenOnSameRow: true + info: qsTr("Fix the value of 𝜏² in the model instead of estimating it. Unavailable in multilevel/multivariate meta-analysis or with meta-regression model for heterogeneity. A more complex heterogeneity terms in the multilevel/multivariate meta-analysis can be fixed via the 'Extend metafor call' option.") FormulaField { @@ -119,6 +127,7 @@ Section name: "fixParametersWeights" text: qsTr("Weights") childrenOnSameRow: true + info: qsTr("Use custom weights for the effect sizes instead of inverse-variance weights.") DropDown { @@ -142,12 +151,14 @@ Section name: "addOmnibusModeratorTestEffectSizeCoefficients" enabled: sectionModel.effectSizeModelTermsCount > 0 childrenOnSameRow: false + info: qsTr("Include an omnibus test for the specified effect size regression coefficients. Available when effect size model terms are included. The coefficients should be selected via their comma-separated indicies which correspond to the order presented in the 'Effect Size Meta-Regression Coefficients' Table.") TextField { label: "" name: "addOmnibusModeratorTestEffectSizeCoefficientsValues" value: "(1, 2)" + info: qsTr("Specify the indices of the effect size meta-regression coefficients to include in the omnibus test, e.g. '(1, 2)' for the first and the second coefficient.") } } @@ -158,12 +169,14 @@ Section enabled: sectionModel.heterogeneityModelTermsCount > 0 childrenOnSameRow: false visible: module == "metaAnalysis" + info: qsTr("Include an omnibus test for the specified heterogeneity regression coefficients. Available when heterogeneity model terms are included. The coefficients should be selected via their comma-separated indicies which correspond to the order presented in the 'Heterogeneity Meta-Regression Coefficients' Table.") TextField { label: "" name: "addOmnibusModeratorTestHeterogeneityCoefficientsValues" value: "(1, 2)" + info: qsTr("Specify the indices of the heterogeneity meta-regression coefficients to include in the omnibus test, e.g. '(1, 2)' for the first and the second coefficient.") } } } @@ -174,12 +187,14 @@ Section enabled: method.value == "restrictedML" || method.value == "maximumLikelihood" || method.value == "empiricalBayes" || method.value == "pauleMandel" || method.value == "pauleMandelMu" || method.value == "qeneralizedQStatMu" || method.value == "sidikJonkman" + info: qsTr("Optimizer settings for estimating the meta-analytic models. A more complex/unavailbe settings can be specified via the 'Extend metafor call' option.") DropDown { name: "optimizerMethod" id: optimizerMethod label: qsTr("Method") // TODO: switch default value on heterogeneityModelLink change + info: qsTr("Select the optimization method to use for fitting the model. Available in multilevel/multivariate meta-analysis or when heterogeneity model terms are included.") values: { if (module == "metaAnalysis") { if (sectionModel.heterogeneityModelLinkValue == "log") @@ -200,6 +215,7 @@ Section text: qsTr("Initial 𝜏²") checked: false childrenOnSameRow: true + info: qsTr("Specify the initial value of 𝜏² for the optimization algorithm. Available only for specific optimization methods and unavailable in multilevel/multivariate meta-analysis or when heterogeneity model terms are included.") visible: (method.value == "restrictedML" || method.value == "maximumLikelihood" || method.value == "empiricalBayes" || method.value == "sidikJonkman") && sectionModel.heterogeneityModelTermsCount == 0 && module == "metaAnalysis" @@ -219,6 +235,7 @@ Section text: qsTr("Minimum 𝜏²") checked: false childrenOnSameRow: true + info: qsTr("Specify the minimum allowable value of 𝜏² during optimization. Available only for specific optimization methods and unavailable in multilevel/multivariate meta-analysis or when heterogeneity model terms are included.") visible: (method.value == "pauleMandel" || method.value == "pauleMandelMu" || method.value == "qeneralizedQStatMu") && sectionModel.heterogeneityModelTermsCount == 0 && module == "metaAnalysis" @@ -239,6 +256,7 @@ Section text: qsTr("Maximum 𝜏²") checked: false childrenOnSameRow: true + info: qsTr("Specify the maximim allowable value of 𝜏² during optimization. Available only for specific optimization methods and unavailable in multilevel/multivariate meta-analysis or when heterogeneity model terms are included.") visible: ((method.value == "pauleMandel" || method.value == "pauleMandelMu" || method.value == "qeneralizedQStatMu") && sectionModel.heterogeneityModelTermsCount == 0 && module == "metaAnalysis") @@ -259,6 +277,7 @@ Section text: qsTr("Maximum evaluations") checked: false childrenOnSameRow: true + info: qsTr("Set the maximum number of function evaluations for the optimizer. Available when using specific optimization methods in multilevel/multivariate meta-analysis.") visible: (optimizerMethod.value == "nlminb" || optimizerMethod.value == "uobyqa" || optimizerMethod.value == "newuoa" || optimizerMethod.value == "bobyqa" || optimizerMethod.value == "hjk" || optimizerMethod.value == "nmk" || optimizerMethod.value == "mads") && module == "metaAnalysisMultilevelMultivariate" @@ -278,6 +297,7 @@ Section text: qsTr("Maximum iterations") checked: false childrenOnSameRow: true + info: qsTr("Set the maximum number of iterations for the optimizer. Available when using certain estimation or optimization methods.") visible: ((method.value == "restrictedML" || method.value == "maximumLikelihood" || method.value == "empiricalBayes" || method.value == "pauleMandel" || method.value == "pauleMandelMu" || method.value == "qeneralizedQStatMu") && module == "metaAnalysis") || ((optimizerMethod.value == "nlminb" || optimizerMethod.value == "Nelder-Mead" || optimizerMethod.value == "BFGS" || @@ -304,6 +324,7 @@ Section text: qsTr("Convergence tolerance") checked: false childrenOnSameRow: true + info: qsTr("Set the convergence tolerance for the optimizer. Available when using certain methods without heterogeneity model terms or specific optimizers in multilevel/multivariate meta-analysis.") visible: ((method.value == "restrictedML" || method.value == "maximumLikelihood" || method.value == "empiricalBayes" || method.value == "pauleMandel" || method.value == "pauleMandelMu" || method.value == "qeneralizedQStatMu") && sectionModel.heterogeneityModelTermsCount == 0 && module == "metaAnalysis") || @@ -332,6 +353,7 @@ Section text: qsTr("Convergence relative tolerance") checked: false childrenOnSameRow: true + info: qsTr("Set the relative convergence tolerance for the optimizer. Available when heterogeneity model terms are included or using specific optimizers in multilevel/multivariate meta-analysis.") visible: (sectionModel.heterogeneityModelTermsCount > 0 && module == "metaAnalysis") || ((optimizerMethod.value == "nlminb" || optimizerMethod.value == "Nelder-Mead" || optimizerMethod.value == "BFGS") && module == "metaAnalysisMultilevelMultivariate") @@ -351,6 +373,7 @@ Section text: qsTr("Step adjustment") checked: false childrenOnSameRow: true + info: qsTr("Set the step adjustment factor for the optimizer. Available when using certain methods without heterogeneity model terms and unavailable in multilevel/multivariate meta-analysis.") visible: ((method.value == "restrictedML" || method.value == "maximumLikelihood" || method.value == "empiricalBayes") && sectionModel.heterogeneityModelTermsCount == 0 && module == "metaAnalysis") @@ -371,6 +394,7 @@ Section text: qsTr("Initial trust region radius") checked: false childrenOnSameRow: true + info: qsTr("Set the initial trust region radius for the optimizer. Available when using specific optimization methods in multilevel/multivariate meta-analysis.") visible: ((optimizerMethod.value == "uobyqa" || optimizerMethod.value == "newuoa" || optimizerMethod.value == "bobyqa") && module == "metaAnalysisMultilevelMultivariate") DoubleField @@ -389,6 +413,7 @@ Section text: qsTr("Final trust region radius") checked: false childrenOnSameRow: true + info: qsTr("Set the final trust region radius for the optimizer. Available when using specific optimization methods in multilevel/multivariate meta-analysis.") visible: ((optimizerMethod.value == "uobyqa" || optimizerMethod.value == "newuoa" || optimizerMethod.value == "bobyqa") && module == "metaAnalysisMultilevelMultivariate") DoubleField @@ -407,6 +432,7 @@ Section text: qsTr("Maximum restarts") checked: false childrenOnSameRow: true + info: qsTr("Set the maximum number of restarts for the optimizer. Available when using the Nelder-Mead method ('nmk') in multilevel/multivariate meta-analysis.") visible: optimizerMethod.value == "mmk" && module == "metaAnalysisMultilevelMultivariate" IntegerField @@ -427,6 +453,8 @@ Section id: permutationTest visible: module == "metaAnalysis" enabled: clustering.count == 0 + info: qsTr("Perform a permutation test for the model coefficients. Available in the meta-analysis module when clustering is not specified. The resulting permuation p-values are displayed in the 'p (permutation)' column. Note that permutation can be computationally intesive.") + RadioButtonGroup { @@ -434,6 +462,7 @@ Section title: qsTr("Type") columns: 2 radioButtonsOnSameRow: true + info: qsTr("Select the type of permutation test.") RadioButton { @@ -461,6 +490,7 @@ Section value: 1000 min: 10 inclusive: JASP.None + info: qsTr("Specify the number of permutations to use in the approximate permutation test.") } SetSeed{} @@ -475,11 +505,13 @@ Section id: advancedExtendMetaforCall text: qsTr("Extend metafor call") checked: false + info: qsTr("Allow adding custom arguments to the metafor function call. Consult the metafor R package documentation for the available commands (https://wviechtb.github.io/metafor/reference/rma.uni.html and https://wviechtb.github.io/metafor/reference/rma.mv.html).") } TextArea { name: "advancedExtendMetaforCallCode" visible: advancedExtendMetaforCall.checked + info: qsTr("The additional arguments to the metafor function call must be specified as a named list (the 'list()' call can be ommited). E.g., 'list(tau2 = 1)' (or 'tau2 = 1') can be used to fix the between-study heterogeneity to a given value. Multiple arguments must be comma-seprated, e.g. 'list(tau2 = 1, gamma2 = 0.5)' (or 'tau2 = 1, gamma2 = 0.5'). New lines are ignored." ) } } \ No newline at end of file diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisBubblePlot.qml b/inst/qml/qml_components/ClassicalMetaAnalysisBubblePlot.qml index a53da5d2..bef0f0d1 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisBubblePlot.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisBubblePlot.qml @@ -25,6 +25,7 @@ Section { title: qsTr("Bubble Plot") property string module: "metaAnalysis" + info: qsTr("Options for visualizing the estimated effect sizes at different levels of the predictors with the observed estimates visualized as bubbles. Continuous predictors can be split into three bins with cutoffs at ±x standard deviations from the mean. Predictors that are not specified for either the x-axis, lines, or plots are averaged over.") VariablesForm { @@ -33,7 +34,7 @@ Section AvailableVariablesList { name: "bubblePlotModelVariables" - title: qsTr("Model variables") + title: qsTr("Model Variables") source: [{ name: "effectSizeModelTerms", use: "noInteraction" }] } @@ -41,9 +42,10 @@ Section { name: "bubblePlotSelectedVariable" id: bubblePlotSelectedVariable - title: qsTr("Selected variable") + title: qsTr("Selected Variable") singleVariable: true allowTypeChange:false + info: qsTr("Variable to be visualized at the x-axis.") } AssignedVariablesList @@ -52,6 +54,7 @@ Section id: bubblePlotSeparateLines title: qsTr("Separate Lines") allowTypeChange:false + info: qsTr("Variable(s) according to which predictions are split across different lines.") } AssignedVariablesList @@ -60,6 +63,7 @@ Section id: bubblePlotSeparatePlots title: qsTr("Separate Plots") allowTypeChange:false + info: qsTr("Variable(s) according to which predictions are split across different plots.") } } @@ -77,6 +81,7 @@ Section min: 0 enabled: bubblePlotSeparateLines.columnsTypes.includes("scale") || bubblePlotSeparatePlots.columnsTypes.includes("scale") Layout.preferredWidth: 300 * jaspTheme.uiScale + info: qsTr("Standard deviation cutoff used for binning continuous covariates.") } Group @@ -87,6 +92,7 @@ Section { name: "bubblePlotBubblesSize" label: qsTr("Size") + info: qsTr("Options for determining the size of the observed estimates.") values: [ { label: qsTr("Weight") , value: "weight"}, { label: qsTr("Inverse variance") , value: "inverseVariance" }, @@ -101,6 +107,7 @@ Section defaultValue: 1 min: 0 inclusive: JASP.None + info: qsTr("Set the relative size of the observed estimates.") } DoubleField @@ -111,6 +118,7 @@ Section min: 0 max: 1 inclusive: JASP.None + info: qsTr("Set the transparency of the observed estimates.") } DoubleField @@ -120,6 +128,7 @@ Section label: qsTr("Jitter") defaultValue: 1 min: 0 + info: qsTr("Set the degree of x-coordinate jitter of the observed estimates. Available when the x-axis variable is nominal.") } } } @@ -131,6 +140,7 @@ Section name: "bubblePlotConfidenceIntervals" label: qsTr("Condifence intervals") checked: true + info: qsTr("Include confidence interval of the estimated effect sizes.") DoubleField { @@ -148,6 +158,7 @@ Section name: "bubblePlotPredictionIntervals" label: qsTr("Prediction intervals") checked: true + info: qsTr("Include prediction interval of the estimated effect sizes.") DoubleField { @@ -172,6 +183,7 @@ Section id: bubblePlotTheme label: qsTr("Theme") startValue: "jasp" + info: qsTr("Set theme of the bubble plot.") values: [ { label: "JASP", value: "jasp"}, @@ -191,12 +203,14 @@ Section defaultValue: 1.5 min: 0 inclusive: JASP.None + info: qsTr("Adjust the text size of the bubble plot.") } DropDown { name: "bubblePlotLegendPosition" label: qsTr("Legend position") + info: qsTr("Set legend of the bubble plot.") startValue: "right" values: [ diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisDiagnostics.qml b/inst/qml/qml_components/ClassicalMetaAnalysisDiagnostics.qml index 2d5bace3..b110c964 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisDiagnostics.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisDiagnostics.qml @@ -26,6 +26,7 @@ Section title: qsTr("Diagnostics") property string module: "metaAnalysis" columns: 1 + info: qsTr("Options for evaluating the influence of individual studies and assessing model diagnostics, including variance inflation factors, casewise diagnostics, and diagnostic plots.") Group { @@ -39,12 +40,14 @@ Section text: qsTr("Variace inflation factor") Layout.preferredWidth: 300 * jaspTheme.uiScale enabled: predictors.count > 0 + info: qsTr("Include variance inflation factors to assess multicollinearity among predictors. Available when predictors are included in the model.") CheckBox { name: "diagnosticsVarianceInflationFactorAggregate" text: qsTr("Aggregate by terms") checked: true + info: qsTr("Aggregate variance inflation factors by terms instead of individual coefficients.") } } @@ -52,45 +55,55 @@ Section { name: "diagnosticsCasewiseDiagnostics" text: qsTr("Casewise diagnostics") + info: qsTr("Include casewise diagnostics to assess the influence of individual studies on the meta-analysis results.") CheckBox { name: "diagnosticsCasewiseDiagnosticsShowInfluentialOnly" text: qsTr("Show influential only") visible: module == "metaAnalysis" + info: qsTr("Show only the influential studies in the casewise diagnostics. Unvailable when performing multilevel/multivariate meta-analysis.") } CheckBox { name: "diagnosticsCasewiseDiagnosticsIncludePredictors" text: qsTr("Include predictors") + info: qsTr("Include predictor variables in the casewise diagnostics output.") } CheckBox { name: "diagnosticsCasewiseDiagnosticsDifferenceInCoefficients" text: qsTr("Difference in coefficients") + info: qsTr("Include the differences in model coefficients when each study is excluded (DFBETAS).") } CheckBox { name: "diagnosticsCasewiseDiagnosticsExportToDataset" text: qsTr("Export to dataset") + info: qsTr("Export the casewise diagnostics results to the dataset.") CheckBox { name: "diagnosticsCasewiseDiagnosticsExportToDatasetInfluentialIndicatorOnly" text: qsTr("Influential indicator only") checked: true + visible: module == "metaAnalysis" + info: qsTr("Export only the indicator of influential cases to the dataset.") } } + /* CheckBox { name: "diagnosticsCasewiseDiagnosticsRerunWithoutInfluentialCases" text: qsTr("Rerun without influential cases") visible: false + info: qsTr("Option to rerun the analysis without influential cases.") } + */ } } @@ -102,6 +115,7 @@ Section { name: "diagnosticsPlotsProfileLikelihood" text: qsTr("Profile likelihood") + info: qsTr("Include a profile likelihood plot for the heterogeneity parameter (τ²).") } CheckBox @@ -109,12 +123,14 @@ Section name: "diagnosticsPlotsBaujat" text: qsTr("Baujat") visible: module == "metaAnalysis" + info: qsTr("Include a Baujat plot to detect studies contributing to heterogeneity and overall effect size. Unvailable when performing multilevel/multivariate meta-analysis.") } CheckBox { name: "diagnosticsResidualFunnel" text: qsTr("Residual funnel") + info: qsTr("Include a residual funnel plot.") } } } diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisEstimatedMarginalMeans.qml b/inst/qml/qml_components/ClassicalMetaAnalysisEstimatedMarginalMeans.qml index 20e12ab5..85cf9453 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisEstimatedMarginalMeans.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisEstimatedMarginalMeans.qml @@ -26,6 +26,7 @@ Section title: qsTr("Estimated Marginal Means") columns: 1 property string module: "metaAnalysis" + info: qsTr("Options to compute estimated marginal means (EMMs) for the effect size and heterogeneity models, allowing examination of predicted values at specific levels of moderators.") Group { @@ -49,6 +50,7 @@ Section name: "estimatedMarginalMeansEffectSizeSelectedVariables" title: qsTr("Selected variables") allowTypeChange:false + info: qsTr("Variables selected for computing estimated marginal means in the effect size model.") } } @@ -64,12 +66,14 @@ Section min: 0 enabled: estimatedMarginalMeansEffectSizeSelectedVariables.columnsTypes.includes("scale") Layout.preferredWidth: 350 * jaspTheme.uiScale + info: qsTr("Standard deviation factor for covariates when computing estimated marginal means; applies to scale variables.") } CheckBox { name: "estimatedMarginalMeansEffectSizeAddAdjustedEstimate" label: qsTr("Add adjusted estimate") + info: qsTr("Include the adjusted effect estimate, which accounts for the moderators in the meta-regression model. This provides the effect size adjusted for the influence of moderators, as opposed to the pooled effect which combines the estimates across all studies.") } CheckBox @@ -77,6 +81,7 @@ Section name: "estimatedMarginalMeansEffectSizeTestAgainst" label: qsTr("Test against") childrenOnSameRow: true + info: qsTr("Option to test the estimated marginal means against a specific value.") DoubleField { @@ -110,6 +115,7 @@ Section name: "estimatedMarginalMeansHeterogeneitySelectedVariables" title: qsTr("Selected variables") allowTypeChange:false + info: qsTr("Variables selected for computing estimated marginal means in the heterogeneity model. Unvailable when performing multilevel/multivariate meta-analysis.") } } @@ -125,18 +131,21 @@ Section min: 0 enabled: estimatedMarginalMeansHeterogeneitySelectedVariables.columnsTypes.includes("scale") Layout.preferredWidth: 350 * jaspTheme.uiScale + info: qsTr("Standard deviation factor for covariates when computing estimated marginal means; applies to scale variables.") } CheckBox { name: "estimatedMarginalMeansHeterogeneityAddAdjustedEstimate" label: qsTr("Add adjusted estimate") + info: qsTr("Include the adjusted heterogeneity estimate, which accounts for the moderators in the heterogeneity meta-regression model. This provides the heterogeneity estimate adjusted for the influence of moderators, as opposed to the pooled heterogeneity estimate which combines the heterogeneity estimates across all studies.") } DropDown { name: "estimatedMarginalMeansHeterogeneityTransformation" label: qsTr("Heterogeneity transformation") + info: qsTr("Transformation to apply to the heterogeneity estimate: tau (𝜏) or tau-squared (𝜏²).") values: [ { label: qsTr("𝜏") , value: "tau" }, { label: qsTr("𝜏²") , value: "tau2" } diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisModel.qml b/inst/qml/qml_components/ClassicalMetaAnalysisModel.qml index afaf93f5..4b37828b 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisModel.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisModel.qml @@ -36,6 +36,7 @@ Section Group { title: qsTr("Effect size model") + info: qsTr("Specify the effect size and heterogeneity models for the meta-analysis, including model terms, intercepts, and link functions.") VariablesForm { @@ -55,6 +56,7 @@ Section title: qsTr("Model Terms") listViewType: JASP.Interaction allowTypeChange:false + info: qsTr("Variables assigned as model terms in the effect size model.") } } @@ -63,6 +65,7 @@ Section name: "effectSizeModelIncludeIntercept" label: qsTr("Include intercept") checked: true + info: qsTr("Include an intercept in the effect size model.") } } @@ -71,6 +74,7 @@ Section title: qsTr("Heterogeneity model") visible: module =="metaAnalysis" columns: 2 + info: qsTr("Unvailable when performing multilevel/multivariate meta-analysis.") VariablesForm { @@ -91,6 +95,7 @@ Section listViewType: JASP.Interaction allowTypeChange:false addAvailableVariablesToAssigned: false + info: qsTr("Variables assigned as model terms in the heterogeneity model. Specifying a heterogeneity model results in a 'location-scale' meta-analytic model.") } } @@ -99,6 +104,7 @@ Section name: "heterogeneityModelIncludeIntercept"; label: qsTr("Include intercept") checked: true + info: qsTr("Include an intercept in the heterogeneity model.") } DropDown @@ -107,6 +113,7 @@ Section id: heterogeneityModelLink label: qsTr("Link") values: ["log", "identity"] + info: qsTr("Link function used in the heterogeneity model: 'log' or 'identity'.") } } } diff --git a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml index 419ceba6..a123f1e2 100644 --- a/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml +++ b/inst/qml/qml_components/ClassicalMetaAnalysisStatistics.qml @@ -26,6 +26,7 @@ Section title: qsTr("Statistics") columns: 2 property string module: "metaAnalysis" + info: qsTr("Options for summarizing the meta-analytic results.") Group { @@ -33,12 +34,14 @@ Section columns: 2 enabled: method.value != "fixedEffects" && method.value != "equalEffects" visible: module == "metaAnalysis" + info: qsTr("Summarize the meta-analytic between-study heterogeneity. Unvailable when performing multilevel/multivariate meta-analysis.") CheckBox { text: qsTr("𝜏") name: "heterogeneityTau" checked: true + info: qsTr("Include 𝜏, the square root of the estimated between-study variance.") } CheckBox @@ -46,6 +49,7 @@ Section text: qsTr("𝜏²") name: "heterogeneityTau2" checked: true + info: qsTr("Include 𝜏², the estimated between-study variance.") } CheckBox @@ -53,6 +57,7 @@ Section text: qsTr("I²") name: "heterogeneityI2" checked: false + info: qsTr("Include I², the percentage of total variation across studies due to heterogeneity.") } CheckBox @@ -60,6 +65,7 @@ Section text: qsTr("H²") name: "heterogeneityH2" checked: false + info: qsTr("Include H², an index indicating the ratio of total variability to sampling variability.") } } @@ -67,12 +73,14 @@ Section { title: qsTr("Random Effects / Model Structure") visible: module == "metaAnalysisMultilevelMultivariate" + info: qsTr("Available when performing multilevel/multivariate meta-analysis.") CheckBox { text: qsTr("Test inclusion") name: "randomEffectsTestInclusion" checked: false + info: qsTr("Test the inclusion of the individual Random Effects / Model Structure components. The test compares the complete model (i.e., including all components) with a model without one of the specified Random Effects / Model Structure components at a time.") } /* TODO: will require a lot of work in sorting out which value belongs where CheckBox @@ -88,12 +96,14 @@ Section { title: qsTr("Meta-Regression") enabled: predictors.count > 0 + info: qsTr("Create summaries of the meta-regression. Available when predictors are included.") CheckBox { name: "metaregressionTermTests" text: qsTr("Term tests") checked: true + info: qsTr("Include tests for each term in the meta-regression model.") } CheckBox @@ -101,6 +111,7 @@ Section name: "metaregressionCoefficientEstimates" text: qsTr("Coefficient estimates") checked: true + info: qsTr("Include estimates of the regression coefficients in the meta-regression model.") } CheckBox @@ -108,6 +119,7 @@ Section name: "metaregressionCoefficientCorrelationMatrix" text: qsTr("Coefficient correlation matrix") checked: false + info: qsTr("Include the correlation matrix of the regression coefficients.") } } @@ -119,6 +131,7 @@ Section text: qsTr("Confidence intervals") checked: true childrenOnSameRow: true + info: qsTr("Include confidence intervals in the tabular output.") CIField { @@ -131,6 +144,7 @@ Section text: qsTr("Prediction intervals") name: "predictionIntervals" checked: true + info: qsTr("Include prediction intervals in the tabular output.") } DropDown @@ -138,6 +152,7 @@ Section name: "transformEffectSize" label: qsTr("Transform effect size") setLabelAbove: true + info: qsTr("Select a transformation to apply to the effect size estimates in the output. This transformation applies to the 'Meta-Analytic Estimates Table', 'Estimated Marginal Means Table', 'Forest Plot', and the 'Bubble Plot'. The 'Meta-Regression Coeffient Estimates' are not transformed.") values: [ { label: qsTr("None") , value: "none" }, // NULL { label: qsTr("Fisher's z to r") , value: "fishersZToCorrelation" }, // transf.ztor @@ -162,6 +177,7 @@ Section { name: "fitMeasures" text: qsTr("Fit measures") + info: qsTr("Include fit statistics for the model, such as AIC and BIC.") } } \ No newline at end of file