传统实验设计(完整的阶乘设计,部分配置法设计,响应面设计)适用于在感兴趣区域的因素相对不受约束的实验环境中校准线性模型。然而,在某些情况下,模型必然是非线性的。在其他情况下,某些治疗(因素水平的组合)可能是昂贵的或不可测量的。D-optimal设计是特定于模型的设计,解决了传统设计的这些限制。
d -最优设计是通过迭代搜索算法生成的,其目的是最小化指定模型的参数估计的协方差。这个等价于使行列式最大化D= |XTX|,X是模型术语(列)的设计矩阵,在设计空间(行)的特定处理处进行评估。与传统设计不同,d -最优设计不需要正交设计矩阵,因此,参数估计可能是相关的。参数估计也可能是局部最优的,而不是全局最优的。
有几个统计学和机器学习工具箱™函数用于生成d -最优设计:
函数 | 描述 |
---|---|
candexch |
使用行交换算法为指定模型和指定候选集生成具有指定运行次数的d -最优设计。这是算法的第二个组成部分 |
candgen |
为指定的模型生成候选集。这是算法的第一个组成部分 |
cordexch |
使用坐标交换算法为指定模型生成指定运行次数的d -最优设计。 |
daugment |
使用坐标交换算法来增加现有的d -最优设计,并使用额外的运行来估计额外的模型项。 |
dcovary |
使用坐标交换算法生成具有固定协变量因素的d -最优设计。 |
rowexch |
使用行交换算法为指定模型生成具有指定运行次数的d -最优设计。该算法调用 |
下面几节将解释如何使用这些函数来生成d -最优设计。
两种统计和机器学习工具箱算法生成d -最优设计:
这两个cordexch
和rowexch
使用迭代搜索算法。它们通过增量地改变初始设计矩阵来运作X增加D= |XTX|在每一步。在这两种算法中,初始设计的选择和增量变化的选择都有随机性。因此,这两种算法都可能返回局部的d -最优设计,而不是全局的。运行每个算法多次,并为您的最终设计选择最佳结果。两个函数都有“尝试”
参数,该参数自动进行重复和比较。
在每一步,行交换算法交换一整行X用设计矩阵中的一行C评估一个候选集可行的治疗方法。的rowexch
函数自动生成C适用于指定的模型,分两步操作,通过调用candgen
和candexch
函数序列。提供自己的C通过调用candexch
直接。无论哪种情况,如果C大时,它在内存中的静态存在会影响计算。
相比之下,坐标交换算法不使用候选集。(更确切地说,候选集是整个设计空间。)在每一步,坐标交换算法交换单个元素X在设计空间的相邻点计算一个新元素。候选集的缺失减少了对内存的需求,但较小的搜索规模意味着坐标交换算法比行交换算法更有可能陷入局部最小值。
例如,假设你想要一个设计来估计以下三因素、七项交互模型中的参数:
使用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,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
在实践中,您可能希望将运行添加到已完成的实验中,以了解有关流程的更多信息并估计额外的模型系数。的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
.固定因子中的行数指定了设计中的运行数。由此产生的设计直流电压
每次给出三个受控模型因子的因子设置。
分类因子在一组离散的水平中取值。这两个cordexch
和rowexch
有一个“分类”
参数,该参数允许指定分类因子的索引和“水平”
参数,该参数允许您为每个因素指定多个级别。
例如,下面的八步设计是一个线性相加模型,其中有五个因素,最终的因素是分类的,有三个层次:
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适用于指定的模型,分两步操作,通过调用candgen
和candexch
函数序列。提供自己的C通过调用candexch
直接。
例如,以下用法rowexch
使用内部产生的候选集,为双因素纯二次模型生成五步设计:
(1,'purequadratic','tries',10
[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