主要内容

D-Optimal设计

D-Optimal Designs简介

传统的实验设计(完整的阶乘设计部分配置法设计, 和响应面设计)适用于在实验设置中校准线性模型,其中因素在感兴趣的区域中相对不受约束。然而,在某些情况下,模型必须是非线性的。在其他情况下,某些处理(因子水平的组合)可能是昂贵的或不可行的测量。D-optimal设计是针对传统设计的这些局限性的特定模型设计。

通过迭代搜索算法生成D-Optimal设计,并试图最小化指定模型的参数估计的协方差。这相当于最大化决定因素D= |XTX|,X模型术语(列)的设计矩阵在设计空间(行)的特定处理中进行评估。与传统设计不同,d -最优设计不需要正交设计矩阵,因此,参数估计可能是相关的。参数估计也可能是局部的,但不是全局的d -最优。

有几个统计和机器学习工具箱™功能生成d -最优设计:

功能 描述
candexch

使用行交换算法生成具有指定模型和指定候选集的指定运行次数的d -最优设计。这是算法的第二部分

candgen

为指定的模型生成候选集。这是算法的第一个部分

cordexch

使用坐标交换算法生成指定模型的指定运行次数的d -最优设计。

daugment

使用坐标交换算法增加现有的d -最优设计,以估计额外的模型项。

dcovary

使用坐标交换算法生成具有固定协变量的D-OPTEMAL设计。

使用行交换算法生成具有指定模型指定运行次数的d -最优设计。该算法调用candgen然后candexch.(电话candexch单独指定一个候选集。)

下面的部分将解释如何使用这些函数来生成d -最优设计。

请注意

功能rsmdemo生成由用户或由d -最优设计生成的实验设置的模拟数据cordexch.它使用rstool接口来可视化符合数据的响应面模型,并且它使用nlintool接口以可视化的非线性模型拟合数据。

生成D-Optimal设计

两种统计和机器学习工具箱算法生成d -最优设计:

  • cordexch函数使用坐标交换算法

  • 函数使用行交换算法

这两个cordexch使用迭代搜索算法。它们通过增量地改变初始设计矩阵来运作X增加D= |XTX|在每一步。在这两种算法中,初始设计的选择和增量变化的选择都具有随机性。因此,两种算法都可能返回局部而不是全局的d -最优设计。多次运行每个算法,并为最终设计选择最佳结果。两个函数都有'尝试'参数,自动执行此重复和比较。

在每个步骤中,行交换算法交换整个行X用设计矩阵中的一行C评估一个候选集可行的治疗方法。的函数自动生成一个C适用于指定的模型,通过调用candgencandexch函数序列。提供自己的C通过调用candexch直接。无论哪种情况,如果C是大的,它在内存中的静态存在会影响计算。

相比之下,坐标交换算法不使用候选集。(或者更确切地说,候选集是整个设计空间。)在每个步骤中,坐标交换算法交换单个元素X在设计空间的邻近点计算一个新元素。候选集的缺失减少了对内存的需求,但是较小的搜索规模意味着坐标交换算法比行交换算法更有可能陷入局部最小值。

例如,假设你想要一个设计来估计以下三因素,七项交互模型中的参数:

y β 0 + β 1 x + 1 β 2 x + 2 β 3. x + 3. β 12 x x 1 + 2 β 13 x x 1 + 3. β 23 x x 2 + 3. ε.

使用cordexch通过七次运行生成d -最优设计:

nfactors = 3;nruns = 7;(dCE, X) = cordexch (nfactors nruns,“互动”,“尝试”,10)dCE = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 X = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

设计矩阵的列X模型术语是否在设计的每一行进行评估DCE..这些术语从左到右按顺序出现:

  1. 常数项

  2. 线性项(1,2,3)

  3. 互动条款(12,13,23)

使用X在线性回归模型中,拟合在设计点测量的响应数据DCE.

使用以类似的方式生成等价的设计:

[DRE,X] = ROWEXCH(NFRETOR,NRUN,'交互','尝试',10)DRE = -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1-1 -1 1 1 x = 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 11 1 1 1 1 1 1 1 1 -1-1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1

增加D-Optimal设计

