From bb4816f46edaf49145cfa636dcf330c516e7749b Mon Sep 17 00:00:00 2001 From: joaquin Date: Mon, 7 Jul 2025 23:06:27 -0400 Subject: [PATCH 1/5] Added info fields to classical linear mixed models and generalized linear mixed models. --- inst/qml/MixedModelsGLMM.qml | 73 ++++++++++++++----------- inst/qml/MixedModelsLMM.qml | 76 +++++++++++++++----------- inst/qml/common/MixedModelsModel.qml | 6 +- inst/qml/common/MixedModelsOptions.qml | 21 ++++--- inst/qml/common/MixedModelsPlots.qml | 30 +++++----- 5 files changed, 116 insertions(+), 90 deletions(-) diff --git a/inst/qml/MixedModelsGLMM.qml b/inst/qml/MixedModelsGLMM.qml index 98de4c3..a7a5a1b 100644 --- a/inst/qml/MixedModelsGLMM.qml +++ b/inst/qml/MixedModelsGLMM.qml @@ -22,6 +22,15 @@ import JASP.Controls import "./common" as MM Form { + info: qsTr("Generalized Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). They are generalization of Linear Mixed Models and allow to model response variables that are not continous using a different likelihoods and link functions.") + "\n" + + "## " + qsTr("Assumptions") + "\n" + + "- " + qsTr("Linearity and additivity: The response variable is related to all predictors according to the link function and the effects of the predictors are additive on the linear scale.") + "\n" + + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + + "- " + qsTr("Distribution of errors: The errors are distributed according to the distributional family.") + "\n" + + qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast enconding for the analysis use Factor contrast dropdown in the Options section.") + "\n" + + qsTr("The analysis uses a long data format.") + id: form Formula @@ -43,7 +52,7 @@ Form { AssignedVariablesList { name: "dependent" - title: qsTr("Dependent variable") + title: qsTr("Dependent variable"); info: qsTr("Dependent (response) variable.") allowedColumns: ["nominal", "scale"] allowTypeChange: true singleVariable: true @@ -53,7 +62,7 @@ Form { { visible: active name: "dependentAggregation" - title: qsTr("Number of trials") + title: qsTr("Number of trials"); info: qsTr("Number of trials, only applicable if Binomial (aggregated) family is selected.") singleVariable: true allowedColumns: ["scale"] @@ -66,7 +75,7 @@ Form { AssignedVariablesList { name: "fixedVariables" - title: qsTr("Fixed effects variables") + title: qsTr("Fixed effects variables"); info: qsTr(" Variables used as the fixed effects predictors (the model terms can be specified under Model section). These are usually the variables of primary scientific interest.") allowedColumns: ["nominal", "scale"] allowTypeChange: true } @@ -74,7 +83,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels should not be used as random effects grouping factors. Moreover, the number of levels of the random effects grouping factors determines the power of the test of the fixed effects. The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined maximal random effects structure justified by the design.") allowedColumns: ["nominal"] } } @@ -85,7 +94,7 @@ Form { DropDown { name: "family" - label: qsTr("Family") + label: qsTr("Family"); info: qsTr("Distribution function which likelihood will be used for the dependent variable. The following options are available:") id: family indexDefaultValue: 0 values: @@ -136,7 +145,7 @@ Form { { id: link name: "link" - title: qsTr("Link") + title: qsTr("Link"); info: qsTr("Link function that will be used to model the mean parameter of the selected distribution function.") radioButtonsOnSameRow: true RadioButton @@ -223,7 +232,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsMeans" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables that can be used for computing estimated marginal means.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -231,7 +240,7 @@ Form { { id: marginalMeans name: "marginalMeansTerms" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables for which the estimated marginal means will be computed.") } } @@ -259,7 +268,7 @@ Form { { name: "marginalMeansComparison" id: marginalMeansCompare - label: qsTr("Compare marginal means to:") + label: qsTr("Compare marginal means to:"); info: qsTr("Value to which will be the estimated marginal means compared.") } DoubleField @@ -272,7 +281,7 @@ Form { CheckBox { name: "marginalMeansResponse" - label: qsTr("Response scale") + label: qsTr("Response scale"); info: qsTr("Whether the estimated marginal means should be computed on the response scale or untransformed linear scale. The response scale is selected by default.") checked: true } @@ -280,22 +289,22 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") } DropDown { name: "marginalMeansPAdjustment" - label: qsTr("P-value adjustment") + label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", value: "holm"}, - { label: qsTr("Multivariate-t"), value: "mvt"}, - { label: "Scheffé", value: "scheffe"}, - { label: "Tukey", value: "tukey"}, - { label: qsTr("None"), value: "none"}, - { label: "Bonferroni", value: "bonferroni"}, - { label: "Hommel", value: "hommel"} + { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr("Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, + { label: "Bonferroni", info: qsTr("this correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } @@ -321,7 +330,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends1" - title: qsTr("Continous variables") + title: qsTr("Continous variables"); info: qsTr(" Continuous fixed effects variables that can be used for estimating the conditional slopes.") source: [ { name: "fixedEffects", use: "type=scale"} ] } @@ -329,7 +338,7 @@ Form { { singleVariable: true name: "trendsTrendVariable" - title: qsTr("Trend variable") + title: qsTr("Trend variable"); info: qsTr("Variables for which the estimated conditional slopes will be computed.") } } @@ -340,7 +349,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends2" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables over which the conditional slopes can be computed.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -348,7 +357,7 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("ariables over which the the conditional slopes will be computed.") } } @@ -376,7 +385,7 @@ Form { { name: "trendsComparison" id: trendsCompare - label: qsTr("Compare trends to:") + label: qsTr("Compare trends to:"); info: qsTr("Value to which will be the estimated conditional slopes compared.") } DoubleField @@ -390,7 +399,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") } DropDown @@ -399,13 +408,13 @@ Form { label: qsTr("P-value adjustment") values: [ - { label: "Holm", value: "holm"}, - { label: qsTr("Multivariate-t"), value: "mvt"}, - { label: "Scheffé", value: "scheffe"}, - { label: "Tukey", value: "tukey"}, - { label: qsTr("None"), value: "none"}, - { label: "Bonferroni", value: "bonferroni"}, - { label: "Hommel", value: "hommel"} + { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr(" Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, + { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } diff --git a/inst/qml/MixedModelsLMM.qml b/inst/qml/MixedModelsLMM.qml index f081e78..0348047 100755 --- a/inst/qml/MixedModelsLMM.qml +++ b/inst/qml/MixedModelsLMM.qml @@ -22,6 +22,16 @@ import JASP.Controls import "./common" as MM Form { + info: qsTr("Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + + "## " + qsTr(Assumptions) + "\n" + + "- " + qsTr("Continuous response variable.") + "\n" + + "- " + qsTr("Linearity and additivity: The response variable is linearly related to all predictors and the effects of the predictors are additive.") + "\n" + + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + + "- " + qsTr("Normality of errors: The errors are normally distributed with mean zero.") + "\n" + + qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast enconding for the analysis use Factor contrast dropdown in the Options section.") + "\n" + + qsTr("The analysis uses a long data format.") + id: form Formula @@ -42,7 +52,7 @@ Form { AssignedVariablesList { name: "dependent" - title: qsTr("Dependent variable") + title: qsTr("Dependent variable"); info: qsTr("Dependent (response) variable.") allowedColumns: ["scale"] singleVariable: true } @@ -50,7 +60,7 @@ Form { AssignedVariablesList { name: "fixedVariables" - title: qsTr("Fixed effects variables") + title: qsTr("Fixed effects variables"); info: qsTr("Variables used as the fixed effects predictors (the model terms can be specified under Model section). These are usually the variables of primary scientific interest.") allowedColumns: ["nominal", "scale"] allowTypeChange: true } @@ -58,7 +68,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels should not be used as random effects grouping factors. Moreover, the number of levels of the random effects grouping factors determines the power of the test of the fixed effects. The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined maximal random effects structure justified by the design.") allowedColumns: ["nominal"] } } @@ -81,7 +91,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsMeans" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables that can be used for computing estimated marginal means.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -89,7 +99,7 @@ Form { { id: marginalMeans name: "marginalMeansTerms" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables for which the estimated marginal means will be computed.") } } @@ -115,7 +125,7 @@ Form { { name: "marginalMeansDf" id: marginalMeansDf - label: qsTr("Estimate df") + label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets.") values: [ { label: qsTr("Asymptotic"), value: "asymptotic"}, @@ -128,7 +138,7 @@ Form { { enabled: marginalMeansDf.currentValue == "satterthwaite" | marginalMeansDf.currentValue == "kenwardRoger" name: "marginalMeansDfEstimated" - label: qsTr("Force df estimation") + label: qsTr("Force df estimation"); info: qsTr("JASP automatically uses Asymptotic degrees of freedom in cases with a large dataset. This can be disabled by ticking this checkbox.") } } @@ -141,7 +151,7 @@ Form { { name: "marginalMeansComparison" id: marginalMeansCompare - label: qsTr("Compare marginal means to:") + label: qsTr("Compare marginal means to:"); info: qsTr("Value to which will be the estimated marginal means compared.") } DoubleField @@ -155,22 +165,22 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") } DropDown { name: "marginalMeansPAdjustment" - label: qsTr("P-value adjustment") + label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", value: "holm"}, - { label: qsTr("Multivariate-t"), value: "mvt"}, - { label: "Scheffé", value: "scheffe"}, - { label: "Tukey", value: "tukey"}, - { label: qsTr("None"), value: "none"}, - { label: "Bonferroni", value: "bonferroni"}, - { label: "Hommel", value: "hommel"} + { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr(" Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: qsTr("None"), info: qsTr(" No adjustment is conducted.") , value: "none"}, + { label: "Bonferroni", info: qsTr("this correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } @@ -196,7 +206,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends1" - title: qsTr("Continous variables") + title: qsTr("Continous variables"); info: qsTr("Continuous fixed effects variables that can be used for estimating the conditional slopes.") source: [ { name: "fixedEffects", use: "type=scale"} ] } @@ -204,7 +214,7 @@ Form { { singleVariable: true name: "trendsTrendVariable" - title: qsTr("Trend variable") + title: qsTr("Trend variable"); info: qsTr("Variables for which the estimated conditional slopes will be computed.") } } @@ -215,7 +225,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends2" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables over which the conditional slopes can be computed.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -223,7 +233,7 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") } } @@ -249,7 +259,7 @@ Form { { name: "trendsDf" id: trendsDf - label: qsTr("Estimate df") + label: qsTr("Estimate df"); info: qsTr(" Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets.") values: [ { label: qsTr("Asymptotic"), value: "asymptotic"}, @@ -262,7 +272,7 @@ Form { { enabled: trendsDf.currentValue == "satterthwaite" | trendsDf.currentValue == "kenwardRoger" name: "trendsDfEstimated" - label: qsTr("Force df estimation") + label: qsTr("Force df estimation"); info: qsTr("JASP automatically uses Asymptotic degrees of freedom in cases with a large dataset. This can be disabled by ticking this checkbox.") } } @@ -274,7 +284,7 @@ Form { { name: "trendsComparison" id: trendsCompare - label: qsTr("Compare trends to:") + label: qsTr("Compare trends to:"); info: qsTr("Value to which will be the estimated conditional slopes compared.") } DoubleField @@ -288,22 +298,22 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated conditional slopes output table. Columns with variable names contain the combinations of variables level for each estimated conditional slope. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two conditional slopes, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in conditional slopes of one variable across levels of another variable.") } DropDown { name: "trendsPAdjustment" - label: qsTr("P-value adjustment") + label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", value: "holm"}, - { label: qsTr("Multivariate-t"), value: "mvt"}, - { label: "Scheffé", value: "scheffe"}, - { label: "Tukey", value: "tukey"}, - { label: qsTr("None"), value: "none"}, - { label: "Bonferroni", value: "bonferroni"}, - { label: "Hommel", value: "hommel"} + { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr(" Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: qsTr("None"), info: qsTr(" No adjustment is conducted.") , value: "none"}, + { label: "Bonferroni", info: qsTr("this correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } diff --git a/inst/qml/common/MixedModelsModel.qml b/inst/qml/common/MixedModelsModel.qml index 0b0e1d7..d3fd79a 100644 --- a/inst/qml/common/MixedModelsModel.qml +++ b/inst/qml/common/MixedModelsModel.qml @@ -34,6 +34,7 @@ Section { name: "availableModelComponents" title: qsTr("Model components") + info: qsTr("All the fixed effects variables that can be included in the model.") source: "fixedVariables" } @@ -42,6 +43,7 @@ Section id: fixedEffects name: "fixedEffects" title: qsTr("Fixed effects") + info: qsTr(" The independent variables in the model. By default, all the main effects of the specified independent variables and their interactions are included in the model. To include interactions, click multiple variables (e.g., by holding the ctrl/cmd button on your keyboard while clicking) and drag those into the Fixed effects box.") listViewType: JASP.Interaction allowTypeChange:false } @@ -49,6 +51,7 @@ Section CheckBox { label: qsTr("Include intercept") + info: qsTr("Include the interecpt in the model") name: "includeIntercept" checked: true visible: analysisType == "frequentist" // stanova cannot summarize no-intercept models @@ -59,6 +62,7 @@ Section { id: randomEffects title: qsTr("Random effects") + info: qsTr("The random effects organized by random effects grouping factors. By default, all of the random effects corresponding to the fixed effects are included and JASP internally checks and removes non-estimable random effects. That is, the default corresponds to the maximal random effects structure justified by the design. Unticking the boxes on the left of the variable names removes the random effect from corresponding random effects grouping factor.") name: "randomEffects" source: "randomVariables" visible: count > 0 @@ -73,7 +77,7 @@ Section { width: randomComponentsList.width Label { text: qsTr("Random components (%1)").arg(rowValue); width: parent.width / 2 } - CheckBox { label: qsTr("Correlations"); name: "correlations"; checked: true; preferredWidth: parent.width / 2 } + CheckBox { label: qsTr("Correlations"); info: qsTr("Whether the correlations between the random effects parameters within each random effects grouping factor should be estimated.") ;name: "correlations"; checked: true; preferredWidth: parent.width / 2 } } VariablesList diff --git a/inst/qml/common/MixedModelsOptions.qml b/inst/qml/common/MixedModelsOptions.qml index 3edeeb9..0e06c0a 100644 --- a/inst/qml/common/MixedModelsOptions.qml +++ b/inst/qml/common/MixedModelsOptions.qml @@ -32,16 +32,17 @@ Section columns: 2 name: "type" title: qsTr("Type") + info: qsTr(" There are different types of the sum of squares. The choice of the type is important when there are multiple factors and when the data are unbalanced. In an unbalanced design, the different levels of the independent variable do not contain an equal number of observations (e.g., one group contains more observations than another group). In this scenario, the sum of squares type can influence the results.") radioButtonsOnSameRow: true - RadioButton { value: "2"; label: qsTr("II") } - RadioButton { value: "3"; label: qsTr("III"); checked: true } + RadioButton { value: "2"; label: qsTr("II"); info: qsTr("Hierarchical/partially sequential sum of squares. It is the reduction of error when each factor is added to the model that includes all the other factors, except the factors where the added factor is a part of, such as interactions containing that factor. Langsrud (2003) advises to apply this type for an ANOVA with unbalanced data.") } + RadioButton { value: "3"; label: qsTr("III"); info: qsTr("Partial sum of squares. It is the reduction of error when each factor is added to the model that includes all the other factors, including interactions with this factor. This type is often selected, because it takes interactions into account (Langsrud, 2003). This type is selected by default and recommended for designs in which the imbalance is not a consequence of imbalance in the population, but random.") ;checked: true } } CheckBox { enabled: testMethod.currentValue == "parametricBootstrap" | testMethod.currentValue == "likelihoodRatioTest" name: "interceptTest" - label: qsTr("Test intercept") + label: qsTr("Test intercept"); info: qsTr("Whether the model intercept should be tested. Available only if the likelihood ratio test or parametric bootstrap is selected in the Model terms test.") } Group @@ -50,10 +51,11 @@ Section { name: "testMethod" label: qsTr("Test method") + info: qsTr("Methods for obtaining p-values for the ANOVA summary. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets and complicated random effects structures.") id: testMethod values: allMethodOptions ? [ - { label: "Satterthwaite", value: "satterthwaite"}, + { label: "Satterthwaite", value: "satterthwaite"}, { label: "Kenward-Roger", value: "kenwardRoger"}, { label: qsTr("Likelihood ratio tests"), value: "likelihoodRatioTest"}, { label: qsTr("Parametric bootstrap"), value: "parametricBootstrap"} @@ -68,6 +70,7 @@ Section { name: "factorContrast" label: qsTr("Factor contrast") + info: qsTr("Specifies factor encoding for categorical variables.") values: [ { label: qsTr("Sum"), value: "sum"}, @@ -91,25 +94,25 @@ Section CheckBox { name: "modelSummary" - label: qsTr("Model summary") + label: qsTr("Model summary"); info: qsTr("Output table containing relevant statistics for the model.") } CheckBox { name: "fixedEffectEstimate" - label: qsTr("Fixed effects estimates") + label: qsTr("Fixed effects estimates"); info: qsTr("Shows the estimated fixed effect coefficients.") } CheckBox { name: "varianceCorrelationEstimate" - label: qsTr("Variance/correlation estimates") + label: qsTr("Variance/correlation estimates"); info: qsTr("Shows the estimated residual variances and variances/correlations of random effects coefficients.") } CheckBox { name: "randomEffectEstimate" - label: qsTr("Random effects estimates") + label: qsTr("Random effects estimates"); info: qsTr("Shows the estimated random effects coefficients.") } } @@ -118,7 +121,7 @@ Section CheckBox { name: "vovkSellke" - label: qsTr("Vovk-Sellke maximum p-ratio") + label: qsTr("Vovk-Sellke maximum p-ratio"); info: qsTr("Shows the maximum ratio of the likelihood of the obtained p value under H1 vs the likelihood of the obtained p value under H0. For example, if the two-sided p-value equals .05, the Vovk-Sellke MPR equals 2.46, indicating that this p-value is at most 2.46 times more likely to occur under H1 than under H0") } } diff --git a/inst/qml/common/MixedModelsPlots.qml b/inst/qml/common/MixedModelsPlots.qml index d1333ba..71a194a 100644 --- a/inst/qml/common/MixedModelsPlots.qml +++ b/inst/qml/common/MixedModelsPlots.qml @@ -34,27 +34,27 @@ Section AvailableVariablesList { name: "availableModelComponentsPlot" - title: qsTr("Model factors") + title: qsTr("Model factors"); info: qsTr("Categorical or ordinal fixed effects variables that can be used for visualization.") source: [ { name: "fixedEffects", use: "type=ordinal|nominal"} ] } AssignedVariablesList { name: "plotHorizontalAxis" - title: qsTr("Horizontal axis") + title: qsTr("Horizontal axis"); info: qsTr("Variables that will be plotted on the horizontal axis.") } AssignedVariablesList { name: "plotSeparateLines" id: plotsTrace - title: qsTr("Separate lines") + title: qsTr("Separate lines"); info: qsTr("Variables that will be plotted inside the plot as different traces/lines.") } AssignedVariablesList { name: "plotSeparatePlots" - title: qsTr("Separate plots") + title: qsTr("Separate plots"); info: qsTr("Variables which levels will be split across different plots.") } } @@ -65,14 +65,14 @@ Section AvailableVariablesList { name: "plotRandomVariables" - title: qsTr("Random effects grouping factors") + title: qsTr("Random effects grouping factors"); info: qsTr("Random effect grouping factors that can be used for data aggregation of data shown in the background.") source: "randomVariables" } AssignedVariablesList { name: "plotBackgroundData" - title: qsTr("Background data show") + title: qsTr("Background data show"); info: qsTr("The level of aggregation for the response variable. I.e., if participants are selected, the individual data points in the background are their averages across the combinations of levels of fixed effect factors selected in the Horizontal axis, Separate lines, and Separate plots.") addAvailableVariablesToAssigned: true } } @@ -83,11 +83,11 @@ Section { name: "plotCiType" id: plotsCImethod - label: qsTr("Confidence interval method") + label: qsTr("Confidence interval method"); info: qsTr("Type of standard error on which the error bars will be based. Default is 'model', which plots model-based standard errors. The options are:") values: if (analysisType == "frequentist"){ [ - { label: qsTr("Model"), value: "model"}, - { label: qsTr("None"), value: "none"}, + { label: qsTr("Model"), value: "model"}, + { label: qsTr("None"), value: "none"}, { label: qsTr("Mean"), value: "mean"}, { label: qsTr("Within"), value: "within"}, { label: qsTr("Between"), value: "between"} @@ -112,7 +112,7 @@ Section Group { - title: qsTr("Distinguish factor levels") + title: qsTr("Distinguish factor levels"); info: qsTr("How the factor levels should be distinguished. This can be by color, shape, linetype, or fill.") columns: 4 CheckBox @@ -153,7 +153,7 @@ Section DropDown { name: "plotBackgroundElement" - label: qsTr("Background element") + label: qsTr("Background element"); info: qsTr("Type of background element to be used on the plots:") id: plotsGeom values: [ @@ -222,7 +222,7 @@ Section { name: "plotTheme" id: plotsTheme - label: qsTr("Theme") + label: qsTr("Theme"); info: qsTr("Color palette to be used on the plot display:") values: [ { label: "JASP", value: "jasp"}, @@ -237,7 +237,7 @@ Section DropDown { name: "plotLegendPosition" - label: qsTr("Legend position") + label: qsTr("Legend position"); info: qsTr("Whether and where should the legend be plotted:") values: [ { label: qsTr("None"), value: "none"}, @@ -251,7 +251,7 @@ Section DropDown { name: "plotBackgroundColor" - label: qsTr("Border color") + label: qsTr("Border color"); info: qsTr("Color of the aggregated response variable:") enabled:plotsGeom.currentValue != "jitter" values: [ @@ -287,7 +287,7 @@ Section CheckBox { name: "plotEstimatesTable" - label: qsTr("Estimates table") + label: qsTr("Estimates table"); info: qsTr("Display numerical summary of the plotted objects.") } } } From 5bf1b09e4d85874125f2ef4b80d1dc82a11f0662 Mon Sep 17 00:00:00 2001 From: joaquin Date: Sun, 13 Jul 2025 23:27:02 -0400 Subject: [PATCH 2/5] Added info fields to Bayesian GLMM and other minor fixes. --- inst/qml/MixedModelsBGLMM.qml | 48 +++++++++++-------- inst/qml/MixedModelsGLMM.qml | 28 +++++------ inst/qml/MixedModelsLMM.qml | 6 +-- inst/qml/common/MixedModelsBOptions.qml | 26 +++++----- .../qml/common/MixedModelsMCMCDiagnostics.qml | 18 +++---- inst/qml/common/MixedModelsModel.qml | 2 +- inst/qml/common/MixedModelsPlots.qml | 16 +++---- 7 files changed, 77 insertions(+), 67 deletions(-) diff --git a/inst/qml/MixedModelsBGLMM.qml b/inst/qml/MixedModelsBGLMM.qml index 6debbef..84263f1 100644 --- a/inst/qml/MixedModelsBGLMM.qml +++ b/inst/qml/MixedModelsBGLMM.qml @@ -22,6 +22,16 @@ import JASP.Controls import "./common" as MM Form { + info: qsTr("Bayesian Generalized Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). They are a generalization of Bayesian Linear Mixed Models and allow to model response variables that are not continous using different likelihoods and link functions.") + "\n" + + "## " + qsTr("Assumptions") + "\n" + + "- " + qsTr("Linearity and additivity: The response variable is related to all predictors according to the link function and the effects of the predictors are additive on the linear scale.") + "\n" + + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + + "- " + qsTr("Distribution of errors: The errors are distributed according to the distributional family.") + "\n\n" + + qsTr("The analysis uses orthonormal contrasts such that the marginal prior on all fixed effects is identical for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option.") + "\n\n" + + qsTr("The analysis uses a long data format.") + "\n\n" + + qsTr("The prior distributions are weakly informative and should be well-behaved in parameter estimation settings. The module uses the default prior distribution settings of the rstanarm R package which defines normal(location = 0, scale = 2.5) prior distributions on scaled and centered model coefficients.") + id: form Formula @@ -43,7 +53,7 @@ Form { AssignedVariablesList { name: "dependent" - title: qsTr("Dependent variable") + title: qsTr("Dependent variable"); info: qsTr("Dependent (response) variable.") allowedColumns: ["scale", "nominal"] allowTypeChange: true singleVariable: true @@ -53,7 +63,7 @@ Form { { visible: active name: "dependentAggregation" - title: qsTr("Number of trials") + title: qsTr("Number of trials"); info: qsTr("Number of trials, only applicable if the Binomial (aggregated) family is selected.") singleVariable: true allowedColumns: ["scale"] @@ -66,7 +76,7 @@ Form { AssignedVariablesList { name: "fixedVariables" - title: qsTr("Fixed effects variables") + title: qsTr("Fixed effects variables"); info: qsTr("Variables used as the fixed effects predictors (the model terms can be specified under Model section). These are usually the variables of primary scientific interest.") allowedColumns: ["nominal", "scale"] allowTypeChange: true } @@ -74,7 +84,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels (i.e., less then five or six levels) should not be used as random effects grouping factors. Moreover, the number of levels of the random effects grouping factors determines the power of the test of the fixed effects (Westfall, Kenny, & Judd, 2014). The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") allowedColumns: ["nominal"] } } @@ -84,7 +94,7 @@ Form { DropDown { name: "family" - label: qsTr("Family") + label: qsTr("Family"); info: qsTr("Distribution function which likelihood will be used for the dependent variable. The following options are available:") id: family indexDefaultValue: 0 values: @@ -140,7 +150,7 @@ Form { { id: link name: "link" - title: qsTr("Link") + title: qsTr("Link"); info: qsTr("Link function that will be used to model the mean parameter of the selected distribution function.") radioButtonsOnSameRow: true RadioButton @@ -235,7 +245,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsMeans" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables that can be used for computing estimated marginal means.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -243,21 +253,21 @@ Form { { id: marginalMeans name: "marginalMeansTerms" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables for which the estimated marginal means will be computed.") } } CIField { name: "marginalMeansCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") } DoubleField { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) for which are the estimated marginal means computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -266,7 +276,7 @@ Form { CheckBox { name: "marginalMeansResponse" - label: qsTr("Response scale") + label: qsTr("Response scale"); info: qsTr("Whether the estimated marginal means should be computed on the response scale or untransformed linear scale. The response scale is selected by default.") checked: true } @@ -274,7 +284,7 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") } CustomContrastsTableView @@ -299,7 +309,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends1" - title: qsTr("Continous variables") + title: qsTr("Continous variables"); info: qsTr("Continuous fixed effects variables that can be used for estimating the conditional slopes.") source: [ { name: "fixedEffects", use: "type=scale"} ] } @@ -307,7 +317,7 @@ Form { { singleVariable: true name: "trendsTrendVariable" - title: qsTr("Trend variable") + title: qsTr("Trend variable"); info: qsTr("Variables for which the estimated conditional slopes will be computed.") } } @@ -318,7 +328,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends2" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables over which the conditional slopes can be computed.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -326,21 +336,21 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") } } CIField { name: "trendsCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") } DoubleField { id: trendsSD name: "trendsSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") defaultValue: 1 min: 0 enabled: trendsVariables.columnsTypes.includes("scale") @@ -350,7 +360,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated conditional slopes output table. Columns with variable names contain the combinations of variables level for each estimated conditional slope. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two conditional slopes, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in conditional slopes of one variable across levels of another variable.") } CustomContrastsTableView diff --git a/inst/qml/MixedModelsGLMM.qml b/inst/qml/MixedModelsGLMM.qml index a7a5a1b..81aabb6 100644 --- a/inst/qml/MixedModelsGLMM.qml +++ b/inst/qml/MixedModelsGLMM.qml @@ -27,8 +27,8 @@ Form { "- " + qsTr("Linearity and additivity: The response variable is related to all predictors according to the link function and the effects of the predictors are additive on the linear scale.") + "\n" + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + - "- " + qsTr("Distribution of errors: The errors are distributed according to the distributional family.") + "\n" + - qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast enconding for the analysis use Factor contrast dropdown in the Options section.") + "\n" + + "- " + qsTr("Distribution of errors: The errors are distributed according to the distributional family.") + "\n\n" + + qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast enconding for the analysis use Factor contrast dropdown in the Options section.") + "\n\n" + qsTr("The analysis uses a long data format.") id: form @@ -62,7 +62,7 @@ Form { { visible: active name: "dependentAggregation" - title: qsTr("Number of trials"); info: qsTr("Number of trials, only applicable if Binomial (aggregated) family is selected.") + title: qsTr("Number of trials"); info: qsTr("Number of trials, only applicable if the Binomial (aggregated) family is selected.") singleVariable: true allowedColumns: ["scale"] @@ -75,7 +75,7 @@ Form { AssignedVariablesList { name: "fixedVariables" - title: qsTr("Fixed effects variables"); info: qsTr(" Variables used as the fixed effects predictors (the model terms can be specified under Model section). These are usually the variables of primary scientific interest.") + title: qsTr("Fixed effects variables"); info: qsTr("Variables used as the fixed effects predictors (the model terms can be specified under Model section). These are usually the variables of primary scientific interest.") allowedColumns: ["nominal", "scale"] allowTypeChange: true } @@ -247,14 +247,14 @@ Form { CIField { name: "marginalMeansCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") } DoubleField { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the estimated marginal means are computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -298,12 +298,12 @@ Form { label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, { label: "Scheffé", info: qsTr("Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, - { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: "Tukey", info: qsTr("Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, - { label: "Bonferroni", info: qsTr("this correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } @@ -330,7 +330,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends1" - title: qsTr("Continous variables"); info: qsTr(" Continuous fixed effects variables that can be used for estimating the conditional slopes.") + title: qsTr("Continous variables"); info: qsTr("Continuous fixed effects variables that can be used for estimating the conditional slopes.") source: [ { name: "fixedEffects", use: "type=scale"} ] } @@ -357,21 +357,21 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables"); info: qsTr("ariables over which the the conditional slopes will be computed.") + title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") } } CIField { name: "trendsCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") } DoubleField { id: trendsSD name: "trendsSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") defaultValue: 1 min: 0 enabled: trendsVariables.columnsTypes.includes("scale") @@ -399,7 +399,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated conditional slopes output table. Columns with variable names contain the combinations of variables level for each estimated conditional slope. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two conditional slopes, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in conditional slopes of one variable across levels of another variable.") } DropDown diff --git a/inst/qml/MixedModelsLMM.qml b/inst/qml/MixedModelsLMM.qml index 0348047..e3a8365 100755 --- a/inst/qml/MixedModelsLMM.qml +++ b/inst/qml/MixedModelsLMM.qml @@ -23,13 +23,13 @@ import "./common" as MM Form { info: qsTr("Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + - "## " + qsTr(Assumptions) + "\n" + + "## " + qsTr("Assumptions") + "\n" + "- " + qsTr("Continuous response variable.") + "\n" + "- " + qsTr("Linearity and additivity: The response variable is linearly related to all predictors and the effects of the predictors are additive.") + "\n" + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + - "- " + qsTr("Normality of errors: The errors are normally distributed with mean zero.") + "\n" + - qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast enconding for the analysis use Factor contrast dropdown in the Options section.") + "\n" + + "- " + qsTr("Normality of errors: The errors are normally distributed with mean zero.") + "\n\n" + + qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast encoding for the analysis use Factor contrast dropdown in the Options section.") + "\n\n" + qsTr("The analysis uses a long data format.") id: form diff --git a/inst/qml/common/MixedModelsBOptions.qml b/inst/qml/common/MixedModelsBOptions.qml index a638f01..b85088c 100644 --- a/inst/qml/common/MixedModelsBOptions.qml +++ b/inst/qml/common/MixedModelsBOptions.qml @@ -32,7 +32,7 @@ Section { name: "mcmcBurnin" id: warmup - label: qsTr("Burnin") + label: qsTr("Burnin"); info: qsTr("Number of iterations reserved for burnin.") defaultValue: 2000 min: 100 } @@ -40,7 +40,7 @@ Section IntegerField { name: "mcmcSamples" - label: qsTr("Samples") + label: qsTr("Samples"); info: qsTr("Number of samples.") defaultValue: 4000 min: parseInt(warmup.value) + 100 } @@ -48,7 +48,7 @@ Section IntegerField { name: "mcmcChains" - label: qsTr("Chains") + label: qsTr("Chains"); info: qsTr("Number of chains.") defaultValue: 3 min: 1 } @@ -56,7 +56,7 @@ Section DoubleField { name: "mcmcAdaptDelta" - label: qsTr("Adapt delta") + label: qsTr("Adapt delta"); info: qsTr("Average target proposal acceptance of each step. Increasing Adapt delta results in better-behaved chains, but also longer fitting times.") defaultValue: 0.80 min: 0.5 max: 1 @@ -65,7 +65,7 @@ Section IntegerField { name: "mcmcMaxTreedepth" - label: qsTr("Maximum treedepth") + label: qsTr("Maximum treedepth"); info: qsTr("The cap for number of trees evaluated during each iteration. Prevents excessively long execution times.") defaultValue: 10 min: 5 } @@ -77,9 +77,9 @@ Section RadioButtonGroup { name: "estimateType" - title: qsTr("Show") - RadioButton { value: "deviation"; label: qsTr("Differences from intercept"); checked: true} - RadioButton { value: "marginalMeans"; label: qsTr("Marginal means") } + title: qsTr("Show"); info: qsTr("What should be the default output.") + RadioButton { value: "deviation"; label: qsTr("Differences from intercept"); info: qsTr("A table for each fixed effects term will be created in the default output and it will show the differences from the grand mean for each of the terms' levels (or one standard deviation distance for continuous terms). This option is selected by default.") ;checked: true} + RadioButton { value: "marginalMeans"; label: qsTr("Marginal means"); info: qsTr("A table for each fixed effects term will be created in the default output and it will show the estimated marginal mean for each of the terms' levels (or one standard deviation distance for continuous terms).") } } Group @@ -87,25 +87,25 @@ Section CheckBox { name: "modelSummary" - label: qsTr("Model summary") + label: qsTr("Model summary"); info: qsTr("Adds an output table including relevant fit statistics.") } CheckBox { name: "fixedEffectEstimate" - label: qsTr("Fixed effects estimates") + label: qsTr("Fixed effects estimates"); info: qsTr("Shows the estimated fixed effect coefficients.") } CheckBox { name: "varianceCorrelationEstimate" - label: qsTr("Variance/correlation estimates") + label: qsTr("Variance/correlation estimates"); info: qsTr("Shows the estimated residual variances and variances/correlations of random effects coefficients.") } CheckBox { name: "randomEffectEstimate" - label: qsTr("Random effects estimates") + label: qsTr("Random effects estimates"); info: qsTr("Shows the estimated random effects coefficients.") } } } @@ -115,6 +115,6 @@ Section CIField { name: "ciLevel" - label: qsTr("Credible interval") + label: qsTr("Credible interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } } diff --git a/inst/qml/common/MixedModelsMCMCDiagnostics.qml b/inst/qml/common/MixedModelsMCMCDiagnostics.qml index d918df0..cc7d748 100644 --- a/inst/qml/common/MixedModelsMCMCDiagnostics.qml +++ b/inst/qml/common/MixedModelsMCMCDiagnostics.qml @@ -31,7 +31,7 @@ Section AvailableVariablesList { name: "mcmcDiagnosticsAvailableTerms" - title: qsTr("Model terms") + title: qsTr("Model terms"); info: qsTr("Fixed effects model terms whose MCMC chains can be diagnosed.") source: "fixedEffects" } @@ -39,14 +39,14 @@ Section { singleVariable: true name: "mcmcDiagnosticsHorizontal" - title: mcmcDiagnosticsType.currentValue == "scatterplot" ? qsTr("Horizontal axis") : qsTr("Plotted term") + title: mcmcDiagnosticsType.currentValue == "scatterplot" ? qsTr("Horizontal axis") : qsTr("Plotted term"); info: qsTr("Fixed effects model term which chain will be diagnosed.") } AssignedVariablesList { singleVariable: true name: "mcmcDiagnosticsVertical" - title: qsTr("Vertical axis") + title: qsTr("Vertical axis"); info: qsTr("Fixed effects model term which chain will be diagnosed. Only available if Plot type is Scatterplot.") visible: active property bool active: mcmcDiagnosticsType.currentValue == "scatterplot" @@ -58,14 +58,14 @@ Section { name: "mcmcDiagnosticsType" id: mcmcDiagnosticsType - label: qsTr("Plot type") + label: qsTr("Plot type"); info: qsTr("Different types of MCMC diagnostics plots. The plotted values correspond to the fixed effect terms displayed in the default output. Those are the deviations from the estimated grand mean by default, but can be changed to estimated marginal means in the Options section.") values: [ - { label: qsTr("Traceplot"), value: "traceplot"}, - { label: qsTr("Scatterplot"), value: "scatterplot"}, - { label: qsTr("Histogram"), value: "histogram"}, - { label: qsTr("Density"), value: "density"}, - { label: qsTr("Autocorrelations"), value: "autocorrelation"} + { label: qsTr("Traceplot"), info: qsTr("Traceplot of the individual chains.") , value: "traceplot"}, + { label: qsTr("Scatterplot"), info: qsTr("Scatterplot of two model terms.") , value: "scatterplot"}, + { label: qsTr("Histogram"), info: qsTr("Histogram of the posterior samples.") , value: "histogram"}, + { label: qsTr("Density"), info: qsTr("Overlying densities of samples from each chain.") , value: "density"}, + { label: qsTr("Autocorrelations"), info: qsTr("Average autocorrelations across all chains.") ,value: "autocorrelation"} ] } } diff --git a/inst/qml/common/MixedModelsModel.qml b/inst/qml/common/MixedModelsModel.qml index d3fd79a..bc25e8e 100644 --- a/inst/qml/common/MixedModelsModel.qml +++ b/inst/qml/common/MixedModelsModel.qml @@ -43,7 +43,7 @@ Section id: fixedEffects name: "fixedEffects" title: qsTr("Fixed effects") - info: qsTr(" The independent variables in the model. By default, all the main effects of the specified independent variables and their interactions are included in the model. To include interactions, click multiple variables (e.g., by holding the ctrl/cmd button on your keyboard while clicking) and drag those into the Fixed effects box.") + info: qsTr("The independent variables in the model. By default, all the main effects of the specified independent variables and their interactions are included in the model. To include interactions, click multiple variables (e.g., by holding the ctrl/cmd button on your keyboard while clicking) and drag those into the Fixed effects box.") listViewType: JASP.Interaction allowTypeChange:false } diff --git a/inst/qml/common/MixedModelsPlots.qml b/inst/qml/common/MixedModelsPlots.qml index 71a194a..62712c4 100644 --- a/inst/qml/common/MixedModelsPlots.qml +++ b/inst/qml/common/MixedModelsPlots.qml @@ -106,7 +106,7 @@ Section { enabled: plotsCImethod.currentValue != "none" name: "plotCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default which can be changed by the user.") } } @@ -169,7 +169,7 @@ Section DoubleField { name: "plotTransparency" - label: qsTr("Transparency") + label: qsTr("Transparency"); info: qsTr("Transparency of the geom.") defaultValue: .7 min: 0 max: 1 @@ -180,7 +180,7 @@ Section { visible: plotsGeom.currentValue == "jitter" || plotsGeom.currentValue == "boxjitter" name: "plotJitterWidth" - label: qsTr("Jitter width") + label: qsTr("Jitter width"); info: qsTr("Width of the jitter.") defaultValue: 0.1 min: 0 } @@ -189,7 +189,7 @@ Section { visible: plotsGeom.currentValue == "jitter" | plotsGeom.currentValue == "boxjitter" name: "plotJitterHeight" - label: qsTr("Jitter height") + label: qsTr("Jitter height"); info: qsTr("Height of the jitter.") defaultValue: 0 min: 0 } @@ -198,7 +198,7 @@ Section { visible: plotsGeom.currentValue == "violin" | plotsGeom.currentValue == "boxplot" | plotsGeom.currentValue == "boxjitter" name: "plotElementWidth" - label: qsTr("Element width") + label: qsTr("Element width"); info: qsTr("Width of the element.") defaultValue: 1 min: 0 inclusive: JASP.None @@ -208,7 +208,7 @@ Section { visible: plotsTrace.count != 0 name: "plotDodge" - label: qsTr("Dodge") + label: qsTr("Dodge"); info: qsTr("Spacing between the geoms.") defaultValue: 0.3 min: 0 } @@ -269,7 +269,7 @@ Section { enabled: plotsTheme.currentValue != "jasp" name: "plotRelativeSizeText" - label: qsTr("Relative size text") + label: qsTr("Relative size text"); info: qsTr("Relative size of the plotted text.") defaultValue: 1.5 min: 0 inclusive: JASP.None @@ -278,7 +278,7 @@ Section DoubleField { name: "plotRelativeSizeData" - label: qsTr("Relative size foreground data") + label: qsTr("Relative size foreground data"); info: qsTr("Relative size of the foreground data (confidence interval bars, etc...).") defaultValue: 1 min: 0 inclusive: JASP.None From 05e086e2143d0f98e64a5a6ed261dbc7fe78cf2f Mon Sep 17 00:00:00 2001 From: joaquin Date: Sun, 13 Jul 2025 23:55:21 -0400 Subject: [PATCH 3/5] Added info fields to Bayesian LMM --- inst/qml/MixedModelsBLMM.qml | 41 +++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/inst/qml/MixedModelsBLMM.qml b/inst/qml/MixedModelsBLMM.qml index d9bd62b..94d5886 100644 --- a/inst/qml/MixedModelsBLMM.qml +++ b/inst/qml/MixedModelsBLMM.qml @@ -22,6 +22,17 @@ import JASP.Controls import "./common" as MM Form { + info: qsTr("Bayesian Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + + "## " + qsTr("Assumptions") + "\n" + + "- " + qsTr("Continuous response variable.") + "\n" + + "- " + qsTr("Linearity and additivity: The response variable is linearly related to all predictors and the effects of the predictors are additive.") + "\n" + + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + + "- " + qsTr("Normality of errors: The errors are normally distributed with mean zero.") + "\n\n" + + qsTr("The analysis uses orthonormal contrasts such that the marginal prior on all fixed effects is identical for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option.") + "\n\n" + + qsTr("The analysis uses a long data format.") + "\n\n" + + qsTr("The prior distributions are weakly informative and should be well-behaved in parameter estimation settings. The module uses the default prior distribution settings of the rstanarm R package which defines normal(location = 0, scale = 2.5) prior distributions on scaled and centered model coefficients.") + id: form Formula @@ -42,7 +53,7 @@ Form { AssignedVariablesList { name: "dependent" - title: qsTr("Dependent variable") + title: qsTr("Dependent variable"); info: qsTr("Dependent (response) variable.") allowedColumns: ["scale"] singleVariable: true } @@ -50,7 +61,7 @@ Form { AssignedVariablesList { name: "fixedVariables" - title: qsTr("Fixed effects variables") + title: qsTr("Fixed effects variables"); info: qsTr("Variables used as the fixed effects predictors (the model terms can be specified under Model section). These are usually the variables of primary scientific interest.") allowedColumns: ["nominal", "scale"] allowTypeChange: true } @@ -58,7 +69,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels (i.e., less then five or six levels) should not be used as random effects grouping factors and the number of levels of the random effects grouping factors determines the power of the test of the fixed effects (Westfall, Kenny, & Judd, 2014). The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") allowedColumns: ["nominal"] } } @@ -89,7 +100,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsMeans" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables that can be used for computing estimated marginal means.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -97,21 +108,21 @@ Form { { id: marginalMeans name: "marginalMeansTerms" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables for which the estimated marginal means will be computed.") } } CIField { name: "marginalMeansCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) for which are the estimated marginal means computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -121,7 +132,7 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") } CustomContrastsTableView @@ -146,7 +157,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends1" - title: qsTr("Continous variables") + title: qsTr("Continous variables"); info: qsTr("Continuous fixed effects variables that can be used for estimating the conditional slopes.") source: [ { name: "fixedEffects", use: "type=scale"} ] } @@ -154,7 +165,7 @@ Form { { singleVariable: true name: "trendsTrendVariable" - title: qsTr("Trend variable") + title: qsTr("Trend variable"); info: qsTr("Variables for which the estimated conditional slopes will be computed.") } } @@ -165,7 +176,7 @@ Form { AvailableVariablesList { name: "availableModelComponentsTrends2" - title: qsTr("Model variables") + title: qsTr("Model variables"); info: qsTr("Fixed effects variables over which the conditional slopes can be computed.") source: [{ name: "fixedEffects", use: "noInteraction" }] } @@ -173,21 +184,21 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables") + title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") } } CIField { name: "trendsCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: trendsSD name: "trendsSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") defaultValue: 1 min: 0 enabled: trendsVariables.columnsTypes.includes("scale") @@ -197,7 +208,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") } CustomContrastsTableView From 2fc24a8fba1b8239b7e00d93b19ef1c768188e81 Mon Sep 17 00:00:00 2001 From: joaquin Date: Tue, 15 Jul 2025 23:02:41 -0400 Subject: [PATCH 4/5] Fixed typos and grammar in info fields. --- inst/qml/MixedModelsBGLMM.qml | 22 +++++++-------- inst/qml/MixedModelsBLMM.qml | 12 ++++----- inst/qml/MixedModelsGLMM.qml | 38 +++++++++++++------------- inst/qml/MixedModelsLMM.qml | 50 +++++++++++++++++------------------ 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/inst/qml/MixedModelsBGLMM.qml b/inst/qml/MixedModelsBGLMM.qml index 84263f1..3993627 100644 --- a/inst/qml/MixedModelsBGLMM.qml +++ b/inst/qml/MixedModelsBGLMM.qml @@ -22,13 +22,13 @@ import JASP.Controls import "./common" as MM Form { - info: qsTr("Bayesian Generalized Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). They are a generalization of Bayesian Linear Mixed Models and allow to model response variables that are not continous using different likelihoods and link functions.") + "\n" + + info: qsTr("Bayesian Generalized Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered within one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). They are generalizations of Bayesian Linear Mixed Models and allow you to model response variables that are not continuous using different likelihoods and link functions.") + "\n" + "## " + qsTr("Assumptions") + "\n" + "- " + qsTr("Linearity and additivity: The response variable is related to all predictors according to the link function and the effects of the predictors are additive on the linear scale.") + "\n" + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + "- " + qsTr("Distribution of errors: The errors are distributed according to the distributional family.") + "\n\n" + - qsTr("The analysis uses orthonormal contrasts such that the marginal prior on all fixed effects is identical for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option.") + "\n\n" + + qsTr("The analysis uses orthonormal contrasts such that the marginal prior on all fixed effects is identical for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effect estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option.") + "\n\n" + qsTr("The analysis uses a long data format.") + "\n\n" + qsTr("The prior distributions are weakly informative and should be well-behaved in parameter estimation settings. The module uses the default prior distribution settings of the rstanarm R package which defines normal(location = 0, scale = 2.5) prior distributions on scaled and centered model coefficients.") @@ -84,7 +84,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels (i.e., less then five or six levels) should not be used as random effects grouping factors. Moreover, the number of levels of the random effects grouping factors determines the power of the test of the fixed effects (Westfall, Kenny, & Judd, 2014). The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participants or items, one wants to generalize over. Factors with very few levels (i.e., fewer than five or six levels) should not be used as random effects grouping factors as the number of levels determines the power of the test of the fixed effects tests (Westfall, Kenny, & Judd, 2014). The random effects structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") allowedColumns: ["nominal"] } } @@ -94,7 +94,7 @@ Form { DropDown { name: "family" - label: qsTr("Family"); info: qsTr("Distribution function which likelihood will be used for the dependent variable. The following options are available:") + label: qsTr("Family"); info: qsTr("Distribution function whose likelihood will be used for the dependent variable. The following options are available:") id: family indexDefaultValue: 0 values: @@ -260,14 +260,14 @@ Form { CIField { name: "marginalMeansCiLevel" - label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) for which are the estimated marginal means computed.") + label: qsTr("SD factor covariates"); info: qsTr("Specifies the 'levels' of continuous variables (expressed in standard deviations) for which the estimated marginal means are computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -284,7 +284,7 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains row indices corresponding to the estimated marginal means output table. Columns with variable names show the levels of each variable for the respective marginal mean. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two marginal means, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in marginal means of one variable across levels of another.") } CustomContrastsTableView @@ -336,21 +336,21 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") + title: qsTr("Selected variables"); info: qsTr("Variables over which the conditional slopes will be computed.") } } CIField { name: "trendsCiLevel" - label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: trendsSD name: "trendsSd" - label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") + label: qsTr("SD factor covariates"); info: qsTr("Specifies the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") defaultValue: 1 min: 0 enabled: trendsVariables.columnsTypes.includes("scale") @@ -360,7 +360,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated conditional slopes output table. Columns with variable names contain the combinations of variables level for each estimated conditional slope. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two conditional slopes, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in conditional slopes of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains row indices corresponding to the estimated conditional slopes output table. Columns with variable names show the levels of each variable for the respective conditional slope. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two conditional slopes, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in conditional slopes of one variable across levels of another.") } CustomContrastsTableView diff --git a/inst/qml/MixedModelsBLMM.qml b/inst/qml/MixedModelsBLMM.qml index 94d5886..844fe98 100644 --- a/inst/qml/MixedModelsBLMM.qml +++ b/inst/qml/MixedModelsBLMM.qml @@ -22,7 +22,7 @@ import JASP.Controls import "./common" as MM Form { - info: qsTr("Bayesian Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + + info: qsTr("Bayesian Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered within one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + "## " + qsTr("Assumptions") + "\n" + "- " + qsTr("Continuous response variable.") + "\n" + "- " + qsTr("Linearity and additivity: The response variable is linearly related to all predictors and the effects of the predictors are additive.") + "\n" + @@ -69,7 +69,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels (i.e., less then five or six levels) should not be used as random effects grouping factors and the number of levels of the random effects grouping factors determines the power of the test of the fixed effects (Westfall, Kenny, & Judd, 2014). The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participants or items, one wants to generalize over. Factors with very few levels (i.e., fewer than five or six levels) should not be used as random effects grouping factors as the number of levels determines the power of the test of the fixed effects tests (Westfall, Kenny, & Judd, 2014). The random effects structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") allowedColumns: ["nominal"] } } @@ -122,7 +122,7 @@ Form { { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) for which are the estimated marginal means computed.") + label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) for which the estimated marginal means are computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -132,7 +132,7 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains row indices corresponding to the estimated marginal means output table. Columns with variable names show the levels of each variable for the respective marginal mean. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two marginal means, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in marginal means of one variable across levels of another.") } CustomContrastsTableView @@ -184,7 +184,7 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") + title: qsTr("Selected variables"); info: qsTr("Variables over which the conditional slopes will be computed.") } } @@ -208,7 +208,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains row indices corresponding to the estimated conditional slopes output table. Columns with variable names show the levels of each variable for the respective conditional slope. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two conditional slopes, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in conditional slopes of one variable across levels of another.") } CustomContrastsTableView diff --git a/inst/qml/MixedModelsGLMM.qml b/inst/qml/MixedModelsGLMM.qml index 81aabb6..aa61527 100644 --- a/inst/qml/MixedModelsGLMM.qml +++ b/inst/qml/MixedModelsGLMM.qml @@ -22,13 +22,13 @@ import JASP.Controls import "./common" as MM Form { - info: qsTr("Generalized Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). They are generalization of Linear Mixed Models and allow to model response variables that are not continous using a different likelihoods and link functions.") + "\n" + + info: qsTr("Generalized Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered within one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). They are generalizations of Linear Mixed Models and allow you to model response variables that are not continuous using different likelihoods and link functions.") + "\n" + "## " + qsTr("Assumptions") + "\n" + "- " + qsTr("Linearity and additivity: The response variable is related to all predictors according to the link function and the effects of the predictors are additive on the linear scale.") + "\n" + "- " + qsTr("Independence of errors: The errors are uncorrelated with each other after taking the model (i.e., fixed effects and random effects structure) into account.") + "\n" + "- " + qsTr("Homoscedasticity: The error variance of each predictor is constant across all values of that predictor.") + "\n" + "- " + qsTr("Distribution of errors: The errors are distributed according to the distributional family.") + "\n\n" + - qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast enconding for the analysis use Factor contrast dropdown in the Options section.") + "\n\n" + + qsTr("The analysis uses sum contrast encoding for categorical (nominal and ordinal) predictors (R uses dummy encoding by default). This scheme is used for better interpretability of models with interactions. However, the fixed and random effects estimates will differ from those obtained from R with default settings. We advise using the 'Estimated marginal means' section for obtaining mean estimates at individual factor levels. For comparing the mean estimates, use the contrasts option. To change the contrast encoding for the analysis use Factor contrast dropdown in the Options section.") + "\n\n" + qsTr("The analysis uses a long data format.") id: form @@ -83,7 +83,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels should not be used as random effects grouping factors. Moreover, the number of levels of the random effects grouping factors determines the power of the test of the fixed effects. The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined maximal random effects structure justified by the design.") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participants or items, one wants to generalize over. Factors with very few levels (i.e., fewer than five or six levels) should not be used as random effects grouping factors as the number of levels determines the power of the test of the fixed effects tests (Westfall, Kenny, & Judd, 2014). The random effects structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") allowedColumns: ["nominal"] } } @@ -247,14 +247,14 @@ Form { CIField { name: "marginalMeansCiLevel" - label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the estimated marginal means are computed.") + label: qsTr("SD factor covariates"); info: qsTr("Specifies the 'levels' of continuous variables (expressed in standard deviations) over which the estimated marginal means are computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -268,7 +268,7 @@ Form { { name: "marginalMeansComparison" id: marginalMeansCompare - label: qsTr("Compare marginal means to:"); info: qsTr("Value to which will be the estimated marginal means compared.") + label: qsTr("Compare marginal means to:"); info: qsTr("Value to which the estimated marginal means will be compared.") } DoubleField @@ -289,7 +289,7 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains row indices corresponding to the estimated marginal means output table. Columns with variable names show the levels of each variable for the respective marginal mean. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two marginal means, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in marginal means of one variable across levels of another.") } DropDown @@ -298,12 +298,12 @@ Form { label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, - { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, + { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited for multivariate models.") ,value: "mvt"}, { label: "Scheffé", info: qsTr("Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, { label: "Tukey", info: qsTr("Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, - { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however, the statistical power decreases as well.") , value: "bonferroni"}, { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } @@ -364,14 +364,14 @@ Form { CIField { name: "trendsCiLevel" - label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval.") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: trendsSD name: "trendsSd" - label: qsTr("SD factor covariates"); info: qsTr("What should be the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") + label: qsTr("SD factor covariates"); info: qsTr("Specifies the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") defaultValue: 1 min: 0 enabled: trendsVariables.columnsTypes.includes("scale") @@ -385,7 +385,7 @@ Form { { name: "trendsComparison" id: trendsCompare - label: qsTr("Compare trends to:"); info: qsTr("Value to which will be the estimated conditional slopes compared.") + label: qsTr("Compare trends to:"); info: qsTr("Value to which the estimated conditional slopes will be compared.") } DoubleField @@ -399,7 +399,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated conditional slopes output table. Columns with variable names contain the combinations of variables level for each estimated conditional slope. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two conditional slopes, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in conditional slopes of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains row indices corresponding to the estimated conditional slopes output table. Columns with variable names show the levels of each variable for the respective conditional slope. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two conditional slopes, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in conditional slopes of one variable across levels of another.") } DropDown @@ -408,12 +408,12 @@ Form { label: qsTr("P-value adjustment") values: [ - { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, - { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, - { label: "Scheffé", info: qsTr(" Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, - { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr("Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr("Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, - { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however, the statistical power decreases as well.") , value: "bonferroni"}, { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } diff --git a/inst/qml/MixedModelsLMM.qml b/inst/qml/MixedModelsLMM.qml index e3a8365..87d855d 100755 --- a/inst/qml/MixedModelsLMM.qml +++ b/inst/qml/MixedModelsLMM.qml @@ -22,7 +22,7 @@ import JASP.Controls import "./common" as MM Form { - info: qsTr("Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered given one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + + info: qsTr("Linear Mixed Models allow you to model a linear relationship between one or more explanatory variable(s) and a continuous dependent variable in cases where the observations are not independent, but clustered within one or several random effects grouping factors (e.g., repeated measures across participants or items, children within schools). An introduction to this model class and the concepts introduced below is provided in Singmann and Kellen (2019).") + "\n" + "## " + qsTr("Assumptions") + "\n" + "- " + qsTr("Continuous response variable.") + "\n" + "- " + qsTr("Linearity and additivity: The response variable is linearly related to all predictors and the effects of the predictors are additive.") + "\n" + @@ -68,7 +68,7 @@ Form { AssignedVariablesList { name: "randomVariables" - title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participant or item, one wants to generalize over. Factors with very few levels should not be used as random effects grouping factors. Moreover, the number of levels of the random effects grouping factors determines the power of the test of the fixed effects. The random effect structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined maximal random effects structure justified by the design.") + title: qsTr("Random effects grouping factors"); info: qsTr("Categorical variable(s) specifying clusters of observations (i.e., several observations per level of a random effects grouping factor). These are typically variables, such as participants or items, one wants to generalize over. Factors with very few levels (i.e., fewer than five or six levels) should not be used as random effects grouping factors as the number of levels determines the power of the test of the fixed effects tests (Westfall, Kenny, & Judd, 2014). The random effects structure (i.e., random intercepts, random slopes, and correlations among random effects parameters) can be specified under Model - Random effects. The default random effects structure is the automatically determined 'maximal random effects structure justified by the design' (Barr, Levy, Scheepers, & Tily, 2013).") allowedColumns: ["nominal"] } } @@ -106,14 +106,14 @@ Form { CIField { name: "marginalMeansCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: marginalMeansSD name: "marginalMeansSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("Specifies the 'levels' of continuous variables (expressed in standard deviations) over which the estimated marginal means are computed.") defaultValue: 1 min: 0 enabled: marginalMeans.columnsTypes.includes("scale") @@ -125,7 +125,7 @@ Form { { name: "marginalMeansDf" id: marginalMeansDf - label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets.") + label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets. The following options are available:") values: [ { label: qsTr("Asymptotic"), value: "asymptotic"}, @@ -151,7 +151,7 @@ Form { { name: "marginalMeansComparison" id: marginalMeansCompare - label: qsTr("Compare marginal means to:"); info: qsTr("Value to which will be the estimated marginal means compared.") + label: qsTr("Compare marginal means to:"); info: qsTr("Value to which the estimated marginal means will be compared.") } DoubleField @@ -165,7 +165,7 @@ Form { { name: "marginalMeansContrast" id: marginalMeansContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains indices of rows corresponding to the estimated marginal means output table. Columns with variable names contain the combinations of variables level for each estimated marginal mean. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two marginal means, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in marginal means of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated marginal means. The first column contains row indices corresponding to the estimated marginal means output table. Columns with variable names show the levels of each variable for the respective marginal mean. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two marginal means, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in marginal means of one variable across levels of another.") } DropDown @@ -174,12 +174,12 @@ Form { label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, - { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, - { label: "Scheffé", info: qsTr(" Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, - { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, - { label: qsTr("None"), info: qsTr(" No adjustment is conducted.") , value: "none"}, - { label: "Bonferroni", info: qsTr("this correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr("Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr("Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, + { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however, the statistical power decreases as well.") , value: "bonferroni"}, { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } @@ -233,21 +233,21 @@ Form { { id: trendsVariables name: "trendsVariables" - title: qsTr("Selected variables"); info: qsTr("Variables over which the the conditional slopes will be computed.") + title: qsTr("Selected variables"); info: qsTr("Variables over which the conditional slopes will be computed.") } } CIField { name: "trendsCiLevel" - label: qsTr("Confidence interval") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } DoubleField { id: trendsSD name: "trendsSd" - label: qsTr("SD factor covariates") + label: qsTr("SD factor covariates"); info: qsTr("Specifies the 'levels' of continuous variables (expressed in standard deviations) over which the conditional slopes are computed.") defaultValue: 1 min: 0 enabled: trendsVariables.columnsTypes.includes("scale") @@ -259,7 +259,7 @@ Form { { name: "trendsDf" id: trendsDf - label: qsTr("Estimate df"); info: qsTr(" Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets.") + label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets. The following options are available:") values: [ { label: qsTr("Asymptotic"), value: "asymptotic"}, @@ -284,7 +284,7 @@ Form { { name: "trendsComparison" id: trendsCompare - label: qsTr("Compare trends to:"); info: qsTr("Value to which will be the estimated conditional slopes compared.") + label: qsTr("Compare trends to:"); info: qsTr("Value to which the estimated conditional slopes will be compared.") } DoubleField @@ -298,7 +298,7 @@ Form { { name: "trendsContrast" id: trendsContrast - label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains indices of rows corresponding to the estimated conditional slopes output table. Columns with variable names contain the combinations of variables level for each estimated conditional slope. Columns named Contrast x are used for specifying the contrasts. To set a contrast between two conditional slopes, enter -1 and 1 to the corresponding rows. Interactions can be tested by specifying differences between the changes in conditional slopes of one variable across levels of another variable.") + label: qsTr("Specify contrasts"); info: qsTr("Creates a table for specifying contrasts based on the estimated conditional slopes. The first column contains row indices corresponding to the estimated conditional slopes output table. Columns with variable names show the levels of each variable for the respective conditional slope. Columns labeled ‘Contrast x’ are used to define contrasts. To specify a contrast between two conditional slopes, enter -1 and 1 in the corresponding rows. Interactions can be tested by defining differences in conditional slopes of one variable across levels of another.") } DropDown @@ -307,12 +307,12 @@ Form { label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") values: [ - { label: "Holm", info: qsTr(" This method is also called sequential Bonferroni, and considered less conservative than the Bonferroni method.") , value: "holm"}, - { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited then for multivariate models.") ,value: "mvt"}, - { label: "Scheffé", info: qsTr(" Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, - { label: "Tukey", info: qsTr(" Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, - { label: qsTr("None"), info: qsTr(" No adjustment is conducted.") , value: "none"}, - { label: "Bonferroni", info: qsTr("this correction is considered conservative. The risk of Type I error is reduced, however the statistical power decreases as well.") , value: "bonferroni"}, + { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, + { label: qsTr("Multivariate-t"), info: qsTr("Correction that takes into account that test results might be correlated. Best suited for multivariate models.") ,value: "mvt"}, + { label: "Scheffé", info: qsTr("Adjusting significance levels in a linear regression, to account for multiple comparisons. This method is considered to be quite conservative.") , value: "scheffe"}, + { label: "Tukey", info: qsTr("Compare all possible pairs of group means. This correction can be used when the groups of the independent variable have an equal sample size and variance.") , value: "tukey"}, + { label: qsTr("None"), info: qsTr("No adjustment is conducted.") , value: "none"}, + { label: "Bonferroni", info: qsTr("This correction is considered conservative. The risk of Type I error is reduced, however, the statistical power decreases as well.") , value: "bonferroni"}, { label: "Hommel", info: qsTr("This correction is considered to be more powerful but less conservative than Bonferroni and Holm corrections. Recommended for a small number of tests.") , value: "hommel"} ] } From a6894e2975636a9a343e8f8fc481158b365efffe Mon Sep 17 00:00:00 2001 From: joaquin Date: Wed, 16 Jul 2025 17:56:44 -0400 Subject: [PATCH 5/5] Fixed typos and grammar in common files and minor fix to dropdown info fields on main files. --- inst/qml/MixedModelsBGLMM.qml | 2 +- inst/qml/MixedModelsGLMM.qml | 6 ++-- inst/qml/MixedModelsLMM.qml | 6 ++-- inst/qml/common/MixedModelsBOptions.qml | 14 ++++---- .../qml/common/MixedModelsMCMCDiagnostics.qml | 10 +++--- inst/qml/common/MixedModelsModel.qml | 8 ++--- inst/qml/common/MixedModelsOptions.qml | 18 +++++----- inst/qml/common/MixedModelsPlots.qml | 34 +++++++++---------- 8 files changed, 49 insertions(+), 49 deletions(-) diff --git a/inst/qml/MixedModelsBGLMM.qml b/inst/qml/MixedModelsBGLMM.qml index 3993627..214becd 100644 --- a/inst/qml/MixedModelsBGLMM.qml +++ b/inst/qml/MixedModelsBGLMM.qml @@ -94,7 +94,7 @@ Form { DropDown { name: "family" - label: qsTr("Family"); info: qsTr("Distribution function whose likelihood will be used for the dependent variable. The following options are available:") + label: qsTr("Family"); info: qsTr("Distribution function whose likelihood will be used for the dependent variable. Several options are available.") id: family indexDefaultValue: 0 values: diff --git a/inst/qml/MixedModelsGLMM.qml b/inst/qml/MixedModelsGLMM.qml index aa61527..a057bf8 100644 --- a/inst/qml/MixedModelsGLMM.qml +++ b/inst/qml/MixedModelsGLMM.qml @@ -94,7 +94,7 @@ Form { DropDown { name: "family" - label: qsTr("Family"); info: qsTr("Distribution function which likelihood will be used for the dependent variable. The following options are available:") + label: qsTr("Family"); info: qsTr("Distribution function which likelihood will be used for the dependent variable. Several options are available.") id: family indexDefaultValue: 0 values: @@ -295,7 +295,7 @@ Form { DropDown { name: "marginalMeansPAdjustment" - label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") + label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available.") values: [ { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, @@ -405,7 +405,7 @@ Form { DropDown { name: "trendsPAdjustment" - label: qsTr("P-value adjustment") + label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available.") values: [ { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, diff --git a/inst/qml/MixedModelsLMM.qml b/inst/qml/MixedModelsLMM.qml index 87d855d..9d13bee 100755 --- a/inst/qml/MixedModelsLMM.qml +++ b/inst/qml/MixedModelsLMM.qml @@ -125,7 +125,7 @@ Form { { name: "marginalMeansDf" id: marginalMeansDf - label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets. The following options are available:") + label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets. There are 3 available options.") values: [ { label: qsTr("Asymptotic"), value: "asymptotic"}, @@ -171,7 +171,7 @@ Form { DropDown { name: "marginalMeansPAdjustment" - label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available:") + label: qsTr("P-value adjustment"); info: qsTr("To correct for multiple comparison testing and avoid Type I errors, different methods for correcting the p-value are available.") values: [ { label: "Holm", info: qsTr("This method is also called sequential Bonferroni, and is considered less conservative than the Bonferroni method.") , value: "holm"}, @@ -259,7 +259,7 @@ Form { { name: "trendsDf" id: trendsDf - label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets. The following options are available:") + label: qsTr("Estimate df"); info: qsTr("Method of estimating degrees of freedom. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets. There are 3 available options.") values: [ { label: qsTr("Asymptotic"), value: "asymptotic"}, diff --git a/inst/qml/common/MixedModelsBOptions.qml b/inst/qml/common/MixedModelsBOptions.qml index b85088c..9562141 100644 --- a/inst/qml/common/MixedModelsBOptions.qml +++ b/inst/qml/common/MixedModelsBOptions.qml @@ -40,7 +40,7 @@ Section IntegerField { name: "mcmcSamples" - label: qsTr("Samples"); info: qsTr("Number of samples.") + label: qsTr("Samples"); info: qsTr("Number of MCMC samples.") defaultValue: 4000 min: parseInt(warmup.value) + 100 } @@ -48,7 +48,7 @@ Section IntegerField { name: "mcmcChains" - label: qsTr("Chains"); info: qsTr("Number of chains.") + label: qsTr("Chains"); info: qsTr("Number of MCMC chains.") defaultValue: 3 min: 1 } @@ -65,7 +65,7 @@ Section IntegerField { name: "mcmcMaxTreedepth" - label: qsTr("Maximum treedepth"); info: qsTr("The cap for number of trees evaluated during each iteration. Prevents excessively long execution times.") + label: qsTr("Maximum treedepth"); info: qsTr("The cap for the number of trees evaluated during each iteration. Prevents excessively long execution times.") defaultValue: 10 min: 5 } @@ -77,9 +77,9 @@ Section RadioButtonGroup { name: "estimateType" - title: qsTr("Show"); info: qsTr("What should be the default output.") - RadioButton { value: "deviation"; label: qsTr("Differences from intercept"); info: qsTr("A table for each fixed effects term will be created in the default output and it will show the differences from the grand mean for each of the terms' levels (or one standard deviation distance for continuous terms). This option is selected by default.") ;checked: true} - RadioButton { value: "marginalMeans"; label: qsTr("Marginal means"); info: qsTr("A table for each fixed effects term will be created in the default output and it will show the estimated marginal mean for each of the terms' levels (or one standard deviation distance for continuous terms).") } + title: qsTr("Show"); info: qsTr("Specifies the content of the default output table.") + RadioButton { value: "deviation"; label: qsTr("Differences from intercept"); info: qsTr("A table for each fixed effects terms will be created in the default output and it will show the differences from the grand mean for each of the levels of the terms(or one standard deviation distance for continuous terms). This option is selected by default.") ;checked: true} + RadioButton { value: "marginalMeans"; label: qsTr("Marginal means"); info: qsTr("A table for each fixed effects term will be created in the default output and it will show the estimated marginal mean for each of the levels of the terms(or one standard deviation distance for continuous terms).") } } Group @@ -115,6 +115,6 @@ Section CIField { name: "ciLevel" - label: qsTr("Credible interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") + label: qsTr("Credible interval"); info: qsTr("Width of the credible interval. Set at 95% by default, which can be changed by the user.") } } diff --git a/inst/qml/common/MixedModelsMCMCDiagnostics.qml b/inst/qml/common/MixedModelsMCMCDiagnostics.qml index cc7d748..e55fddd 100644 --- a/inst/qml/common/MixedModelsMCMCDiagnostics.qml +++ b/inst/qml/common/MixedModelsMCMCDiagnostics.qml @@ -39,14 +39,14 @@ Section { singleVariable: true name: "mcmcDiagnosticsHorizontal" - title: mcmcDiagnosticsType.currentValue == "scatterplot" ? qsTr("Horizontal axis") : qsTr("Plotted term"); info: qsTr("Fixed effects model term which chain will be diagnosed.") + title: mcmcDiagnosticsType.currentValue == "scatterplot" ? qsTr("Horizontal axis") : qsTr("Plotted term"); info: qsTr("Fixed effects model term whose chain will be diagnosed.") } AssignedVariablesList { singleVariable: true name: "mcmcDiagnosticsVertical" - title: qsTr("Vertical axis"); info: qsTr("Fixed effects model term which chain will be diagnosed. Only available if Plot type is Scatterplot.") + title: qsTr("Vertical axis"); info: qsTr("Fixed effects model term whose chain will be diagnosed. Only available if the Plot type is Scatterplot.") visible: active property bool active: mcmcDiagnosticsType.currentValue == "scatterplot" @@ -58,14 +58,14 @@ Section { name: "mcmcDiagnosticsType" id: mcmcDiagnosticsType - label: qsTr("Plot type"); info: qsTr("Different types of MCMC diagnostics plots. The plotted values correspond to the fixed effect terms displayed in the default output. Those are the deviations from the estimated grand mean by default, but can be changed to estimated marginal means in the Options section.") + label: qsTr("Plot type"); info: qsTr("Different types of MCMC diagnostic plots. The plotted values correspond to the fixed effect terms displayed in the default output. Those are the deviations from the estimated grand mean by default, but can be changed to estimated marginal means in the Options section.") values: [ { label: qsTr("Traceplot"), info: qsTr("Traceplot of the individual chains.") , value: "traceplot"}, { label: qsTr("Scatterplot"), info: qsTr("Scatterplot of two model terms.") , value: "scatterplot"}, { label: qsTr("Histogram"), info: qsTr("Histogram of the posterior samples.") , value: "histogram"}, - { label: qsTr("Density"), info: qsTr("Overlying densities of samples from each chain.") , value: "density"}, - { label: qsTr("Autocorrelations"), info: qsTr("Average autocorrelations across all chains.") ,value: "autocorrelation"} + { label: qsTr("Density"), info: qsTr("Overlaid density plots of samples from each chain.") , value: "density"}, + { label: qsTr("Autocorrelations"), info: qsTr("Average autocorrelation plots across all chains.") ,value: "autocorrelation"} ] } } diff --git a/inst/qml/common/MixedModelsModel.qml b/inst/qml/common/MixedModelsModel.qml index bc25e8e..eb344e6 100644 --- a/inst/qml/common/MixedModelsModel.qml +++ b/inst/qml/common/MixedModelsModel.qml @@ -43,7 +43,7 @@ Section id: fixedEffects name: "fixedEffects" title: qsTr("Fixed effects") - info: qsTr("The independent variables in the model. By default, all the main effects of the specified independent variables and their interactions are included in the model. To include interactions, click multiple variables (e.g., by holding the ctrl/cmd button on your keyboard while clicking) and drag those into the Fixed effects box.") + info: qsTr("The independent variables in the model. By default, all the main effects of the specified independent variables and their interactions are included in the model. To include more interactions, click multiple variables (e.g., by holding the ctrl/cmd button on your keyboard while clicking) and drag those into the Fixed effects box.") listViewType: JASP.Interaction allowTypeChange:false } @@ -51,7 +51,7 @@ Section CheckBox { label: qsTr("Include intercept") - info: qsTr("Include the interecpt in the model") + info: qsTr("Include the intercept in the model.") name: "includeIntercept" checked: true visible: analysisType == "frequentist" // stanova cannot summarize no-intercept models @@ -62,7 +62,7 @@ Section { id: randomEffects title: qsTr("Random effects") - info: qsTr("The random effects organized by random effects grouping factors. By default, all of the random effects corresponding to the fixed effects are included and JASP internally checks and removes non-estimable random effects. That is, the default corresponds to the maximal random effects structure justified by the design. Unticking the boxes on the left of the variable names removes the random effect from corresponding random effects grouping factor.") + info: qsTr("The random effects organized by random effects grouping factors. By default, all of the random effects corresponding to the fixed effects are included and JASP internally checks and removes non-estimable random effects. That is, the default corresponds to the maximal random effects structure justified by the design. Unticking the boxes on the left of the variable names removes the random effect from the corresponding random effects grouping factor.") name: "randomEffects" source: "randomVariables" visible: count > 0 @@ -77,7 +77,7 @@ Section { width: randomComponentsList.width Label { text: qsTr("Random components (%1)").arg(rowValue); width: parent.width / 2 } - CheckBox { label: qsTr("Correlations"); info: qsTr("Whether the correlations between the random effects parameters within each random effects grouping factor should be estimated.") ;name: "correlations"; checked: true; preferredWidth: parent.width / 2 } + CheckBox { label: qsTr("Correlations"); info: qsTr("Specifies whether the correlations between the random effects parameters within each random effects grouping factor should be estimated.") ;name: "correlations"; checked: true; preferredWidth: parent.width / 2 } } VariablesList diff --git a/inst/qml/common/MixedModelsOptions.qml b/inst/qml/common/MixedModelsOptions.qml index 0e06c0a..226750e 100644 --- a/inst/qml/common/MixedModelsOptions.qml +++ b/inst/qml/common/MixedModelsOptions.qml @@ -32,17 +32,17 @@ Section columns: 2 name: "type" title: qsTr("Type") - info: qsTr(" There are different types of the sum of squares. The choice of the type is important when there are multiple factors and when the data are unbalanced. In an unbalanced design, the different levels of the independent variable do not contain an equal number of observations (e.g., one group contains more observations than another group). In this scenario, the sum of squares type can influence the results.") + info: qsTr("There are different types of sum of squares. The choice of the type is important when there are multiple factors and when the data are unbalanced. In an unbalanced design, the different levels of the independent variable do not have an equal number of observations (e.g., one group contains more observations than another group). In such cases, the sum of squares type can influence the results.") radioButtonsOnSameRow: true - RadioButton { value: "2"; label: qsTr("II"); info: qsTr("Hierarchical/partially sequential sum of squares. It is the reduction of error when each factor is added to the model that includes all the other factors, except the factors where the added factor is a part of, such as interactions containing that factor. Langsrud (2003) advises to apply this type for an ANOVA with unbalanced data.") } - RadioButton { value: "3"; label: qsTr("III"); info: qsTr("Partial sum of squares. It is the reduction of error when each factor is added to the model that includes all the other factors, including interactions with this factor. This type is often selected, because it takes interactions into account (Langsrud, 2003). This type is selected by default and recommended for designs in which the imbalance is not a consequence of imbalance in the population, but random.") ;checked: true } + RadioButton { value: "2"; label: qsTr("II"); info: qsTr("Hierarchical/partially sequential sum of squares. It is the reduction of error when each factor is added to a model that includes all the other factors, except those in which the added factor is involved, such as interactions containing it. Langsrud (2003) advises to apply this type for an ANOVA with unbalanced data.") } + RadioButton { value: "3"; label: qsTr("III"); info: qsTr("Partial sum of squares. It is the reduction of error when each factor is added to a model that includes all the other factors, including interactions with this factor. This type is often selected, because it takes interactions into account (Langsrud, 2003). This type is selected by default and recommended for designs in which the imbalance is not a consequence of imbalance in the population, but due to random variation.") ;checked: true } } CheckBox { enabled: testMethod.currentValue == "parametricBootstrap" | testMethod.currentValue == "likelihoodRatioTest" name: "interceptTest" - label: qsTr("Test intercept"); info: qsTr("Whether the model intercept should be tested. Available only if the likelihood ratio test or parametric bootstrap is selected in the Model terms test.") + label: qsTr("Test intercept"); info: qsTr("Specifies whether the model intercept should be tested. Available only if the likelihood ratio test or parametric bootstrap is selected in the Model Terms test.") } Group @@ -51,7 +51,7 @@ Section { name: "testMethod" label: qsTr("Test method") - info: qsTr("Methods for obtaining p-values for the ANOVA summary. Note that Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets and complicated random effects structures.") + info: qsTr("Methods for obtaining p-values for the ANOVA summary. Note that the Kenward-Roger approximation for degrees of freedom can be very RAM and time consuming with larger datasets and complicated random effects structures. Several methods are available.") id: testMethod values: allMethodOptions ? [ @@ -73,8 +73,8 @@ Section info: qsTr("Specifies factor encoding for categorical variables.") values: [ - { label: qsTr("Sum"), value: "sum"}, - { label: qsTr("Treatment"), value: "treatment"} + { label: qsTr("Sum"), info: qsTr("Compares each category to the overall mean.") , value: "sum"}, + { label: qsTr("Treatment"), info: qsTr("Compares each category to a baseline category, also known as 'Dummy' coding.") ,value: "treatment"} ] } @@ -82,7 +82,7 @@ Section { enabled: testMethod.currentValue == "parametricBootstrap" name: "bootstrapSamples" - label: qsTr("No. samples") + label: qsTr("No. samples"); info: qsTr("Number of samples to be used for the parametric bootstrap.") defaultValue: 500 min: 100 fieldWidth: 60 * jaspTheme.uiScale @@ -121,7 +121,7 @@ Section CheckBox { name: "vovkSellke" - label: qsTr("Vovk-Sellke maximum p-ratio"); info: qsTr("Shows the maximum ratio of the likelihood of the obtained p value under H1 vs the likelihood of the obtained p value under H0. For example, if the two-sided p-value equals .05, the Vovk-Sellke MPR equals 2.46, indicating that this p-value is at most 2.46 times more likely to occur under H1 than under H0") + label: qsTr("Vovk-Sellke maximum p-ratio"); info: qsTr("Shows the maximum ratio of the likelihood of the obtained p-value under H1 vs the likelihood of the obtained p value under H0. For example, if the two-sided p-value equals .05, the Vovk-Sellke MPR equals 2.46, indicating that this p-value is at most 2.46 times more likely to occur under H1 than under H0.") } } diff --git a/inst/qml/common/MixedModelsPlots.qml b/inst/qml/common/MixedModelsPlots.qml index 62712c4..ead885b 100644 --- a/inst/qml/common/MixedModelsPlots.qml +++ b/inst/qml/common/MixedModelsPlots.qml @@ -54,7 +54,7 @@ Section AssignedVariablesList { name: "plotSeparatePlots" - title: qsTr("Separate plots"); info: qsTr("Variables which levels will be split across different plots.") + title: qsTr("Separate plots"); info: qsTr("Variables whose levels will be split across different plots.") } } @@ -65,14 +65,14 @@ Section AvailableVariablesList { name: "plotRandomVariables" - title: qsTr("Random effects grouping factors"); info: qsTr("Random effect grouping factors that can be used for data aggregation of data shown in the background.") + title: qsTr("Random effects grouping factors"); info: qsTr("Random effect grouping factors that can be used for data aggregation of background data.") source: "randomVariables" } AssignedVariablesList { name: "plotBackgroundData" - title: qsTr("Background data show"); info: qsTr("The level of aggregation for the response variable. I.e., if participants are selected, the individual data points in the background are their averages across the combinations of levels of fixed effect factors selected in the Horizontal axis, Separate lines, and Separate plots.") + title: qsTr("Background data show"); info: qsTr("The level of aggregation for the response variable. i.e., if participants are selected, the individual data points in the background are their averages across the combinations of levels of fixed effect factors selected in the Horizontal axis, Separate lines, and Separate plots.") addAvailableVariablesToAssigned: true } } @@ -83,7 +83,7 @@ Section { name: "plotCiType" id: plotsCImethod - label: qsTr("Confidence interval method"); info: qsTr("Type of standard error on which the error bars will be based. Default is 'model', which plots model-based standard errors. The options are:") + label: qsTr("Confidence interval method"); info: qsTr("Type of standard error on which the error bars will be based. Default is 'model', which plots model-based standard errors. Several options are available.") values: if (analysisType == "frequentist"){ [ { label: qsTr("Model"), value: "model"}, @@ -106,7 +106,7 @@ Section { enabled: plotsCImethod.currentValue != "none" name: "plotCiLevel" - label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default which can be changed by the user.") + label: qsTr("Confidence interval"); info: qsTr("Width of the confidence interval. Set at 95% by default, which can be changed by the user.") } } @@ -153,7 +153,7 @@ Section DropDown { name: "plotBackgroundElement" - label: qsTr("Background element"); info: qsTr("Type of background element to be used on the plots:") + label: qsTr("Background element"); info: qsTr("Type of background element to be used on the plots. Several options are available.") id: plotsGeom values: [ @@ -169,7 +169,7 @@ Section DoubleField { name: "plotTransparency" - label: qsTr("Transparency"); info: qsTr("Transparency of the geom.") + label: qsTr("Transparency"); info: qsTr("Transparency level of the plotted elements (geoms).") defaultValue: .7 min: 0 max: 1 @@ -208,7 +208,7 @@ Section { visible: plotsTrace.count != 0 name: "plotDodge" - label: qsTr("Dodge"); info: qsTr("Spacing between the geoms.") + label: qsTr("Dodge"); info: qsTr("Spacing between the plotted elements (geoms).") defaultValue: 0.3 min: 0 } @@ -222,7 +222,7 @@ Section { name: "plotTheme" id: plotsTheme - label: qsTr("Theme"); info: qsTr("Color palette to be used on the plot display:") + label: qsTr("Theme"); info: qsTr("Color palette to be used on the plot display. Several options are available.") values: [ { label: "JASP", value: "jasp"}, @@ -237,21 +237,21 @@ Section DropDown { name: "plotLegendPosition" - label: qsTr("Legend position"); info: qsTr("Whether and where should the legend be plotted:") + label: qsTr("Legend position"); info: qsTr("Whether and where should the legend be plotted. Several options are available.") values: [ - { label: qsTr("None"), value: "none"}, - { label: qsTr("Bottom"), value: "bottom"}, - { label: qsTr("Right"), value: "right"}, - { label: qsTr("Top"), value: "top"}, - { label: qsTr("Left"), value: "left"} + { label: qsTr("None"), info: qsTr("No legend is plotted.") , value: "none"}, + { label: qsTr("Bottom"), info: qsTr("The legend is plotted on the bottom.") , value: "bottom"}, + { label: qsTr("Right"), info: qsTr("The legend is plotted on the right.") , value: "right"}, + { label: qsTr("Top"), info: qsTr("The legend is plotted on the top.") , value: "top"}, + { label: qsTr("Left"), info: qsTr("The legend is plotted on the left.") , value: "left"} ] } DropDown { name: "plotBackgroundColor" - label: qsTr("Border color"); info: qsTr("Color of the aggregated response variable:") + label: qsTr("Border color"); info: qsTr("Color of the aggregated response variable. Several options are available.") enabled:plotsGeom.currentValue != "jitter" values: [ @@ -278,7 +278,7 @@ Section DoubleField { name: "plotRelativeSizeData" - label: qsTr("Relative size foreground data"); info: qsTr("Relative size of the foreground data (confidence interval bars, etc...).") + label: qsTr("Relative size foreground data"); info: qsTr("Relative size of the foreground data (confidence interval bars, etc.).") defaultValue: 1 min: 0 inclusive: JASP.None