πŸŽ‰ 75% of content is free forever β€” Unlock Premium from $10/mo β†’
CW
Search courses…
πŸ’Ό Servicesℹ️ Aboutβœ‰οΈ ContactView Pricing Plansfrom $10

Response Surface Methods

Advanced Statistical MethodsExperimental Design🟒 Free Lesson

Advertisement

Response Surface Methods

Advanced Statistical Methods

Finding the Optimal Operating Conditions

Response surface methodology fits quadratic models to explore curvature and locate optimal factor settings. Steepest ascent and ridge analysis guide the search toward the best operating conditions.

  • Chemical engineering β€” Optimize reaction temperature, pressure, and catalyst concentration for maximum yield
  • Food science β€” Find the perfect balance of ingredients and processing conditions
  • Materials science β€” Optimize manufacturing parameters for desired material properties

RSM maps the terrain of your process so you can climb to the optimum.


Response Surface Methodology (RSM) is a collection of statistical and mathematical techniques useful for developing, improving, and optimizing processes where the response of interest is influenced by several factors. RSM quantifies the relationship between input variables and one or more responses, enabling systematic exploration of the factor space to identify optimal operating conditions. The methodology integrates experimental design, regression modeling, and optimization algorithms within a unified mathematical framework.

Quadratic Response Surface Model

DfSecond-Order Response Surface Model

The general second-order response surface model for kk factors is:

Y=Ξ²0+βˆ‘j=1kΞ²jXj+βˆ‘j=1kΞ²jjXj2+βˆ‘j<lΞ²jlXjXl+Ξ΅Y = \beta_0 + \sum_{j=1}^{k} \beta_j X_j + \sum_{j=1}^{k} \beta_{jj} X_j^2 + \sum_{j<l} \beta_{jl} X_j X_l + \varepsilon

In matrix notation:

Y=XΞ²+Ξ΅\mathbf{Y} = \mathbf{X}\boldsymbol{\beta} + \boldsymbol{\varepsilon}

where X\mathbf{X} is the design matrix including linear, quadratic, and cross-product terms, and Ξ²\boldsymbol{\beta} is the parameter vector. The model contains (k+22)\binom{k+2}{2} unique parameters.

Matrix Form of Second-Order Model

The expanded model for k=2k = 2 factors (X1X_1, X2X_2):

Y=Ξ²0+Ξ²1X1+Ξ²2X2+Ξ²11X12+Ξ²22X22+Ξ²12X1X2+Ξ΅Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + \beta_{11} X_1^2 + \beta_{22} X_2^2 + \beta_{12} X_1 X_2 + \varepsilon

The design matrix X\mathbf{X} for a single observation includes columns:

xi=[1,Xi1,Xi2,Xi12,Xi22,Xi1Xi2]\mathbf{x}_i = \left[1, \quad X_{i1}, \quad X_{i2}, \quad X_{i1}^2, \quad X_{i2}^2, \quad X_{i1}X_{i2}\right]

The least squares estimator:

Ξ²^=(XTX)βˆ’1XTY\hat{\boldsymbol{\beta}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}

Stationary Point and Canonical Analysis

The stationary point of the response surface is found by setting the gradient to zero.

ThStationary Point of Second-Order Surface

The stationary point xs\mathbf{x}_s of the second-order response surface satisfies:

βˆ‚Y^βˆ‚x=b+2Bx=0\frac{\partial \hat{Y}}{\partial \mathbf{x}} = \mathbf{b} + 2\mathbf{B}\mathbf{x} = \mathbf{0}

Solving:

xs=βˆ’12Bβˆ’1b\mathbf{x}_s = -\frac{1}{2}\mathbf{B}^{-1}\mathbf{b}

where b\mathbf{b} is the vector of linear coefficients and B\mathbf{B} is the matrix of quadratic and interaction coefficients:

B=[Ξ²11Ξ²12/2Ξ²12/2Ξ²22]\mathbf{B} = \begin{bmatrix} \beta_{11} & \beta_{12}/2 \\ \beta_{12}/2 & \beta_{22} \end{bmatrix}

The predicted response at the stationary point:

Y^s=Ξ²0+12bTxs\hat{Y}_s = \beta_0 + \frac{1}{2}\mathbf{b}^T\mathbf{x}_s

DfCanonical Analysis

