A step by step example of a Central Composite Design (CCD)

A step by step example of a Central Composite Design (CCD)

If your full or fractional factorial pointed you in the right direction but you still can’t answer “where is the optimum?”, it’s time for a Central Composite Design (CCD). In this post, I’ll build directly on the ideas from Introducing Fractional & Central Composite Designs and walk through a practical, step‑by‑step CCD using the same filtration example from A step by step example of a full factorial design. We’ll keep it hands‑on, focus on what matters in practice, and compare effort versus insight along the way.

When to use a CCD (recap)

A CCD is the right tool when:

  • You’ve already screened and narrowed to a few important factors.
  • You suspect curvature or need to locate a maximum/minimum.
  • You want a predictive model you can trust near the optimum.

In short: don’t start with a CCD. Use it after screening (fractional or full factorial) when you’re ready to fine‑tune.

CCDs and Response Surface Methodology (RSM)

Central composite designs are a core piece of Response Surface Methodology—a family of designs and analyses used to model curved (quadratic) relationships and search for optima. RSM typically uses:

  • Central Composite Designs (this post)
  • Box–Behnken Designs

The goal is a quadratic model that is accurate in the region of interest so you can navigate to the best settings confidently.

CCD vs. 3‑level full factorial: run counts

Before diving into the example, let’s address the obvious alternative. You could explore curvature using a 3-level full factorial design, testing each factor at low, middle, and high levels. While this works, it’s expensive. A CCD is much more efficient.

Example with 4 factors (k = 4):

  • 3‑level full factorial: 3^4 = 81 runs
  • CCD (rotatable): 2^4 factorial points (16) + 2k axial/star points (8) + center replicates (e.g., 5) ≈ 29 runs

Even with extra center points for pure error, a CCD achieves basically the same modeling capability with less than one‑third the runs required by a 3‑level full factorial design.

Filtration rate example

Let’s return to our filtration process from our full factorial example.

  • T — Temperature: 20–40°C
  • P — Pressure: 1–3 bar
  • CoF — Formaldehyde concentration: 2–6%
  • RPM — Agitation speed: 100–300

We again work in coded units to keep the math clean and comparable across factors.

Note: In the full factorial design we already established that pressure is an insignificant parameter. We could drop it from our analysis and skip including it in our central composite design, saving 2 experimental runs by eliminating 2 star points (for pressure). Since the experimental effort is negligible, we’ll leave it in and use it to estimate error.

CCD design

A central composite design combines three types of experimental points:

  1. Factorial points: The corners of our design space (coded as ±1)
  2. Center points: Multiple runs at the center of the design space (coded as 0)
  3. Star points: Extended points beyond the factorial range (coded as ±α)

For our example, this translates to:

FactorLow (−1)Center (0)High (+1)
T203040
P123
CoF246
RPM100200300

Choosing the star point distance (alpha)

The star point distance α determines how far beyond your original factorial range you’ll test. Common choices are:

  • Rotatable design with α = 2^(k/4): You obtain a rotatable design. This gives uniform prediction precision at equal distance from the center in any direction.
  • Face-centered design with α = 1: If ±α exceeds safe/feasible real‑unit limits, use a face‑centered CCD (α = 1). It’s less rotatable but often more practical with hard constraints.

In our example we use a face-centered design as using a rotatable design would require to test P, CoF and RPM for -alpha at 0 which is practically not feasible. This is how the design table looks like. We added 5 center points to estimate error:

RunPoint TypeTPCoFRPMFiltration Rate
1Factorial−1−1−1−145.0
2Factorial+1−1−1−171.0
3Factorial−1+1−1−148.0
4Factorial+1+1−1−165.0
5Factorial−1−1+1−168.0
6Factorial+1−1+1−160.0
7Factorial−1+1+1−180.0
8Factorial+1+1+1−165.0
9Factorial−1−1−1+143.0
10Factorial+1−1−1+1100.0
11Factorial−1+1−1+145.0
12Factorial+1+1−1+1104.0
13Factorial−1−1+1+175.0
14Factorial+1−1+1+186.0
15Factorial−1+1+1+170.0
16Factorial+1+1+1+196.0
17Star+100067.3
18Star−100045.1
19Star0+10070.1
20Star0−10067.7
21Star00+1073.3
22Star00−1063.4
23Star000+176.6
24Star000−161.4
25Center000069.7
26Center000070.5
27Center000069.7
28Center000069.7
29Center000070.3

Note: The factorial points are the same combinations we tested in our original 2-level factorial example, but now we’re adding star points and center points to capture curve relationships. You do not need to repeat the full factorial points but can use the results from the full factorial experiment.

Modeling the response surface

Unlike our previous linear analysis (see here), CCD allows us to fit a quadratic model that can capture curvature. The general process remains the same as with the linear model—we build it through backward elimination or forward selection (check here if you need a refresher)—but this time we also include quadratic model terms.

We can start with the linear model from our full factorial design:

Filtration Rate = β₀ + β₁·T + β₂·CoF + β₃·RPM + β₁₂·(T×CoF) + β₁₃·(T×RPM)

Then extend it to include quadratic terms for the main effects:

Filtration Rate = β₀ + β₁·T + β₂·CoF + β₃·RPM + β₁₂·(T×CoF) + β₁₃·(T×RPM) + β₁₁·T² + β₂₂·CoF² + β₃₃·RPM²

