Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
14a0246
GUI
JTPetter Aug 27, 2025
fcf075e
Functionality for normal dist. and historical mean
JTPetter Nov 20, 2025
0f083f6
historical values in table for all non-normal dist
JTPetter Nov 21, 2025
a758414
All functionality added
JTPetter Dec 1, 2025
8fa4bc6
Finalize historical params (before unit testing and verification)
JTPetter Dec 2, 2025
4220fd2
New xaxis break rule and unit test updates
JTPetter Dec 3, 2025
4400239
Rule to consider hist. dist. in xlimits
JTPetter Dec 3, 2025
6ba1ba6
Unit tests part 1
JTPetter Dec 4, 2025
e93c858
Finalize unit tests and add help files
JTPetter Dec 5, 2025
40550f4
Update unit tests after merging (x-axis changes and ggplot update tog…
JTPetter Jan 6, 2026
fa4ade8
Functionality for normal dist. and historical mean
JTPetter Nov 20, 2025
166e735
All functionality added
JTPetter Dec 1, 2025
52a2ed4
GUI: Extend dropdown menu with new dist.
JTPetter Jan 7, 2026
b55ac14
Extend dist. function
JTPetter Jan 20, 2026
c0d9cfd
Adjust function to always use fitdist
JTPetter Jan 21, 2026
79dc4d9
Change all functions to fitdist, keeping results, add fix.arg
JTPetter Jan 26, 2026
ba87006
fitdist environment things
JTPetter Jan 28, 2026
30f45e4
Add all new dist. to dist. fit function
JTPetter Jan 28, 2026
b0782f2
Implement new distributions for plot overlay dist.
JTPetter Jan 30, 2026
f1b4f57
adjust table fill in and update unit tests
JTPetter Feb 2, 2026
01c7a06
Make new distributions functional for tables
JTPetter Feb 3, 2026
df9aa2b
Finalize implementation of functionality
JTPetter Feb 4, 2026
1d312a2
Adjust helpfile
JTPetter Feb 5, 2026
6794ed6
Inital unit test setup
JTPetter Feb 5, 2026
d659209
Unit tests
JTPetter Feb 6, 2026
fd1e565
Add flexsurv to DESCRIPTION and lockfile
JTPetter Feb 9, 2026
9f09bdc
Fix unit tests
JTPetter Feb 9, 2026
3f6ab7d
Address Simon's Feedback
JTPetter Feb 11, 2026
6a906dd
Extend check for negative values
JTPetter Feb 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,8 @@ Imports:
tibble,
vipor,
weibullness,
utils
utils,
flexsurv
Remotes:
jasp-stats/jaspBase,
jasp-stats/jaspDescriptives,
Expand Down
345 changes: 307 additions & 38 deletions R/commonQualityControl.R

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion R/doeAnalysis.R
Original file line number Diff line number Diff line change
Expand Up @@ -1693,7 +1693,9 @@ get_levels <- function(var, num_levels, dataset) {
return()
}
result <- jaspResults[[dep]][["doeResult"]]$object[["regression"]]
plot$plotObject <- jaspGraphs::plotQQnorm(resid(result[["object"]]), abline = TRUE) + ggplot2::scale_x_continuous(expand = ggplot2::expansion(mult = 0.1)) + ggplot2::scale_y_continuous(expand = ggplot2::expansion(mult = 0.1))
plot$plotObject <- jaspGraphs::plotQQnorm(resid(result[["object"]]), abline = TRUE) +
ggplot2::scale_x_continuous(expand = ggplot2::expansion(mult = 0.1), name = gettext("Theoretical quantiles")) +
ggplot2::scale_y_continuous(expand = ggplot2::expansion(mult = 0.1), name = gettext("Observed quantiles"))
}
}

Expand Down
692 changes: 593 additions & 99 deletions R/processCapabilityStudies.R

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion inst/help/processCapabilityStudies.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,10 @@ The size of the subgroups is relevant for the calculation of the process varianc
- **Continuity Adjustment** if enabled, the Box-Cox transform includes the adjustment term $y = \frac{(x+\text{shift})^\lambda-1}{\lambda}$.

#### Type of data distribution
- Type of data distribution: indicate whether the data approximates a normal distribution or another distribution (the most commonly used distributions are: Weibull, Lognormal, 3-parameter Weibull, and 3-parameter lognorma)
- Type of data distribution: indicate whether the data approximates a normal distribution or another distribution (the available distributions are: Weibull, Lognormal, Gamma, Exponential, Logistic, Log-logistic, 3-parameter Weibull, and 3-parameter lognormal)
- Specify a distribution: the non-normal distribution to be used.
- Non-normal capability statistics: the method used to calculate the capability statistics for non-normally distributed data.
- Historical parameters: Select which parameters should use fixed historical values instead of being estimated. Note that if not all parameters are set historically, JASP keeps the historical parameters fixed while estimating the remaining parameters freely.

#### Capability studies
- Specification limits:
Expand Down
177 changes: 170 additions & 7 deletions inst/qml/processCapabilityStudies.qml
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,41 @@ Form
id : normalCapabilityAnalysis
label: qsTr("Normal distribution")
checked: true


CheckBox
{
name: "historicalMean"
label: qsTr("Historical mean")
id: historicalMean
childrenOnSameRow: true

DoubleField
{
name: "historicalMeanValue"
id: historicalMeanValue
negativeValues: true
defaultValue: 0
decimals: 9
}
}