The response surface can be expressed in canonical form by diagonalizing B\mathbf{B}. Let P\mathbf{P} be the orthogonal matrix of eigenvectors of B\mathbf{B} and Ξ›=diag(Ξ»1,Ξ»2,…,Ξ»k)\mathbf{\Lambda} = \text{diag}(\lambda_1, \lambda_2, \ldots, \lambda_k) the eigenvalue matrix. Defining new variables w=PT(xβˆ’xs)\mathbf{w} = \mathbf{P}^T(\mathbf{x} - \mathbf{x}_s):

Y^=Y^s+Ξ»1w12+Ξ»2w22+β‹―+Ξ»kwk2\hat{Y} = \hat{Y}_s + \lambda_1 w_1^2 + \lambda_2 w_2^2 + \cdots + \lambda_k w_k^2

The nature of the stationary point is determined by the eigenvalues Ξ»i\lambda_i:

  • All Ξ»i<0\lambda_i < 0: Maximum (response surface curves downward in all directions)
  • All Ξ»i>0\lambda_i > 0: Minimum (response surface curves upward in all directions)
  • Mixed signs: Saddle point (surface curves upward in some directions, downward in others)

Canonical Analysis of Response Surface

Problem: The fitted second-order model for a chemical process is:

Y^=85.4+2.1X1+1.8X2βˆ’3.2X12βˆ’2.8X22+1.5X1X2\hat{Y} = 85.4 + 2.1X_1 + 1.8X_2 - 3.2X_1^2 - 2.8X_2^2 + 1.5X_1X_2

Perform canonical analysis to classify the stationary point.

Solution: Identify b\mathbf{b} and B\mathbf{B}:

b=[2.11.8],B=[βˆ’3.20.750.75βˆ’2.8]\mathbf{b} = \begin{bmatrix} 2.1 \\ 1.8 \end{bmatrix}, \quad \mathbf{B} = \begin{bmatrix} -3.2 & 0.75 \\ 0.75 & -2.8 \end{bmatrix}

Stationary point:

xs=βˆ’12Bβˆ’1b=βˆ’12[βˆ’3.20.750.75βˆ’2.8]βˆ’1[2.11.8]\mathbf{x}_s = -\frac{1}{2}\mathbf{B}^{-1}\mathbf{b} = -\frac{1}{2}\begin{bmatrix} -3.2 & 0.75 \\ 0.75 & -2.8 \end{bmatrix}^{-1}\begin{bmatrix} 2.1 \\ 1.8 \end{bmatrix}
Bβˆ’1=1(βˆ’3.2)(βˆ’2.8)βˆ’(0.75)2[βˆ’2.8βˆ’0.75βˆ’0.75βˆ’3.2]=18.9925[βˆ’2.8βˆ’0.75βˆ’0.75βˆ’3.2]\mathbf{B}^{-1} = \frac{1}{(-3.2)(-2.8) - (0.75)^2}\begin{bmatrix} -2.8 & -0.75 \\ -0.75 & -3.2 \end{bmatrix} = \frac{1}{8.9925}\begin{bmatrix} -2.8 & -0.75 \\ -0.75 & -3.2 \end{bmatrix}
xs=βˆ’0.5Γ—18.9925[βˆ’2.8βˆ’0.75βˆ’0.75βˆ’3.2][2.11.8]=[0.4280.467]\mathbf{x}_s = -0.5 \times \frac{1}{8.9925}\begin{bmatrix} -2.8 & -0.75 \\ -0.75 & -3.2 \end{bmatrix}\begin{bmatrix} 2.1 \\ 1.8 \end{bmatrix} = \begin{bmatrix} 0.428 \\ 0.467 \end{bmatrix}

Eigenvalues of B\mathbf{B}:

det⁑(Bβˆ’Ξ»I)=(βˆ’3.2βˆ’Ξ»)(βˆ’2.8βˆ’Ξ»)βˆ’0.5625=0\det(\mathbf{B} - \lambda \mathbf{I}) = (-3.2 - \lambda)(-2.8 - \lambda) - 0.5625 = 0
Ξ»2+6.0Ξ»+8.9925=0\lambda^2 + 6.0\lambda + 8.9925 = 0
Ξ»=βˆ’6.0Β±36βˆ’35.972=βˆ’6.0Β±0.1732\lambda = \frac{-6.0 \pm \sqrt{36 - 35.97}}{2} = \frac{-6.0 \pm 0.173}{2}
Ξ»1=βˆ’2.914,Ξ»2=βˆ’3.086\lambda_1 = -2.914, \quad \lambda_2 = -3.086