The resulting ANOVA table shows:

SourceDFSum of SquaresMean SquareF-ratiop-value
Intercept143624.2543624.252745.30< 0.001
T12115.322115.32133.12< 0.001
CoF1438.77438.7727.61< 0.001
RPM1972.11972.1161.18< 0.001
T×CoF11314.061314.0682.69< 0.001
T×RPM11105.561105.5669.57< 0.001
RPM²175.1975.194.730.042
1165.06165.0610.390.004
CoF²158.0658.063.650.070
Residual20317.8115.89--

The CoF² term has a p-value of 0.070, which exceeds our significance criterion of p < 0.05, making it non-significant. We’ll remove it to keep only the significant terms:

SourceDFSum of SquaresMean SquareF-ratiop-value
Intercept146014.0946014.092570.80< 0.001
T12115.322115.32118.18< 0.001
CoF1438.77438.7724.51< 0.001
RPM1972.11972.1154.31< 0.001
T×CoF11314.061314.0673.42< 0.001
T×RPM11105.561105.5661.77< 0.001
RPM²1168.85168.859.430.006
1113.37113.376.330.020
Residual21375.8717.90--

Visualize the response surface

Several visualization methods can help us understand the response surface. A 3D surface plot is one option:

3D Response Surface Plot

Figure 1: 3D response surface showing filtration rate as a function of Temperature and Stirring rate (with CoF and P held at center levels) for both, the base linear model as well as the quadratic model. The surface for the quadratic model shows subtle curvature.

The response surface for the quadratic model shows subtle curvature compared to the strictly linear base model. This curvature appears to capture how filtration rate changes with different factors slightly better than a purely linear relationship.

Another way to visualize the response surface is through contour plots. They show “equal response” lines, much like elevation contours on a topographic map. The drawback is that you cannot directly display your measured values within the plot to get an idea of how good the fit is. But it is anyway better to rely on residual analysis for model evaluation.

Contour Plot Temperature vs Stirring rate

Figure 2: Contour plot showing filtration rate contours for temperature (T) vs. stirring rate (RPM).

Comparing the linear vs. quadratic model performance

In this example, the quadratic model provides only a modest improvement over the linear model, as we can see when directly comparing measured and predicted values for both approaches. The quadratic model is slightly better at predicting the response, but the improvement is relatively small. This tells us that our original linear model from the factorial design was already capturing most of the important relationships in this system.

RunTPCoFRPMActual RateData SourceLinear PredQuadratic PredLinear ErrorQuadratic Error
1−1−1−1−145.0Full Factorial44.945.4−0.10.4
2+1−1−1−171.0Full Factorial68.168.6−2.9−2.4
3−1+1−1−148.0Full Factorial44.945.4−3.1−2.6
4+1+1−1−165.0Full Factorial68.168.63.13.6
5−1−1+1−168.0Full Factorial72.973.44.95.4
6+1−1+1−160.0Full Factorial59.960.4−0.10.4
7−1+1+1−180.0Full Factorial72.973.4−7.1−6.6
8+1+1+1−165.0Full Factorial59.960.4−5.1−4.6
9−1−1−1+143.0Full Factorial43.043.50.00.5
10+1−1−1+1100.0Full Factorial99.499.9−0.6−0.1
11−1+1−1+145.0Full Factorial43.043.5−2.0−1.5
12+1+1−1+1104.0Full Factorial99.499.9−4.6−4.1
13−1−1+1+175.0Full Factorial71.071.5−4.0−3.5
14+1−1+1+186.0Full Factorial91.291.75.25.7
15−1+1+1+170.0Full Factorial71.071.51.01.5
16+1+1+1+196.0Full Factorial91.291.7−4.8−4.3
17+100067.3CCD Star79.773.112.45.8
18−100045.1CCD Star58.051.412.96.3
190+10070.1CCD Star68.868.0−1.3−2.1
200−10067.7CCD Star68.868.01.10.3
2100+1073.3CCD Star73.873.00.5−0.3
2200−1063.4CCD Star63.963.10.5−0.3
23000+176.6CCD Star76.282.4−0.45.8
24000−161.4CCD Star61.567.70.16.3
25000069.7CCD Center68.868.0−0.9−1.7
26000070.5CCD Center68.868.0−1.7−2.5
27000069.7CCD Center68.868.0−0.9−1.7
28000069.7CCD Center68.868.0−0.9−1.7
29000070.3CCD Center68.868.0−1.5−2.3

Look at the highlighted rows (17-18): these star points demonstrate where the quadratic model actually outperforms the linear model. The linear model struggled to predict these intermediate factor level combinations, while the quadratic model handles them much better. Overall, however, the improvement wasn’t dramatic.

This situation isn’t uncommon. Sometimes quadratic models provide dramatic improvements, especially in optimization problems near a true optimum. Other times, like here, the linear model was already performing well, and the quadratic terms only add incremental value.

The key insight is that we tested for curvature and found it to be minimal in our current operating range. If we had chosen wider factor ranges or were closer to a true optimum, the quadratic effects might have been more pronounced.

What’s next

<< Create a Central Composite Design in Python >>

<< Mathematical models in DoE >>

<< Central composite design vs. Box-Behnken design — coming soon >>