CheckBox
{
name: "historicalStdDev"
label: qsTr("Historical std. dev.")
id: historicalStdDev
childrenOnSameRow: true

DoubleField
{
name: "historicalStdDevValue"
id: historicalStdDevValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}
}

RadioButton
Expand All @@ -289,13 +324,125 @@ Form
values:
[
{label: qsTr("Weibull"), value: "weibull"},
{label: qsTr("Lognormal"), value: "lognormal"},
{label: qsTr("Log-normal"), value: "lognormal"},
{label: qsTr("Gamma"), value: "gamma"},
{label: qsTr("Exponential"), value: "exponential"},
{label: qsTr("Logistic"), value: "logistic"},
{label: qsTr("Log-logistic"), value: "loglogistic"},
{label: qsTr("3-parameter Weibull"), value: "3ParameterWeibull"},
{label: qsTr("3-parameter lognormal"), value: "3ParameterLognormal"}
{label: qsTr("3-parameter log-normal"), value: "3ParameterLognormal"}
]
indexDefaultValue: 0
}

CheckBox
{
name: "historicalShape"
label: qsTr("Historical shape")
id: historicalShape
childrenOnSameRow: true
visible: nonNormalDistribution.currentValue == "weibull" || nonNormalDistribution.currentValue == "3ParameterWeibull" || nonNormalDistribution.currentValue == "gamma"

DoubleField
{
name: "historicalShapeValue"
id: historicalShapeValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}

CheckBox
{
name: "historicalLocation"
label: qsTr("Historical location")
id: historicalLocation
childrenOnSameRow: true
visible: nonNormalDistribution.currentValue == "logistic" || nonNormalDistribution.currentValue == "loglogistic"

DoubleField
{
name: "historicalLocationValue"
id: historicalLocationValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}

CheckBox
{
name: "historicalScale"
label: qsTr("Historical scale")
id: historicalScale
childrenOnSameRow: true
visible: nonNormalDistribution.currentValue == "weibull" || nonNormalDistribution.currentValue == "3ParameterWeibull" || nonNormalDistribution.currentValue == "gamma" || nonNormalDistribution.currentValue == "exponential" || nonNormalDistribution.currentValue == "logistic" || nonNormalDistribution.currentValue == "loglogistic"

DoubleField
{
name: "historicalScaleValue"
id: historicalScaleValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}

CheckBox
{
name: "historicalLogMean"
label: qsTr("Historical log mean")
id: historicalLogMean
childrenOnSameRow: true
visible: nonNormalDistribution.currentValue == "lognormal" || nonNormalDistribution.currentValue == "3ParameterLognormal"

DoubleField
{
name: "historicalLogMeanValue"
id: historicalLogMeanValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}

CheckBox
{
name: "historicalLogStdDev"
label: qsTr("Historical log std. dev.")
id: historicalLogStdDev
childrenOnSameRow: true
visible: nonNormalDistribution.currentValue == "lognormal" || nonNormalDistribution.currentValue == "3ParameterLognormal"

DoubleField
{
name: "historicalLogStdDevValue"
id: historicalLogStdDevValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}

CheckBox
{
name: "historicalThreshold"
label: qsTr("Historical threshold")
id: historicalThreshold
childrenOnSameRow: true
visible: nonNormalDistribution.currentValue == "3ParameterLognormal" || nonNormalDistribution.currentValue == "3ParameterWeibull"

DoubleField
{
name: "historicalThresholdValue"
id: historicalThresholdValue
negativeValues: true
defaultValue: 1
decimals: 9
}
}

DropDown
{
name: "nonNormalMethod"
Expand Down Expand Up @@ -809,13 +956,29 @@ Form
label: qsTr("Null distribution for probability plot")
values:
[
{ label: qsTr("Normal"), value: "normal" },
{ label: qsTr("Lognormal"), value: "lognormal" },
{ label: qsTr("Weibull"), value: "weibull" }
{ label: qsTr("Normal"), value: "normal" },
{ label: qsTr("Log-normal"), value: "lognormal" },
{ label: qsTr("Weibull"), value: "weibull" },
{ label: qsTr("Gamma"), value: "gamma" },
{ label: qsTr("Exponential"), value: "exponential"},
{ label: qsTr("Logistic"), value: "logistic" },
{ label: qsTr("Log-logistic"), value: "loglogistic"},
{ label: qsTr("3-parameter Weibull"), value: "3ParameterWeibull"},
{ label: qsTr("3-parameter log-normal"), value: "3ParameterLognormal"}




]
indexDefaultValue: (capabilityStudyType.value == "nonNormalCapabilityAnalysis") ?
(nonNormalDistribution.currentValue == "lognormal" || nonNormalDistribution.currentValue == "3ParameterLognormal") ? 1 :
(nonNormalDistribution.currentValue == "3ParameterWeibull" || nonNormalDistribution.currentValue == "weibull") ? 2 : 0
(nonNormalDistribution.currentValue == "lognormal") ? 1 :
(nonNormalDistribution.currentValue == "weibull") ? 2 :
(nonNormalDistribution.currentValue == "gamma") ? 3 :
(nonNormalDistribution.currentValue == "exponential") ? 4 :
(nonNormalDistribution.currentValue == "logistic") ? 5 :
(nonNormalDistribution.currentValue == "loglogistic") ? 6 :
(nonNormalDistribution.currentValue == "3ParameterWeibull") ? 7 :
(nonNormalDistribution.currentValue == "3ParameterLognormal") ? 8 : 0
: 0
}

Expand Down
Loading
Loading