在实践中,您可能希望向已完成的实验中添加运行,以了解更多有关流程的信息,并估计额外的模型系数。的daugment函数使用一个坐标交换算法来增加现有的d -最优设计。

例如,以下八轮设计足以在四因素模型中估计主效应:

dCEmain = cordexch(4、8)dCEmain = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

为了估计模型中的6个交互项,可以增加8次运行来增加设计:

dCEinteraction = daugment (dCEmain 8“交互”)dCEinteraction = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

增强设计是完全阶乘的,最初的8次运行在前8行中。

“开始”参数的candexch函数提供与daugment,但使用行交换算法而不是坐标交换算法。

指定固定的协变量因素

在许多实验环境中,某些因素及其协变量被限制在一组固定的水平或水平的组合中。在寻找最佳设计时,这些都是不可改变的。的dcovary函数允许您在坐标交换算法中指定固定的协变量因子。

例如,假设您想要一个设计来估计三因素线性相加模型中的参数,在不同的时间必然发生8次运行。如果流程经历暂时性线性漂移,您可能希望将运行时作为一个变量包含在模型中。制作如下设计:

time = linspace(-1,1,8)';[DCV,X] = DCOVARY(3,时间,'线性')DCV = -1.0000 1.0000 1.0000 -1.0000 1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 1.0000 -1.0000 1.0000 -0.1429 1.0000 1.0000 -1.0000 0.1429-1.0000 1.0000 -1.0000 0.4286 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.7143 -1.0000 -1.0000 1.0000 1.0000 x = 1.0000 -1.0000 1.0000 -1.0000 1.0000 1.0000 -1.0000 1.0000 1.0000 -1.0000 -1.0000 -0.7143 1.0000 -1.0000 -1.0000 -1.0000 -0.4286 1.0000 1.0000 -1.0000 1.0000 -01429 1.00001.0000 1.0000 -1.0000 0.1429 1.0000 -1.0000 1.0000 -1.0000 0.4286 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 0.7143 1.0000 -1.0000 -1.0000 1.0000 1.0000

列向量时间是一个固定因子,标准化为±值±1.固定因子中的行数指定设计中的运行次数。由此产生的设计DCV.为每次提供三个受控模型因素的因子设置。

指定分类因素

分类因子在一组离散的水平中取值。这两个cordexch有一个“分类”参数,该参数允许您指定分类因子的索引和'水平'参数,该参数允许您为每个因素指定多个级别。

例如,下面的8次运行设计是一个线性相加模型,其中有5个因素,最后一个因素是分类的,有3个层次:

dCEcat = cordexch(5 8“线性”,“分类”,5,“水平”,3)dCEcat = 1 1 1 1 2 1 1 1 1 3 1 1 1 1 3 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1

指定的候选集

行交换算法交换初始设计矩阵的行X用设计矩阵中的行C在候选人的可行治疗组中进行评估。的函数自动生成一个C适用于指定的模型,通过调用candgencandexch函数序列。提供自己的C通过调用candexch直接。

例如,以下使用使用内部生成的候选集来生成双因素纯二次模型的五次运行设计:

dRE1 = -1 10 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

可以使用同样的事情candgencandexch按顺序:

[dC,C] = candgen(2,'purequadratic') %候选集,C dC = 1 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 C = 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 = candexch治疗(C 5“尝试”,10)% D-opt子集治疗= 2 1 7 3 4 dRE2 =直流(治疗:)%显示设计dRE2 = 0 1 1 1 1 1 1 1 1 0

你可以换C在本例中,设计矩阵在您自己的候选集中进行评估。例如,假设您的实验受到限制,因此两个因素不能同时具有极端设置。下面生成一个受限的候选集:

约束= sum(abs(dc),2)<2;%可行治疗My_dc = DC(约束,:) my_dc = 0 -1 -1 0 0 0 0 1 0 0 1

使用x2fx函数将候选集转换为设计矩阵:

my_C = x2fx(my_dC,'purequadratic') my_C = 1 0 -1 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 1

以相同的方式找到所需的设计:

my_dRE = my_dC(my_treatments,:) %显示设计my_dRE = -1 0 10 0 10 0 0