Skip to content

doe: FDS comparison of CCD variants, Box-Behnken and Doehlert - #54

Open
kgdunn wants to merge 2 commits into
mainfrom
claude/ccd-design-fds-analysis-xhq90e
Open

kgdunn wants to merge 2 commits into
mainfrom
claude/ccd-design-fds-analysis-xhq90e

Conversation

@kgdunn

@kgdunn kgdunn commented Jul 15, 2026

Copy link
Copy Markdown
Owner

What this adds

A fraction-of-design-space (FDS) study contrasting the design families from Igor Miranda Santana's central composite design post (linked below), built in the style of the book's omnibus comparison across design families. All new files live in doe/.

The comparison runs at k = 3 factors - the smallest number at which every family in the post exists (Box-Behnken needs k >= 3) and at which all of them are full rank on the complete second-order model (intercept + 3 linear + 3 two-factor interactions + 3 pure quadratics = 10 terms).

New files

  • ccd_variants_designs.py - shared builders and an evaluate() wrapper, mirroring omnibus_designs.py. The central composite variants (circumscribed/rotatable, face-centred, inscribed) are built by direct construction, because the library's full-cube CCD only honours the named alphas; Box-Behnken comes from process_improve; Doehlert uses a canonical simplex-difference generator (all shell points on the unit sphere). Prediction variance and the dense FDS curve come from process_improve's evaluate_design over the cube region with the corner vertices included.
  • fds-compare-design-families.py -> fds-compare-design-families.png. Overlaid FDS (scaled prediction variance) for the five families, linear panel for the central bulk and log panel out to the corners. The inscribed CCD and Doehlert never leave the unit sphere, so they extrapolate badly at the cube corners; the circumscribed and face-centred CCDs and Box-Behnken stay well behaved.
  • fds-ccd-varying-alpha.py -> fds-ccd-varying-alpha.png. FDS of one CCD as the axial distance alpha is swept from face-centred (1) through rotatable (1.682) and out to 2, showing the interior-variance-versus-reach trade-off.
  • ccd-variants-geometry.py -> ccd-variants-geometry.png. A k = 2 coded-space picture of the three CCD variants and Doehlert, mirroring the diagram in the post.
  • check_ccd_variants.py - construction assertions, the k = 3 comparison table the figures visualise, and the k = 5 run counts (43 / 27 / 41 / 31) quoted in the post, reproduced and asserted.

Reproducing

From doe/: python3 check_ccd_variants.py validates the constructions and prints both tables; the three *.py figure scripts each regenerate their PNG. Requires process-improve[expt] (used as a library; no changes to that package).

Source post: https://www.linkedin.com/posts/igor-miranda-santana-64090b53_doe-activity-7482811159092580352-IrfX

🤖 Generated with Claude Code

https://claude.ai/code/session_01PEPUURkGJ1QJK5F2KZZeH8


Generated by Claude Code

claude added 2 commits July 15, 2026 03:14
Add a k=3 fraction-of-design-space study contrasting the design families
from Igor Miranda Santana's central composite design post, in the style of
the book's omnibus comparison across design families.

- ccd_variants_designs.py: shared builders (circumscribed, face-centred and
  inscribed CCDs via direct construction; Box-Behnken via process_improve;
  a canonical simplex-difference Doehlert generator) and an evaluate()
  wrapper over process_improve's FDS metric on the full second-order model.
- fds-compare-design-families.py: overlaid FDS (scaled prediction variance)
  for the five families over the cube, linear and log panels.
- fds-ccd-varying-alpha.py: FDS of one CCD as the axial distance alpha is
  swept from face-centred (1) through rotatable (1.682) and beyond.
- ccd-variants-geometry.py: k=2 coded-space geometry mirroring the post.
- check_ccd_variants.py: construction assertions plus the k=3 comparison
  table and the k=5 run counts (43/27/41/31) quoted in the post.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PEPUURkGJ1QJK5F2KZZeH8
The uniform-shell designs (Doehlert, inscribed CCD) only look bad on the
cube because their reach stops at the unit sphere; over the ball they are
built for they are competitive. Add ball_fds_curve() to integrate the
scaled prediction variance over a chosen radius (the library's spherical
region uses the wider radius-sqrt(k) circumscribing sphere), and a
side-by-side figure showing the ranking flip between the two regions.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PEPUURkGJ1QJK5F2KZZeH8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants