Summary
This experiment investigates hydroponic nutrient solution. Plackett-Burman screening of nitrogen, phosphorus, potassium, pH, EC, and calcium for lettuce growth rate and leaf color.
The design varies 6 factors: nitrogen ppm (ppm), ranging from 100 to 250, phosphorus ppm (ppm), ranging from 30 to 80, potassium ppm (ppm), ranging from 150 to 350, ph level (pH), ranging from 5.5 to 6.5, ec level (mS/cm), ranging from 1.0 to 2.5, and calcium ppm (ppm), ranging from 100 to 250. The goal is to optimize 2 responses: growth rate (g/day) (maximize) and color score (pts) (maximize). Fixed conditions held constant across all runs include crop = butterhead_lettuce, system = NFT.
A Plackett-Burman screening design was used to efficiently test 6 factors in only 8 runs. This design assumes interactions are negligible and focuses on identifying the most influential main effects.
Key Findings
For growth rate, the most influential factors were calcium ppm (39.8%), nitrogen ppm (38.5%), ec level (8.5%). The best observed value was 5.84 (at nitrogen ppm = 100, phosphorus ppm = 80, potassium ppm = 150).
For color score, the most influential factors were nitrogen ppm (52.6%), calcium ppm (29.5%), potassium ppm (5.1%). The best observed value was 8.7 (at nitrogen ppm = 100, phosphorus ppm = 80, potassium ppm = 150).
Recommended Next Steps
- Follow up with a response surface design (CCD or Box-Behnken) on the top 3–4 factors to model curvature and find the true optimum.
- Consider whether any fixed factors should be varied in a future study.
- The screening results can guide factor reduction — drop factors contributing less than 5% and re-run with a smaller, more focused design.
Experimental Setup
Factors
| Factor | Low | High | Unit |
nitrogen_ppm | 100 | 250 | ppm |
phosphorus_ppm | 30 | 80 | ppm |
potassium_ppm | 150 | 350 | ppm |
ph_level | 5.5 | 6.5 | pH |
ec_level | 1.0 | 2.5 | mS/cm |
calcium_ppm | 100 | 250 | ppm |
Fixed: crop = butterhead_lettuce, system = NFT
Responses
| Response | Direction | Unit |
growth_rate | ↑ maximize | g/day |
color_score | ↑ maximize | pts |
Configuration
{
"metadata": {
"name": "Hydroponic Nutrient Solution",
"description": "Plackett-Burman screening of nitrogen, phosphorus, potassium, pH, EC, and calcium for lettuce growth rate and leaf color"
},
"factors": [
{
"name": "nitrogen_ppm",
"levels": [
"100",
"250"
],
"type": "continuous",
"unit": "ppm"
},
{
"name": "phosphorus_ppm",
"levels": [
"30",
"80"
],
"type": "continuous",
"unit": "ppm"
},
{
"name": "potassium_ppm",
"levels": [
"150",
"350"
],
"type": "continuous",
"unit": "ppm"
},
{
"name": "ph_level",
"levels": [
"5.5",
"6.5"
],
"type": "continuous",
"unit": "pH"
},
{
"name": "ec_level",
"levels": [
"1.0",
"2.5"
],
"type": "continuous",
"unit": "mS/cm"
},
{
"name": "calcium_ppm",
"levels": [
"100",
"250"
],
"type": "continuous",
"unit": "ppm"
}
],
"fixed_factors": {
"crop": "butterhead_lettuce",
"system": "NFT"
},
"responses": [
{
"name": "growth_rate",
"optimize": "maximize",
"unit": "g/day"
},
{
"name": "color_score",
"optimize": "maximize",
"unit": "pts"
}
],
"settings": {
"operation": "plackett_burman",
"test_script": "use_cases/100_hydroponic_nutrient/sim.sh"
}
}
Experimental Matrix
The Plackett-Burman Design produces 8 runs. Each row is one experiment with specific factor settings.
| Run | nitrogen_ppm | phosphorus_ppm | potassium_ppm | ph_level | ec_level | calcium_ppm |
| 1 | 250 | 80 | 350 | 5.5 | 1.0 | 100 |
| 2 | 100 | 30 | 350 | 6.5 | 1.0 | 100 |
| 3 | 100 | 80 | 150 | 6.5 | 1.0 | 250 |
| 4 | 250 | 80 | 350 | 6.5 | 2.5 | 250 |
| 5 | 100 | 80 | 150 | 5.5 | 2.5 | 100 |
| 6 | 250 | 30 | 150 | 6.5 | 2.5 | 100 |
| 7 | 100 | 30 | 350 | 5.5 | 2.5 | 250 |
| 8 | 250 | 30 | 150 | 5.5 | 1.0 | 250 |
Step-by-Step Workflow
1
Preview the design
$ doe info --config use_cases/100_hydroponic_nutrient/config.json
2
Generate the runner script
$ doe generate --config use_cases/100_hydroponic_nutrient/config.json \
--output use_cases/100_hydroponic_nutrient/results/run.sh --seed 42
3
Execute the experiments
$ bash use_cases/100_hydroponic_nutrient/results/run.sh
4
Analyze results
$ doe analyze --config use_cases/100_hydroponic_nutrient/config.json
5
Get optimization recommendations
$ doe optimize --config use_cases/100_hydroponic_nutrient/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/100_hydroponic_nutrient/config.json --multi
7
Generate the HTML report
$ doe report --config use_cases/100_hydroponic_nutrient/config.json \
--output use_cases/100_hydroponic_nutrient/results/report.html
Features Exercised
| Feature | Value |
| Design type | plackett_burman |
| Factor types | continuous (all 6) |
| Arg style | double-dash |
| Responses | 2 (growth_rate ↑, color_score ↑) |
| Total runs | 8 |
Analysis Results
Generated from actual experiment runs using the DOE Helper Tool.
Response: growth_rate
Top factors: calcium_ppm (39.8%), nitrogen_ppm (38.5%), ec_level (8.5%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| nitrogen_ppm | 1 | 6.1776 | 6.1776 | 26.741 | 0.0013 |
| phosphorus_ppm | 1 | 0.1891 | 0.1891 | 0.819 | 0.3957 |
| potassium_ppm | 1 | 0.0010 | 0.0010 | 0.004 | 0.9491 |
| ph_level | 1 | 0.1540 | 0.1540 | 0.667 | 0.4411 |
| ec_level | 1 | 0.3003 | 0.3003 | 1.300 | 0.2917 |
| calcium_ppm | 1 | 6.6066 | 6.6066 | 28.598 | 0.0011 |
| nitrogen_ppm*phosphorus_ppm | 1 | 0.0010 | 0.0010 | 0.004 | 0.9491 |
| nitrogen_ppm*potassium_ppm | 1 | 0.1891 | 0.1891 | 0.819 | 0.3957 |
| nitrogen_ppm*ph_level | 1 | 0.3003 | 0.3003 | 1.300 | 0.2917 |
| nitrogen_ppm*ec_level | 1 | 0.1540 | 0.1540 | 0.667 | 0.4411 |
| nitrogen_ppm*calcium_ppm | 1 | 0.0006 | 0.0006 | 0.003 | 0.9604 |
| phosphorus_ppm*potassium_ppm | 1 | 6.1776 | 6.1776 | 26.741 | 0.0013 |
| phosphorus_ppm*ph_level | 1 | 6.6066 | 6.6066 | 28.598 | 0.0011 |
| phosphorus_ppm*ec_level | 1 | 0.0006 | 0.0006 | 0.003 | 0.9604 |
| phosphorus_ppm*calcium_ppm | 1 | 0.1540 | 0.1540 | 0.667 | 0.4411 |
| potassium_ppm*ph_level | 1 | 0.0006 | 0.0006 | 0.003 | 0.9604 |
| potassium_ppm*ec_level | 1 | 6.6066 | 6.6066 | 28.598 | 0.0011 |
| potassium_ppm*calcium_ppm | 1 | 0.3003 | 0.3003 | 1.300 | 0.2917 |
| ph_level*ec_level | 1 | 6.1776 | 6.1776 | 26.741 | 0.0013 |
| ph_level*calcium_ppm | 1 | 0.1891 | 0.1891 | 0.819 | 0.3957 |
| ec_level*calcium_ppm | 1 | 0.0010 | 0.0010 | 0.004 | 0.9491 |
| Error | (Lenth | PSE) | 7 | 1.6171 | 0.2310 |
| Total | 7 | 13.4293 | 1.9185 | | |
Pareto Chart
Main Effects Plot
Normal Probability Plot of Effects
Half-Normal Plot of Effects
Model Diagnostics
Response: color_score
Top factors: nitrogen_ppm (52.6%), calcium_ppm (29.5%), potassium_ppm (5.1%).
ANOVA
| Source | DF | SS | MS | F | p-value |
| Source | DF | SS | MS | F | p-value |
| nitrogen_ppm | 1 | 8.4050 | 8.4050 | 124.519 | 0.0000 |
| phosphorus_ppm | 1 | 0.0450 | 0.0450 | 0.667 | 0.4411 |
| potassium_ppm | 1 | 0.0800 | 0.0800 | 1.185 | 0.3124 |
| ph_level | 1 | 0.0800 | 0.0800 | 1.185 | 0.3124 |
| ec_level | 1 | 0.0450 | 0.0450 | 0.667 | 0.4411 |
| calcium_ppm | 1 | 2.6450 | 2.6450 | 39.185 | 0.0004 |
| nitrogen_ppm*phosphorus_ppm | 1 | 0.0800 | 0.0800 | 1.185 | 0.3124 |
| nitrogen_ppm*potassium_ppm | 1 | 0.0450 | 0.0450 | 0.667 | 0.4411 |
| nitrogen_ppm*ph_level | 1 | 0.0450 | 0.0450 | 0.667 | 0.4411 |
| nitrogen_ppm*ec_level | 1 | 0.0800 | 0.0800 | 1.185 | 0.3124 |
| nitrogen_ppm*calcium_ppm | 1 | 0.0200 | 0.0200 | 0.296 | 0.6031 |
| phosphorus_ppm*potassium_ppm | 1 | 8.4050 | 8.4050 | 124.519 | 0.0000 |
| phosphorus_ppm*ph_level | 1 | 2.6450 | 2.6450 | 39.185 | 0.0004 |
| phosphorus_ppm*ec_level | 1 | 0.0200 | 0.0200 | 0.296 | 0.6031 |
| phosphorus_ppm*calcium_ppm | 1 | 0.0800 | 0.0800 | 1.185 | 0.3124 |
| potassium_ppm*ph_level | 1 | 0.0200 | 0.0200 | 0.296 | 0.6031 |
| potassium_ppm*ec_level | 1 | 2.6450 | 2.6450 | 39.185 | 0.0004 |
| potassium_ppm*calcium_ppm | 1 | 0.0450 | 0.0450 | 0.667 | 0.4411 |
| ph_level*ec_level | 1 | 8.4050 | 8.4050 | 124.519 | 0.0000 |
| ph_level*calcium_ppm | 1 | 0.0450 | 0.0450 | 0.667 | 0.4411 |
| ec_level*calcium_ppm | 1 | 0.0800 | 0.0800 | 1.185 | 0.3124 |
| Error | (Lenth | PSE) | 7 | 0.4725 | 0.0675 |
| Total | 7 | 11.3200 | 1.6171 | | |
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.
color score ec level vs calcium ppm
color score nitrogen ppm vs calcium ppm
color score nitrogen ppm vs ec level
color score nitrogen ppm vs ph level
color score nitrogen ppm vs phosphorus ppm
color score nitrogen ppm vs potassium ppm
color score ph level vs calcium ppm
color score ph level vs ec level
color score phosphorus ppm vs calcium ppm
color score phosphorus ppm vs ec level
color score phosphorus ppm vs ph level
color score phosphorus ppm vs potassium ppm
color score potassium ppm vs calcium ppm
color score potassium ppm vs ec level
color score potassium ppm vs ph level
growth rate ec level vs calcium ppm
growth rate nitrogen ppm vs calcium ppm
growth rate nitrogen ppm vs ec level
growth rate nitrogen ppm vs ph level
growth rate nitrogen ppm vs phosphorus ppm
growth rate nitrogen ppm vs potassium ppm
growth rate ph level vs calcium ppm
growth rate ph level vs ec level
growth rate phosphorus ppm vs calcium ppm
growth rate phosphorus ppm vs ec level
growth rate phosphorus ppm vs ph level
growth rate phosphorus ppm vs potassium ppm
growth rate potassium ppm vs calcium ppm
growth rate potassium ppm vs ec level
growth rate potassium ppm vs ph level
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.9545
Per-Response Desirability
| Response | Weight | Desirability | Predicted | Dir |
growth_rate |
1.5 |
|
5.84 0.9545 5.84 g/day |
↑ |
color_score |
1.5 |
|
8.70 0.9545 8.70 pts |
↑ |
Recommended Settings
| Factor | Value |
nitrogen_ppm | 250 ppm |
phosphorus_ppm | 80 ppm |
potassium_ppm | 350 ppm |
ph_level | 5.5 pH |
ec_level | 1.0 mS/cm |
calcium_ppm | 100 ppm |
Source: from observed run #4
Trade-off Summary
Sacrifice = how much worse than single-objective best.
| Response | Predicted | Best Observed | Sacrifice |
color_score | 8.70 | 8.70 | +0.00 |
Top 3 Runs by Desirability
| Run | D | Factor Settings |
| #1 | 0.8121 | nitrogen_ppm=100, phosphorus_ppm=80, potassium_ppm=150, ph_level=6.5, ec_level=1.0, calcium_ppm=250 |
| #6 | 0.5913 | nitrogen_ppm=250, phosphorus_ppm=30, potassium_ppm=150, ph_level=5.5, ec_level=1.0, calcium_ppm=250 |
Model Quality
| Response | R² | Type |
color_score | 0.8405 | linear |
Full Multi-Objective Output
============================================================
MULTI-OBJECTIVE OPTIMIZATION
Method: Derringer-Suich Desirability Function
============================================================
Overall desirability: D = 0.9545
Response Weight Desirability Predicted Direction
---------------------------------------------------------------------
growth_rate 1.5 0.9545 5.84 g/day ↑
color_score 1.5 0.9545 8.70 pts ↑
Recommended settings:
nitrogen_ppm = 250 ppm
phosphorus_ppm = 80 ppm
potassium_ppm = 350 ppm
ph_level = 5.5 pH
ec_level = 1.0 mS/cm
calcium_ppm = 100 ppm
(from observed run #4)
Trade-off summary:
growth_rate: 5.84 (best observed: 5.84, sacrifice: +0.00)
color_score: 8.70 (best observed: 8.70, sacrifice: +0.00)
Model quality:
growth_rate: R² = 0.8787 (linear)
color_score: R² = 0.8405 (linear)
Top 3 observed runs by overall desirability:
1. Run #4 (D=0.9545): nitrogen_ppm=250, phosphorus_ppm=80, potassium_ppm=350, ph_level=5.5, ec_level=1.0, calcium_ppm=100
2. Run #1 (D=0.8121): nitrogen_ppm=100, phosphorus_ppm=80, potassium_ppm=150, ph_level=6.5, ec_level=1.0, calcium_ppm=250
3. Run #6 (D=0.5913): nitrogen_ppm=250, phosphorus_ppm=30, potassium_ppm=150, ph_level=5.5, ec_level=1.0, calcium_ppm=250
Full Analysis Output
=== Main Effects: growth_rate ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
calcium_ppm 1.8175 0.4897 39.8%
nitrogen_ppm -1.7575 0.4897 38.5%
ec_level 0.3875 0.4897 8.5%
phosphorus_ppm -0.3075 0.4897 6.7%
ph_level -0.2775 0.4897 6.1%
potassium_ppm -0.0225 0.4897 0.5%
=== ANOVA Table: growth_rate ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
nitrogen_ppm 1 6.1776 6.1776 26.741 0.0013
phosphorus_ppm 1 0.1891 0.1891 0.819 0.3957
potassium_ppm 1 0.0010 0.0010 0.004 0.9491
ph_level 1 0.1540 0.1540 0.667 0.4411
ec_level 1 0.3003 0.3003 1.300 0.2917
calcium_ppm 1 6.6066 6.6066 28.598 0.0011
nitrogen_ppm*phosphorus_ppm 1 0.0010 0.0010 0.004 0.9491
nitrogen_ppm*potassium_ppm 1 0.1891 0.1891 0.819 0.3957
nitrogen_ppm*ph_level 1 0.3003 0.3003 1.300 0.2917
nitrogen_ppm*ec_level 1 0.1540 0.1540 0.667 0.4411
nitrogen_ppm*calcium_ppm 1 0.0006 0.0006 0.003 0.9604
phosphorus_ppm*potassium_ppm 1 6.1776 6.1776 26.741 0.0013
phosphorus_ppm*ph_level 1 6.6066 6.6066 28.598 0.0011
phosphorus_ppm*ec_level 1 0.0006 0.0006 0.003 0.9604
phosphorus_ppm*calcium_ppm 1 0.1540 0.1540 0.667 0.4411
potassium_ppm*ph_level 1 0.0006 0.0006 0.003 0.9604
potassium_ppm*ec_level 1 6.6066 6.6066 28.598 0.0011
potassium_ppm*calcium_ppm 1 0.3003 0.3003 1.300 0.2917
ph_level*ec_level 1 6.1776 6.1776 26.741 0.0013
ph_level*calcium_ppm 1 0.1891 0.1891 0.819 0.3957
ec_level*calcium_ppm 1 0.0010 0.0010 0.004 0.9491
Error (Lenth PSE) 7 1.6171 0.2310
Total 7 13.4293 1.9185
Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design)
=== Interaction Effects: growth_rate ===
Factor A Factor B Interaction % Contribution
------------------------------------------------------------------------
phosphorus_ppm ph_level 1.8175 19.8%
potassium_ppm ec_level 1.8175 19.8%
phosphorus_ppm potassium_ppm -1.7575 19.1%
ph_level ec_level -1.7575 19.1%
nitrogen_ppm ph_level 0.3875 4.2%
potassium_ppm calcium_ppm 0.3875 4.2%
nitrogen_ppm potassium_ppm -0.3075 3.3%
ph_level calcium_ppm -0.3075 3.3%
nitrogen_ppm ec_level -0.2775 3.0%
phosphorus_ppm calcium_ppm -0.2775 3.0%
nitrogen_ppm phosphorus_ppm -0.0225 0.2%
ec_level calcium_ppm -0.0225 0.2%
nitrogen_ppm calcium_ppm -0.0175 0.2%
phosphorus_ppm ec_level -0.0175 0.2%
potassium_ppm ph_level -0.0175 0.2%
=== Summary Statistics: growth_rate ===
nitrogen_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 4.4475 1.1388 3.3400 5.8400
250 4 2.6900 1.0585 1.5700 3.7000
phosphorus_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
30 4 3.7225 1.5878 2.0100 5.8400
80 4 3.4150 1.3756 1.5700 4.8900
potassium_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
150 4 3.5800 1.1853 2.0100 4.8900
350 4 3.5575 1.7525 1.5700 5.8400
ph_level:
Level N Mean Std Min Max
------------------------------------------------------------
5.5 4 3.7075 1.7432 1.5700 5.8400
6.5 4 3.4300 1.1774 2.0100 4.8900
ec_level:
Level N Mean Std Min Max
------------------------------------------------------------
1.0 4 3.3750 1.3736 1.5700 4.8900
2.5 4 3.7625 1.5779 2.0100 5.8400
calcium_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 2.6600 1.0322 1.5700 3.7200
250 4 4.4775 1.0994 3.4800 5.8400
=== Main Effects: color_score ===
Factor Effect Std Error % Contribution
--------------------------------------------------------------
nitrogen_ppm -2.0500 0.4496 52.6%
calcium_ppm 1.1500 0.4496 29.5%
potassium_ppm -0.2000 0.4496 5.1%
ph_level -0.2000 0.4496 5.1%
ec_level 0.1500 0.4496 3.8%
phosphorus_ppm -0.1500 0.4496 3.8%
=== ANOVA Table: color_score ===
Source DF SS MS F p-value
-----------------------------------------------------------------------------
nitrogen_ppm 1 8.4050 8.4050 124.519 0.0000
phosphorus_ppm 1 0.0450 0.0450 0.667 0.4411
potassium_ppm 1 0.0800 0.0800 1.185 0.3124
ph_level 1 0.0800 0.0800 1.185 0.3124
ec_level 1 0.0450 0.0450 0.667 0.4411
calcium_ppm 1 2.6450 2.6450 39.185 0.0004
nitrogen_ppm*phosphorus_ppm 1 0.0800 0.0800 1.185 0.3124
nitrogen_ppm*potassium_ppm 1 0.0450 0.0450 0.667 0.4411
nitrogen_ppm*ph_level 1 0.0450 0.0450 0.667 0.4411
nitrogen_ppm*ec_level 1 0.0800 0.0800 1.185 0.3124
nitrogen_ppm*calcium_ppm 1 0.0200 0.0200 0.296 0.6031
phosphorus_ppm*potassium_ppm 1 8.4050 8.4050 124.519 0.0000
phosphorus_ppm*ph_level 1 2.6450 2.6450 39.185 0.0004
phosphorus_ppm*ec_level 1 0.0200 0.0200 0.296 0.6031
phosphorus_ppm*calcium_ppm 1 0.0800 0.0800 1.185 0.3124
potassium_ppm*ph_level 1 0.0200 0.0200 0.296 0.6031
potassium_ppm*ec_level 1 2.6450 2.6450 39.185 0.0004
potassium_ppm*calcium_ppm 1 0.0450 0.0450 0.667 0.4411
ph_level*ec_level 1 8.4050 8.4050 124.519 0.0000
ph_level*calcium_ppm 1 0.0450 0.0450 0.667 0.4411
ec_level*calcium_ppm 1 0.0800 0.0800 1.185 0.3124
Error (Lenth PSE) 7 0.4725 0.0675
Total 7 11.3200 1.6171
Note: Error estimated using Lenth's pseudo-standard-error (unreplicated design)
=== Interaction Effects: color_score ===
Factor A Factor B Interaction % Contribution
------------------------------------------------------------------------
phosphorus_ppm potassium_ppm -2.0500 25.3%
ph_level ec_level -2.0500 25.3%
phosphorus_ppm ph_level 1.1500 14.2%
potassium_ppm ec_level 1.1500 14.2%
nitrogen_ppm phosphorus_ppm -0.2000 2.5%
nitrogen_ppm ec_level -0.2000 2.5%
phosphorus_ppm calcium_ppm -0.2000 2.5%
ec_level calcium_ppm -0.2000 2.5%
nitrogen_ppm ph_level 0.1500 1.9%
potassium_ppm calcium_ppm 0.1500 1.9%
nitrogen_ppm potassium_ppm -0.1500 1.9%
ph_level calcium_ppm -0.1500 1.9%
nitrogen_ppm calcium_ppm 0.1000 1.2%
phosphorus_ppm ec_level 0.1000 1.2%
potassium_ppm ph_level 0.1000 1.2%
=== Summary Statistics: color_score ===
nitrogen_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 8.0250 0.6397 7.3000 8.7000
250 4 5.9750 0.7500 5.2000 6.8000
phosphorus_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
30 4 7.0750 1.3226 5.5000 8.7000
80 4 6.9250 1.4175 5.2000 8.4000
potassium_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
150 4 7.1000 1.2517 5.5000 8.4000
350 4 6.9000 1.4765 5.2000 8.7000
ph_level:
Level N Mean Std Min Max
------------------------------------------------------------
5.5 4 7.1000 1.4855 5.2000 8.7000
6.5 4 6.9000 1.2410 5.5000 8.4000
ec_level:
Level N Mean Std Min Max
------------------------------------------------------------
1.0 4 6.9250 1.3301 5.2000 8.4000
2.5 4 7.0750 1.4104 5.5000 8.7000
calcium_ppm:
Level N Mean Std Min Max
------------------------------------------------------------
100 4 6.4250 1.2580 5.2000 7.7000
250 4 7.5750 1.1442 6.4000 8.7000
Optimization Recommendations
=== Optimization: growth_rate ===
Direction: maximize
Best observed run: #4
nitrogen_ppm = 100
phosphorus_ppm = 80
potassium_ppm = 150
ph_level = 6.5
ec_level = 1.0
calcium_ppm = 250
Value: 5.84
RSM Model (linear, R² = 0.9859, Adj R² = 0.9014):
Coefficients:
intercept +3.5687
nitrogen_ppm +0.2837
phosphorus_ppm +0.8787
potassium_ppm -0.6163
ph_level +0.4312
ec_level +0.0112
calcium_ppm +0.4862
Predicted optimum (from linear model, at observed points):
nitrogen_ppm = 100
phosphorus_ppm = 80
potassium_ppm = 150
ph_level = 6.5
ec_level = 1.0
calcium_ppm = 250
Predicted value: 5.6862
Surface optimum (via L-BFGS-B, linear model):
nitrogen_ppm = 250
phosphorus_ppm = 80
potassium_ppm = 150
ph_level = 6.5
ec_level = 2.5
calcium_ppm = 250
Predicted value: 6.2762
Model quality: Excellent fit — surface predictions are reliable.
Factor importance:
1. phosphorus_ppm (effect: 1.8, contribution: 32.5%)
2. potassium_ppm (effect: -1.2, contribution: 22.8%)
3. calcium_ppm (effect: 1.0, contribution: 18.0%)
4. ph_level (effect: 0.9, contribution: 15.9%)
5. nitrogen_ppm (effect: 0.6, contribution: 10.5%)
6. ec_level (effect: 0.0, contribution: 0.4%)
=== Optimization: color_score ===
Direction: maximize
Best observed run: #4
nitrogen_ppm = 100
phosphorus_ppm = 80
potassium_ppm = 150
ph_level = 6.5
ec_level = 1.0
calcium_ppm = 250
Value: 8.7
RSM Model (linear, R² = 0.9960, Adj R² = 0.9722):
Coefficients:
intercept +7.0000
nitrogen_ppm +0.2250
phosphorus_ppm +1.0250
potassium_ppm -0.4000
ph_level +0.2750
ec_level +0.1000
calcium_ppm +0.2500
Predicted optimum (from linear model, at observed points):
nitrogen_ppm = 100
phosphorus_ppm = 80
potassium_ppm = 150
ph_level = 6.5
ec_level = 1.0
calcium_ppm = 250
Predicted value: 8.6250
Surface optimum (via L-BFGS-B, linear model):
nitrogen_ppm = 250
phosphorus_ppm = 80
potassium_ppm = 150
ph_level = 6.5
ec_level = 2.5
calcium_ppm = 250
Predicted value: 9.2750
Model quality: Excellent fit — surface predictions are reliable.
Factor importance:
1. phosphorus_ppm (effect: 2.1, contribution: 45.1%)
2. potassium_ppm (effect: -0.8, contribution: 17.6%)
3. ph_level (effect: 0.6, contribution: 12.1%)
4. calcium_ppm (effect: 0.5, contribution: 11.0%)
5. nitrogen_ppm (effect: 0.4, contribution: 9.9%)
6. ec_level (effect: 0.2, contribution: 4.4%)