主要内容

D-Optimal设计

d -优化设计导论

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

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

有几个统计学和机器学习工具箱™函数用于生成d -最优设计:

函数 描述
candexch

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

candgen

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

cordexch

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

daugment

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

dcovary

使用坐标交换算法生成具有固定协变量因素的d -最优设计。

rowexch

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

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

请注意

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

生成D-Optimal设计

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

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

  • rowexch函数使用行交换算法

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

在每一步,行交换算法交换一整行X用设计矩阵中的一行C评估一个候选集可行的治疗方法。的rowexch函数自动生成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进行7次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

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

(dRE, X) = rowexch (nfactors nruns,“互动”,“尝试”,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 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

增强设计是全析因的,在前八排中有最初的八组。

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

指定固定协变量因子

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

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

时间= linspace (1 1 8) ';[dCV,X] = dcovary(3,time,'linear'-1.0000 -0.7143 1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -1.0000 -0.4286 1.0000 1.0000 -1.0000 1.0000 -1.0000 1.0000 -1.0000 0.1429 1.0000 1.0000 1.0000 1.0000 -1.0000 0.1429 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 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

列向量时间是一个固定的因素,标准化到±之间的值吗1.固定因子中的行数指定了设计中的运行数。由此产生的设计直流电压每次给出三个受控模型因子的因子设置。

指定分类的因素

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

例如,下面的八步设计是一个线性相加模型,其中有五个因素,最终的因素是分类的,有三个层次:

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在一组可行的治疗方案上进行评估。的rowexch函数自动生成C适用于指定的模型,分两步操作,通过调用candgencandexch函数序列。提供自己的C通过调用candexch直接。

例如,以下用法rowexch使用内部产生的候选集,为双因素纯二次模型生成五步设计:

(1,'purequadratic','tries',10

同样的事情可以用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 0 0 0 1 0 0 1

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

my_C = x2fx(my_dC,'purequadratic') my_C = x2fx(my_dC,'purequadratic'

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

my_dRE = -1 0 0 0 10 0 %显示设计my_dRE = -1 0 0 0