Summary
This experiment investigates nail polish durability. Box-Behnken design to maximize chip resistance and gloss retention by tuning base coat thickness, color coat layers, and top coat formula.
The design varies 3 factors: base coats (coats), ranging from 1 to 2, color coats (coats), ranging from 1 to 3, and topcoat thickness (mils), ranging from 1 to 3. The goal is to optimize 2 responses: days no chip (days) (maximize) and gloss retention pct (%) (maximize). Fixed conditions held constant across all runs include prep = dehydrator, cure = air_dry.
A Box-Behnken design was chosen because it efficiently fits quadratic models with 3 continuous factors while avoiding extreme corner combinations — requiring only 15 runs instead of the 8 needed for a full factorial at two levels.
Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.
Key Findings
For days no chip, the most influential factors were base coats (45.9%), topcoat thickness (34.1%), color coats (20.0%). The best observed value was 9.0 (at base coats = 2, color coats = 1, topcoat thickness = 2).
For gloss retention pct, the most influential factors were base coats (40.2%), topcoat thickness (36.6%), color coats (23.2%). The best observed value was 85.0 (at base coats = 2, color coats = 3, topcoat thickness = 2).
Recommended Next Steps
- Run confirmation experiments at the predicted optimal settings to validate the model.
- Consider whether any fixed factors should be varied in a future study.
Experimental Setup
Factors
| Factor | Low | High | Unit |
base_coats | 1 | 2 | coats |
color_coats | 1 | 3 | coats |
topcoat_thickness | 1 | 3 | mils |
Fixed: prep = dehydrator, cure = air_dry
Responses
| Response | Direction | Unit |
days_no_chip | ↑ maximize | days |
gloss_retention_pct | ↑ maximize | % |
Configuration
{
"metadata": {
"name": "Nail Polish Durability",
"description": "Box-Behnken design to maximize chip resistance and gloss retention by tuning base coat thickness, color coat layers, and top coat formula"
},
"factors": [
{
"name": "base_coats",
"levels": [
"1",
"2"
],
"type": "continuous",
"unit": "coats"
},
{
"name": "color_coats",
"levels": [
"1",
"3"
],
"type": "continuous",
"unit": "coats"
},
{
"name": "topcoat_thickness",
"levels": [
"1",
"3"
],
"type": "continuous",
"unit": "mils"
}
],
"fixed_factors": {
"prep": "dehydrator",
"cure": "air_dry"
},
"responses": [
{
"name": "days_no_chip",
"optimize": "maximize",
"unit": "days"
},
{
"name": "gloss_retention_pct",
"optimize": "maximize",
"unit": "%"
}
],
"settings": {
"operation": "box_behnken",
"test_script": "use_cases/221_nail_polish_durability/sim.sh"
}
}
Experimental Matrix
The Box-Behnken Design produces 15 runs. Each row is one experiment with specific factor settings.
| Run | base_coats | color_coats | topcoat_thickness |
| 1 | 1.5 | 1 | 1 |
| 2 | 1.5 | 2 | 2 |
| 3 | 2 | 2 | 3 |
| 4 | 2 | 2 | 1 |
| 5 | 1.5 | 2 | 2 |
| 6 | 1.5 | 2 | 2 |
| 7 | 1 | 2 | 3 |
| 8 | 2 | 1 | 2 |
| 9 | 1.5 | 1 | 3 |
| 10 | 2 | 3 | 2 |
| 11 | 1 | 2 | 1 |
| 12 | 1.5 | 3 | 3 |
| 13 | 1 | 1 | 2 |
| 14 | 1 | 3 | 2 |
| 15 | 1.5 | 3 | 1 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/221_nail_polish_durability/config.json
2
Generate the runner script
$ doe generate --config use_cases/221_nail_polish_durability/config.json \
--output use_cases/221_nail_polish_durability/results/run.sh --seed 42
3
Execute the experiments
$ bash use_cases/221_nail_polish_durability/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/221_nail_polish_durability/config.json
5
Get optimization recommendations
$ doe optimize --config use_cases/221_nail_polish_durability/config.json
6
Multi-objective optimization
With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.
$ doe optimize --config use_cases/221_nail_polish_durability/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/221_nail_polish_durability/config.json \
--output use_cases/221_nail_polish_durability/results/report.html
Features Exercised
| Feature | Value |
| Design type | box_behnken |
| Factor types | continuous (all 3) |
| Arg style | double-dash |
| Responses | 2 (days_no_chip ↑, gloss_retention_pct ↑) |
| Total runs | 15 |
Analysis Results
Generated from actual experiment runs using the DOE Helper Tool.
Response: days_no_chip
Top factors: base_coats (45.9%), topcoat_thickness (34.1%), color_coats (20.0%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| base_coats | 2 | 14.9048 | 7.4524 | 1.065 | 0.3891 |
| color_coats | 2 | 2.4048 | 1.2024 | 0.172 | 0.8452 |
| topcoat_thickness | 2 | 7.4762 | 3.7381 | 0.534 | 0.6058 |
| Lack | of | Fit | 6 | 34.5476 | 5.7579 |
| Pure | Error | 2 | 14.0000 | | |
| Error | 8 | 48.5476 | 7.0000 | | |
| Total | 14 | 73.3333 | 5.2381 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: gloss_retention_pct
Top factors: base_coats (40.2%), topcoat_thickness (36.6%), color_coats (23.2%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| base_coats | 2 | 158.2333 | 79.1167 | 1.404 | 0.3001 |
| color_coats | 2 | 41.3762 | 20.6881 | 0.367 | 0.7037 |
| topcoat_thickness | 2 | 101.8762 | 50.9381 | 0.904 | 0.4425 |
| Lack | of | Fit | 6 | 631.5810 | 105.2635 |
| Pure | Error | 2 | 112.6667 | | |
| Error | 8 | 744.2476 | 56.3333 | | |
| Total | 14 | 1045.7333 | 74.6952 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response Surface Plots
3D surfaces fitted with quadratic RSM. Red dots are observed data points.
days no chip base coats vs color coats
days no chip base coats vs topcoat thickness
days no chip color coats vs topcoat thickness
gloss retention pct base coats vs color coats
gloss retention pct base coats vs topcoat thickness
gloss retention pct color coats vs topcoat thickness
Multi-Objective Optimization
When responses compete, Derringer–Suich desirability finds the best compromise.
Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.
Overall Desirability
D = 0.9802
Per-Response Desirability
| Response | Weight | Desirability | Predicted | Dir |
days_no_chip |
1.0 |
|
8.97 0.9511 8.97 days |
↑ |
gloss_retention_pct |
1.5 |
|
88.19 1.0000 88.19 % |
↑ |
Recommended Settings
| Factor | Value |
base_coats | 1 coats |
color_coats | 3 coats |
topcoat_thickness | 1.6 mils |
Source: from RSM model prediction
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
gloss_retention_pct | 88.19 | 85.00 | -3.19 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #12 | 0.9074 | base_coats=1, color_coats=1, topcoat_thickness=2 |
| #10 | 0.8006 | base_coats=1, color_coats=3, topcoat_thickness=2 |
Model Quality
| Response | R² | Type |
gloss_retention_pct | 0.8193 | quadratic |
Full Multi-Objective Output
============================================================
MULTI-OBJECTIVE OPTIMIZATION
Method: Derringer-Suich Desirability Function
============================================================
Overall desirability: D = 0.9802
Response Weight Desirability Predicted Direction
---------------------------------------------------------------------
days_no_chip 1.0 0.9511 8.97 days ↑
gloss_retention_pct 1.5 1.0000 88.19 % ↑
Recommended settings:
base_coats = 1 coats
color_coats = 3 coats
topcoat_thickness = 1.6 mils
(from RSM model prediction)
Trade-off summary:
days_no_chip: 8.97 (best observed: 9.00, sacrifice: +0.03)
gloss_retention_pct: 88.19 (best observed: 85.00, sacrifice: -3.19)
Model quality:
days_no_chip: R² = 0.7136 (quadratic)
gloss_retention_pct: R² = 0.8193 (quadratic)
Top 3 observed runs by overall desirability:
1. Run #3 (D=0.9342): base_coats=2, color_coats=1, topcoat_thickness=2
2. Run #12 (D=0.9074): base_coats=1, color_coats=1, topcoat_thickness=2
3. Run #10 (D=0.8006): base_coats=1, color_coats=3, topcoat_thickness=2
Full Analysis Output
=== Main Effects: days_no_chip ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
base_coats 2.2143 0.5909 45.9%
topcoat_thickness 1.6429 0.5909 34.1%
color_coats 0.9643 0.5909 20.0%
=== ANOVA Table: days_no_chip ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
base_coats 2 14.9048 7.4524 1.065 0.3891
color_coats 2 2.4048 1.2024 0.172 0.8452
topcoat_thickness 2 7.4762 3.7381 0.534 0.6058
Lack of Fit 6 34.5476 5.7579 0.823 0.6396
Pure Error 2 14.0000 7.0000
Error 8 48.5476 7.0000
Total 14 73.3333 5.2381
=== Summary Statistics: days_no_chip ===
base_coats:
Level N Mean Std Min Max
------------------------------------------------------------
1 4 4.0000 2.1602 1.0000 6.0000
1.5 7 5.7143 2.4300 2.0000 9.0000
2 4 3.5000 1.7321 1.0000 5.0000
color_coats:
Level N Mean Std Min Max
------------------------------------------------------------
1 4 4.7500 2.0616 2.0000 7.0000
2 7 4.2857 2.8115 1.0000 9.0000
3 4 5.2500 1.8930 4.0000 8.0000
topcoat_thickness:
Level N Mean Std Min Max
------------------------------------------------------------
1 4 5.0000 2.5820 2.0000 8.0000
2 7 5.1429 1.7728 4.0000 9.0000
3 4 3.5000 3.0000 1.0000 7.0000
=== Main Effects: gloss_retention_pct ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
base_coats 6.7500 2.2315 40.2%
topcoat_thickness 6.1429 2.2315 36.6%
color_coats 3.8929 2.2315 23.2%
=== ANOVA Table: gloss_retention_pct ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
base_coats 2 158.2333 79.1167 1.404 0.3001
color_coats 2 41.3762 20.6881 0.367 0.7037
topcoat_thickness 2 101.8762 50.9381 0.904 0.4425
Lack of Fit 6 631.5810 105.2635 1.869 0.3889
Pure Error 2 112.6667 56.3333
Error 8 744.2476 56.3333
Total 14 1045.7333 74.6952
=== Summary Statistics: gloss_retention_pct ===
base_coats:
Level N Mean Std Min Max
------------------------------------------------------------
1 4 68.2500 7.7190 59.0000 76.0000
1.5 7 75.0000 9.8658 58.0000 85.0000
2 4 68.7500 6.4485 61.0000 75.0000
color_coats:
Level N Mean Std Min Max
------------------------------------------------------------
1 4 72.2500 10.2103 58.0000 82.0000
2 7 69.8571 8.8775 59.0000 84.0000
3 4 73.7500 8.5391 65.0000 85.0000
topcoat_thickness:
Level N Mean Std Min Max
------------------------------------------------------------
1 4 70.5000 11.4455 58.0000 85.0000
2 7 74.1429 6.0671 65.0000 84.0000
3 4 68.0000 10.4881 59.0000 82.0000
Optimization Recommendations
=== Optimization: days_no_chip ===
Direction: maximize
Best observed run: #3
base_coats = 2
color_coats = 1
topcoat_thickness = 2
Value: 9.0
RSM Model (linear, R² = 0.3307, Adj R² = 0.1481):
Coefficients:
intercept +4.6667
base_coats +1.0000
color_coats -0.3750
topcoat_thickness -1.3750
RSM Model (quadratic, R² = 0.7148, Adj R² = 0.2014):
Coefficients:
intercept +4.3333
base_coats +1.0000
color_coats -0.3750
topcoat_thickness -1.3750
base_coats*color_coats -0.5000
base_coats*topcoat_thickness +0.0000
color_coats*topcoat_thickness +0.7500
base_coats^2 +0.2083
color_coats^2 +1.9583
topcoat_thickness^2 -1.5417
Curvature analysis:
color_coats coef=+1.9583 convex (has a minimum)
topcoat_thickness coef=-1.5417 concave (has a maximum)
base_coats coef=+0.2083 convex (has a minimum)
Notable interactions:
color_coats*topcoat_thickness coef=+0.7500 (synergistic)
base_coats*color_coats coef=-0.5000 (antagonistic)
Predicted optimum (from quadratic model, at observed points):
base_coats = 2
color_coats = 1
topcoat_thickness = 2
Predicted value: 8.3750
Surface optimum (via L-BFGS-B, quadratic model):
base_coats = 2
color_coats = 1
topcoat_thickness = 1.31081
Predicted value: 9.1073
Model quality: Good fit — general trends are captured, some noise remains.
Factor importance:
1. topcoat_thickness (effect: 3.1, contribution: 41.0%)
2. color_coats (effect: 2.4, contribution: 32.4%)
3. base_coats (effect: 2.0, contribution: 26.7%)
=== Optimization: gloss_retention_pct ===
Direction: maximize
Best observed run: #12
base_coats = 2
color_coats = 3
topcoat_thickness = 2
Value: 85.0
RSM Model (linear, R² = 0.4184, Adj R² = 0.2597):
Coefficients:
intercept +71.5333
base_coats +3.2500
color_coats -2.2500
topcoat_thickness -6.2500
RSM Model (quadratic, R² = 0.7404, Adj R² = 0.2730):
Coefficients:
intercept +69.0000
base_coats +3.2500
color_coats -2.2500
topcoat_thickness -6.2500
base_coats*color_coats +1.5000
base_coats*topcoat_thickness -1.5000
color_coats*topcoat_thickness +3.0000
base_coats^2 +3.2500
color_coats^2 +6.2500
topcoat_thickness^2 -4.7500
Curvature analysis:
color_coats coef=+6.2500 convex (has a minimum)
topcoat_thickness coef=-4.7500 concave (has a maximum)
base_coats coef=+3.2500 convex (has a minimum)
Notable interactions:
color_coats*topcoat_thickness coef=+3.0000 (synergistic)
base_coats*color_coats coef=+1.5000 (synergistic)
base_coats*topcoat_thickness coef=-1.5000 (antagonistic)
Predicted optimum (from quadratic model, at observed points):
base_coats = 2
color_coats = 1
topcoat_thickness = 2
Predicted value: 82.5000
Surface optimum (via L-BFGS-B, quadratic model):
base_coats = 2
color_coats = 1
topcoat_thickness = 1
Predicted value: 88.5000
Model quality: Good fit — general trends are captured, some noise remains.
Factor importance:
1. topcoat_thickness (effect: 12.5, contribution: 45.3%)
2. color_coats (effect: 8.6, contribution: 31.2%)
3. base_coats (effect: 6.5, contribution: 23.5%)