Both eigenvalues are negative, so the stationary point is a maximum.

Steepest Ascent Method

When the stationary point lies outside the current experimental region, the method of steepest ascent provides a systematic path toward the optimum.

DfPath of Steepest Ascent

The path of steepest ascent follows the direction of the gradient of the first-order model (linear approximation). For the model:

Y^=b0+b1X1+b2X2+β‹―+bkXk\hat{Y} = b_0 + b_1 X_1 + b_2 X_2 + \cdots + b_k X_k

The gradient direction is βˆ‡Y^=[b1,b2,…,bk]T\nabla \hat{Y} = [b_1, b_2, \ldots, b_k]^T. The path is parameterized as:

x(t)=x0+tβ‹…βˆ‡Y^βˆ₯βˆ‡Y^βˆ₯\mathbf{x}(t) = \mathbf{x}_0 + t \cdot \frac{\nabla \hat{Y}}{\|\nabla \hat{Y}\|}

where x0\mathbf{x}_0 is the center of the current design and tt is the step size. The largest ∣bj∣|b_j| determines the primary factor for adjustment.

Practical Implementation of Steepest Ascent

  1. Fit a first-order model (linear + interactions) in the current region
  2. Compute the gradient direction
  3. Move along the path in equally spaced steps
  4. Monitor the response at each step
  5. Stop when response improvement plateaus or reverses
  6. Conduct a new factorial design centered at the best point found
  7. Repeat until stationary region is reached, then fit second-order model

Ridge Analysis

Ridge analysis finds the stationary point constrained to a specified radius from the design center, particularly useful when the unconstrained optimum lies far from the experimental region.

DfRidge Analysis

The ridge of stationary points is obtained by maximizing (or minimizing) the predicted response subject to the constraint xTx=R2\mathbf{x}^T\mathbf{x} = R^2, where RR is the distance from the design center. Using Lagrange multipliers:

L=Y^βˆ’ΞΌ(xTxβˆ’R2)\mathcal{L} = \hat{Y} - \mu(\mathbf{x}^T\mathbf{x} - R^2)
βˆ‚Lβˆ‚x=b+2Bxβˆ’2ΞΌx=0\frac{\partial \mathcal{L}}{\partial \mathbf{x}} = \mathbf{b} + 2\mathbf{B}\mathbf{x} - 2\mu\mathbf{x} = \mathbf{0}
(Bβˆ’ΞΌI)x=βˆ’12b(\mathbf{B} - \mu\mathbf{I})\mathbf{x} = -\frac{1}{2}\mathbf{b}
xR=βˆ’12(Bβˆ’ΞΌI)βˆ’1b\mathbf{x}_R = -\frac{1}{2}(\mathbf{B} - \mu\mathbf{I})^{-1}\mathbf{b}

The Lagrange multiplier ΞΌ\mu is determined by the constraint xRTxR=R2\mathbf{x}_R^T\mathbf{x}_R = R^2.

Ridge Path Equations

The canonical form of the ridge solution is:

wi(R)=βˆ’Ξ΄iΞ»iβˆ’ΞΌw_i(R) = \frac{-\delta_i}{\lambda_i - \mu}

where Ξ΄i\delta_i is the ii-th component of PTb/2\mathbf{P}^T\mathbf{b}/2 (gradient in canonical coordinates) and ΞΌ\mu satisfies:

βˆ‘i=1kΞ΄i2(Ξ»iβˆ’ΞΌ)2=R2\sum_{i=1}^{k} \frac{\delta_i^2}{(\lambda_i - \mu)^2} = R^2

The predicted response along the ridge:

Y^(R)=Y^sβˆ’βˆ‘i=1kΞ΄i2ΞΌΞ»iβˆ’ΞΌ\hat{Y}(R) = \hat{Y}_s - \sum_{i=1}^{k} \frac{\delta_i^2 \mu}{\lambda_i - \mu}

As Rβ†’βˆžR \to \infty, ΞΌβ†’Ξ»max⁑\mu \to \lambda_{\max} (largest eigenvalue), and the ridge approaches the direction of the eigenvector corresponding to Ξ»max⁑\lambda_{\max}.

Desirability Functions

For multi-response optimization, desirability functions transform each response into a dimensionless quality metric.

DfDesirability Function

For a response yy with target value TT and acceptable range [L,U][L, U], the one-sided desirability function is:

Maximize (yy as large as possible):

