hanalyze-design: Design-of-experiments layer of hanalyze (DoE / MSA)

[ bsd3, library, machine-learning, math, numeric, statistics ] [ Propose Tags ] [ Report a vulnerability ]

The design-of-experiments layer of the hanalyze toolkit. Generates designs -- full and fractional factorials, orthogonal arrays and Taguchi robust designs, blocking, definitive screening designs, response surface designs (CCD Box-Behnken), DAIE/G-optimal designs by Fedorov exchange (including augmentation of an existing design), space-filling designs (LHS maximin LHS Halton), mixture designs and the Custom Design family with factor, model and constraint definitions -- and evaluates the resulting data: analysis of variance, design diagnostics, power and sample size, process capability, Gauge R&R measurement system analysis, and sequential RSM helpers. . Module names match the umbrella package hanalyze, which re-exports everything, so downstream imports stay identical. See README.md for the module map and a standalone usage example.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.2.0.1
Dependencies base (>=4.14 && <5), containers (>=0.6 && <0.8), dataframe-core (>=1.1 && <1.2), dataframe-csv (>=1.0.2 && <1.1), hanalyze-core (==0.2.0.1), hanalyze-frame (==0.2.0.1), hanalyze-models (==0.2.0.1), hmatrix (>=0.20 && <0.22), mwc-random (>=0.15 && <0.16), primitive (>=0.7 && <0.10), statistics (>=0.16 && <0.17), text (>=1.2 && <2.2), vector (>=0.12 && <0.14) [details]
Tested with ghc ==9.6.7
License BSD-3-Clause
Copyright 2026 Aelysce Project (Toshiaki Honda)
Author Toshiaki Honda
Maintainer frenzieddoll@gmail.com
Uploaded by frenzieddoll at 2026-08-13T05:54:47Z
Category Math, Statistics, Numeric, Machine Learning
Distributions
Reverse Dependencies 2 direct, 2 indirect [details]
Downloads 1 total (1 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2026-08-13 [all 1 reports]

Readme for hanalyze-design-0.2.0.1

[back to package description]

hanalyze-design

The design of experiments (DoE) layer of hanalyze. It owns both the generation of designs (factorial / orthogonal arrays / RSM / optimal design / space-filling / mixture) and the evaluation of the resulting data (ANOVA / power / process capability / measurement system analysis) — 30 modules in total.

It depends on the three layers core / frame / models, plus 10 external packages. Because model fitting is delegated to -models, the quadratic model for RSM and the information-matrix computation for optimal design are not self-contained here — they use regression from the models layer. -viz sits on top of this layer.

Main modules (30 in total)

Classical design generation (Hanalyze.Design.*)

Module Role
Design.Factorial Full / two-level / three-level / fractional / mixed-level factorial designs — the entry point for DoE
Design.Orthogonal / Design.Taguchi Orthogonal arrays (L8 / L9 / L12, …) / robust design via SN ratio and inner/outer arrays
Design.Mixed / Design.Block Mixed-level designs / blocking (randomized block design)
Design.DSD Definitive Screening Design (Jones-Nachtsheim 2011)
Design.RSM Response surface methodology — CCD/Box-Behnken generation, quadratic model fit, analytical solution for the extremum

Optimal design, space filling, and mixture

Module Role
Design.Optimal D / A / I / E / G-optimal (Fedorov exchange algorithm) plus augmenting an existing design (augmentDesign)
Design.SpaceFilling Space-filling designs — LHS / Maximin LHS / Halton (for computer experiments)
Design.Mixture Mixture designs — Simplex Lattice / Simplex Centroid (component proportions sum to 1)
Design.MultiRSM Simultaneous optimization of multiple responses (used together with Desirability)

Custom Design (Design.Custom.*)

A general-purpose design-generation system where the user assembles factors, model, and constraints. 11 modules.

Module Role
Custom.Factor / Custom.Model Factor definitions (continuous / categorical / discrete numeric) / specifying model terms
Custom.Constraint / Design.Constraint Narrowing candidate points under linear/nonlinear constraints
Custom.Augment Menu for adding runs (AddRuns, etc.) — calls Design.Optimal.augmentDesign
Custom.SplitPlot Split-plot experiments (whole plot / sub plot)
Custom.Bayesian Bayesian D-optimal design (DuMouchel-Jones 1994)
Custom.Power / Custom.Compare Power evaluation / comparison of multiple designs
Custom.Coordinate / Custom.Structured / Custom.RegionMoment Coordinate-exchange algorithm / structured designs / region moment matrix (I-optimal)

Analysis & evaluation

Module Role
Design.Anova Analysis of variance (significance of factor effects)
Design.Diagnostics Design diagnostics (confounding / alias structure / condition number)
Design.Power Power and required-sample-size calculations
Design.Quality Process capability indices (Cp / Cpk, etc.)
Design.GaugeRR Gauge R&R — measurement system analysis (per AIAG MSA 4th ed.)

Sequential & workflow

Module Role
Design.Sequential Sequential RSM — steepest-ascent path generation and placement of the next CCD
Design.Workflow Support for the design → experiment → analysis → next-design cycle

Using it standalone

If you only need to generate designs, this package alone is sufficient:

build-depends: hanalyze-design
import Hanalyze.Design.Factorial (twoLevelFactorial, fullFactorial)

main :: IO ()
main = do
  mapM_ print (twoLevelFactorial 3)
  -- [-1.0,-1.0,-1.0] / [-1.0,-1.0,1.0] / … / [1.0,1.0,1.0]  (2³ = 8 run)
  mapM_ print (fullFactorial [[180, 200, 220], [10, 20]])
  -- [180.0,10.0] / [180.0,20.0] / [200.0,10.0] / … / [220.0,20.0]  (3×2 = 6 run)

twoLevelFactorial k produces a coded (±1) 2^k design; fullFactorial takes the Cartesian product of the given per-factor level lists directly, so the resulting design table stays in the original units.

Normally you would just depend on the umbrella package hanalyze and get all of the above from a single import Hanalyze. Naming a layer directly is only worth it when you want to minimize dependencies.

repository README