di(y)={0y<Li(yβˆ’LiTiβˆ’Li)riLi≀y≀Ti1y>Tid_i(y) = \begin{cases} 0 & y < L_i \\ \left(\frac{y - L_i}{T_i - L_i}\right)^{r_i} & L_i \leq y \leq T_i \\ 1 & y > T_i \end{cases}

Minimize (yy as small as possible):

di(y)={1y<Ti(Uiβˆ’yUiβˆ’Ti)riTi≀y≀Ui0y>Uid_i(y) = \begin{cases} 1 & y < T_i \\ \left(\frac{U_i - y}{U_i - T_i}\right)^{r_i} & T_i \leq y \leq U_i \\ 0 & y > U_i \end{cases}

Target (yy as close to TT as possible):

di(y)={0y<LiΒ orΒ y>Ui(yβˆ’LiTiβˆ’Li)riLi≀y≀Ti(Uiβˆ’yUiβˆ’Ti)riTi≀y≀Uid_i(y) = \begin{cases} 0 & y < L_i \text{ or } y > U_i \\ \left(\frac{y - L_i}{T_i - L_i}\right)^{r_i} & L_i \leq y \leq T_i \\ \left(\frac{U_i - y}{U_i - T_i}\right)^{r_i} & T_i \leq y \leq U_i \end{cases}

Composite Desirability

The overall composite desirability is the weighted geometric mean:

D=(∏i=1mdiwi)1/βˆ‘wiD = \left(\prod_{i=1}^{m} d_i^{w_i}\right)^{1/\sum w_i}

where mm is the number of responses, did_i is the individual desirability for response ii, and wiw_i is its weight. D∈[0,1]D \in [0, 1] with D=1D = 1 representing the ideal case.

Python Implementation

import numpy as np
import pandas as pd
from scipy import optimize, linalg
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# Fit second-order response surface model
def fit_response_surface(design_matrix, response):
    """Fit second-order RSM model and return coefficients."""
    # Add quadratic and interaction terms
    k = design_matrix.shape[1]
    X_quad = design_matrix.copy()
    
    # Quadratic terms
    for j in range(k):
        X_quad = np.column_stack([X_quad, design_matrix[:, j]**2])
    
    # Interaction terms
    for i in range(k):
        for j in range(i+1, k):
            X_quad = np.column_stack([X_quad, design_matrix[:, i] * design_matrix[:, j]])
    
    # Add intercept
    X_quad = np.column_stack([np.ones(X_quad.shape[0]), X_quad])
    
    # Least squares fit
    coeffs = np.linalg.lstsq(X_quad, response, rcond=None)[0]
    
    return coeffs, X_quad

# Canonical analysis
def canonical_analysis(coeffs, k):
    """Perform canonical analysis of response surface."""
    # Extract coefficient vectors
    b0 = coeffs[0]
    b = coeffs[1:k+1]  # Linear coefficients
    
    # Construct B matrix (quadratic + interaction)
    B = np.zeros((k, k))
    idx = k + 1  # Start of quadratic terms
    
    # Quadratic terms
    for j in range(k):
        B[j, j] = coeffs[idx]
        idx += 1
    
    # Interaction terms (off-diagonal)
    for i in range(k):
        for j in range(i+1, k):
            B[i, j] = coeffs[idx] / 2
            B[j, i] = coeffs[idx] / 2
            idx += 1
    
    # Stationary point
    try:
        x_s = -0.5 * np.linalg.solve(B, b)
    except np.linalg.LinAlgError:
        x_s = None
    
    # Eigenvalues and eigenvectors
    eigenvalues, eigenvectors = np.linalg.eigh(B)
    
    # Predicted response at stationary point
    if x_s is not None:
        Y_s = b0 + np.dot(b, x_s) + 0.5 * np.dot(x_s, B @ x_s)
    else:
        Y_s = None
    
    return {
        'stationary_point': x_s,
        'eigenvalues': eigenvalues,
        'eigenvectors': eigenvectors,
        'Y_stationary': Y_s,
        'B_matrix': B,
        'b_vector': b
    }

# Ridge analysis
def ridge_analysis(coeffs, k, R_values):
    """Compute ridge of stationary points."""
    b0 = coeffs[0]
    b = coeffs[1:k+1]
    
    B = np.zeros((k, k))
    idx = k + 1
    for j in range(k):
        B[j, j] = coeffs[idx]
        idx += 1
    for i in range(k):
        for j in range(i+1, k):
            B[i, j] = coeffs[idx] / 2
            B[j, i] = coeffs[idx] / 2
            idx += 1
    
    # Eigendecomposition
    eigenvalues, P = np.linalg.eigh(B)
    delta = P.T @ b / 2
    
    ridge_points = []
    ridge_responses = []
    
    for R in R_values:
        # Find mu satisfying constraint
        def constraint(mu):
            w = delta / (eigenvalues - mu)
            return np.sum(w**2) - R**2
        
        # Search for mu
        mu_min = max(eigenvalues) + 0.01
        try:
            mu_solution = optimize.brentq(constraint, mu_min, mu_min + 100)
        except ValueError:
            mu_solution = mu_min + 50
        
        # Compute ridge point in original coordinates
        w = delta / (eigenvalues - mu_solution)
        x_r = P @ w
        
        # Predicted response
        Y_r = b0 + np.dot(b, x_r) + 0.5 * np.dot(x_r, B @ x_r)
        
        ridge_points.append(x_r)
        ridge_responses.append(Y_r)
    
    return np.array(ridge_points), np.array(ridge_responses)

# Desirability function
def desirability(y, target, lower, upper, objective='target', r=1):
    """Compute individual desirability."""
    if objective == 'maximize':
        if y <= lower:
            return 0
        elif y >= target:
            return 1
        else:
            return ((y - lower) / (target - lower))**r
    
    elif objective == 'minimize':
        if y >= upper:
            return 0
        elif y <= target:
            return 1
        else:
            return ((upper - y) / (upper - target))**r
    
    else:  # target
        if y <= lower or y >= upper:
            return 0
        elif y <= target:
            return ((y - lower) / (target - lower))**r
        else:
            return ((upper - y) / (upper - target))**r

def composite_desirability(responses, targets, lowers, uppers, 
                          objectives, weights=None):
    """Compute composite desirability across multiple responses."""
    m = len(responses)
    if weights is None:
        weights = np.ones(m)
    
    d_values = []
    for i in range(m):
        d = desirability(responses[i], targets[i], lowers[i], uppers[i],
                        objectives[i])
        d_values.append(d)
    
    D = np.prod(np.array(d_values)**weights)**(1/np.sum(weights))
    return D, d_values

# Example: Fit response surface to simulated data
np.random.seed(42)

# Generate design points (CCD)
factorial = np.array([[-1, -1], [-1, 1], [1, -1], [1, 1]])
axial = np.array([[-1.414, 0], [1.414, 0], [0, -1.414], [0, 1.414]])
center = np.array([[0, 0], [0, 0], [0, 0]])
design = np.vstack([factorial, axial, center])

# True model: Y = 85 + 2.1*X1 + 1.8*X2 - 3.2*X1^2 - 2.8*X2^2 + 1.5*X1*X2
def true_model(x1, x2):
    return 85 + 2.1*x1 + 1.8*x2 - 3.2*x1**2 - 2.8*x2**2 + 1.5*x1*x2

response = np.array([true_model(x[0], x[1]) + np.random.normal(0, 1) 
                     for x in design])

# Fit model
k = 2
coeffs, X_quad = fit_response_surface(design, response)
print("Fitted coefficients:", np.round(coeffs, 3))

# Canonical analysis
result = canonical_analysis(coeffs, k)
print(f"\nStationary point: {np.round(result['stationary_point'], 3)}")
print(f"Eigenvalues: {np.round(result['eigenvalues'], 3)}")
print(f"Predicted response at stationary point: {result['Y_stationary']:.3f}")

# Classify stationary point
if all(result['eigenvalues'] < 0):
    print("Classification: Maximum")
elif all(result['eigenvalues'] > 0):
    print("Classification: Minimum")
else:
    print("Classification: Saddle point")

# Ridge analysis
R_values = np.linspace(0, 2, 20)
ridge_pts, ridge_resp = ridge_analysis(coeffs, k, R_values)

# Plot response surface and ridge
fig = plt.figure(figsize=(12, 5))

# 3D response surface
ax1 = fig.add_subplot(121, projection='3d')
x1_range = np.linspace(-1.5, 1.5, 50)
x2_range = np.linspace(-1.5, 1.5, 50)
X1, X2 = np.meshgrid(x1_range, x2_range)
Y_surface = 85 + 2.1*X1 + 1.8*X2 - 3.2*X1**2 - 2.8*X2**2 + 1.5*X1*X2

ax1.plot_surface(X1, X2, Y_surface, alpha=0.7, cmap='viridis')
ax1.scatter(ridge_pts[:, 0], ridge_pts[:, 1], ridge_resp, 
           c='red', s=50, label='Ridge path')
ax1.scatter(*result['stationary_point'], result['Y_stationary'], 
           c='red', s=200, marker='*', label='Stationary point')
ax1.set_xlabel('X1')
ax1.set_ylabel('X2')
ax1.set_zlabel('Y')
ax1.set_title('Response Surface with Ridge Path')
ax1.legend()

# Ridge path in factor space
ax2 = fig.add_subplot(122)
ax2.plot(ridge_pts[:, 0], ridge_pts[:, 1], 'r-o', markersize=3, label='Ridge path')
ax2.scatter(*result['stationary_point'], c='red', s=200, marker='*', 
           label='Stationary point')
ax2.contour(X1, X2, Y_surface, levels=20, alpha=0.6)
ax2.set_xlabel('X1')
ax2.set_ylabel('X2')
ax2.set_title('Contour Plot with Ridge Path')
ax2.legend()
ax2.set_aspect('equal')

plt.tight_layout()
plt.savefig('rsm_analysis.png', dpi=150)
plt.show()

# Multi-response desirability optimization
# Example: Optimize for max strength and min cost
def multi_response_optimization():
    """Find optimal conditions using desirability."""
    # Simulated response functions
    def strength(x1, x2):
        return 85 + 2.1*x1 + 1.8*x2 - 3.2*x1**2 - 2.8*x2**2
    
    def cost(x1, x2):
        return 50 - 3*x1 + 2*x2 + x1**2 + 0.5*x2**2
    
    # Search grid
    x1_grid = np.linspace(-1, 1, 20)
    x2_grid = np.linspace(-1, 1, 20)
    
    best_D = 0
    best_x = None
    
    for x1 in x1_grid:
        for x2 in x2_grid:
            s = strength(x1, x2)
            c = cost(x1, x2)
            
            D, _ = composite_desirability(
                responses=[s, c],
                targets=[90, 45],  # max strength, min cost
                lowers=[80, 40],
                uppers=[100, 60],
                objectives=['maximize', 'minimize'],
                weights=[0.6, 0.4]
            )
            
            if D > best_D:
                best_D = D
                best_x = (x1, x2)
    
    return best_x, best_D

optimal, D_opt = multi_response_optimization()
print(f"\nOptimal conditions: X1={optimal[0]:.3f}, X2={optimal[1]:.3f}")
print(f"Composite desirability: {D_opt:.4f}")

Summary: Response Surface Methods

  1. Second-Order Model: Y=Ξ²0+βˆ‘Ξ²jXj+βˆ‘Ξ²jjXj2+βˆ‘Ξ²jlXjXl+Ξ΅Y = \beta_0 + \sum \beta_j X_j + \sum \beta_{jj} X_j^2 + \sum \beta_{jl} X_j X_l + \varepsilon captures curvature and interactions
  2. Canonical Analysis: Diagonalizing B\mathbf{B} yields Y^=Y^s+βˆ‘Ξ»iwi2\hat{Y} = \hat{Y}_s + \sum \lambda_i w_i^2; eigenvalue signs classify stationary point (maximum if all Ξ»i<0\lambda_i < 0)
  3. Stationary Point: xs=βˆ’12Bβˆ’1b\mathbf{x}_s = -\frac{1}{2}\mathbf{B}^{-1}\mathbf{b}; lies inside design region if all ∣xsjβˆ£β‰€1|x_{sj}| \leq 1
  4. Steepest Ascent: Follow gradient βˆ‡Y^\nabla \hat{Y} from first-order model when stationary point is outside region
  5. Ridge Analysis: Constrained optimization finds stationary points at distance RR from center; useful for extrapolation
  6. Desirability: Multi-response optimization via geometric mean of individual desirability functions D=(∏diwi)1/βˆ‘wiD = (\prod d_i^{w_i})^{1/\sum w_i}
⭐

Premium Content

Response Surface Methods

Unlock this lesson and 900+ advanced tutorials with a Premium plan.

🎯End-to-end Projects
πŸ’ΌInterview Prep
πŸ“œCertificates
🀝Community Access

Already a member? Log in

Need Expert Statistics Help?

Get personalized tutoring, project support, or professional consulting.

Advertisement