主要内容

D-最佳设计

D-最优设计导论

传统的实验设计(全因子设计,分数阶乘设计响应面设计)适用于校准试验环境中的线性模型,其中因素在相关区域内相对不受约束。但是,在某些情况下,模型必然是非线性的。在其他情况下,某些处理方法(因素水平的组合)可能昂贵或无法测量。D-最佳设计是特定于模型的设计,可以解决传统设计的这些限制。

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

有几种统计和机器学习工具箱™功能,用于生成D-Optimal设计:

作用 描述
坎迪斯

使用行交换算法生成D-OPTEMAL设计,具有指定模型的指定数量的运行和指定的候选集。这是所用算法的第二个组件Rowexh.

生成指定模型的候选集。这是所用算法的第一个组件Rowexh.

灯笼

使用坐标交换算法生成D-Optimal设计,具有指定模型的指定运行数。

da

使用坐标交换算法增加现有的D-OPTEMAL设计,以额外的运行来估计其他模型术语。

Dcovary.

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

Rowexh

使用行交换算法为指定模型生成具有指定运行次数的D-最优设计。算法调用进而坎迪斯. (呼叫坎迪斯单独指定候选集。)

以下各节解释如何使用这些函数生成D-最优设计。

笔记

功能rsmdemo.为用户指定的实验设置或由用户生成的D-最优设计生成模拟数据灯笼.它使用rstool可视化响应面模型的界面适合数据,它使用它恩林托尔接口以可视化适合数据的非线性模型。

生成D-最优设计

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

  • 这个灯笼函数使用坐标交换算法

  • 这个Rowexh函数使用行交换算法

二者都灯笼Rowexh使用迭代搜索算法。它们通过增量更改初始设计矩阵来运行X增加D= |XTX|在每一步。在这两种算法中,存在随机内置于选择初始设计中,并选择增量变化的选择。结果,两种算法都可以在本地返回,但不是全球,D-Optimal设计。多次运行每种算法,然后选择最终设计的最佳结果。这两个函数都有一个“尝试”参数,该参数自动执行此重复和比较。

在每一步中,行交换算法交换一整行数据X使用设计矩阵中的一行C在A评估候选集可行的治疗方法Rowexh函数自动生成一个C适用于指定的模型,通过调用两个步骤操作坎迪斯按顺序排列函数。提供自己的函数C打电话坎迪斯直接地无论哪种情况,如果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. ε

灯笼要生成具有七次运行的D-最优设计:

nfactors = 3;nruns = 7;[DCE,X] = CORDEXCH(NFRETORS,NRUN,'相互作用','尝试',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 11 11 1 11 1 11 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

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

  1. 常数项

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

  3. 交互项(12、13、23)

X在线性回归模型中适合在设计点测量的响应数据dCE.

Rowexh以类似的方式生成等同的设计:

[dRE,X]=Rowexh(nfactors,NRUN,'interaction','trys',10)dRE=-1-11-11-1-1-1-1-1-1-1-1-1-1-1-11-1-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11

增广D-最优设计

在实践中,您可能希望将运行添加到已完成的实验中,以了解有关过程的更多信息并估计其他模型系数。这个da函数使用坐标交换算法来增加现有的D-Optimal设计。

例如,以下八次运行设计足以估计四因素模型中的主要影响:

DCEMAIN = CORDEXCH(4,8)DCEMAIN = 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 11 1 1 1 -1 11 1 1 1 -1 1 -1 -1 1 -1 -1  -1 -1 -1 1 -1

要估计模型中的六个交互项,请使用八个额外的运行来增加设计:

1-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11-11

扩充设计是全因子设计,最初的八个运行在前八行。

这个'开始'参数的坎迪斯功能提供相同的功能da,但使用行交换算法而不是坐标交换算法。

指定固定协变量因子

在许多实验环境中,某些因素及其协变量受到固定的一组水平或水平组合。搜索最佳设计时,这些不能改变。这个Dcovary.功能允许您在坐标交换算法中指定固定的协变量因子。

例如,假设您希望设计估计三因素线性添加剂模型中的参数,其中八个运行必须在不同的时间内发生。如果流程经历时间线性漂移,则可能希望将运行时间作为模型中的变量包含。制作如下设计:

时间=linspace(-1,1,8);[dCV,X]=dcovarie(3,时间,“线性”)dCV=-1.0000-1.0000-1.0000-1.0000-1.0000-1.0000-0.7143-1.0000-1.0000-1.0000-0.4286-1.0000-1.0000-1.0000-1.0000-0.1429-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 -0.4286 1.0000 1.0000 -1.0000 1.0000 -0.1429 1.0000 1.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 0.7143 1.0000 -1.0000 -1.0000 1.0000 1.0000

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

指定分类因素

分类因子在一组离散的水平中取值。二者都灯笼Rowexh有一个'分类'允许您指定分类因素的指令和a的参数“级别”参数,该参数允许您为每个因子指定多个级别。

例如,以下八种运行设计是用于线性添加模型,其中五种因素,其中最终因素是三个层次的分类:

dcecat = Cordexch(5,8,'线性','分类',5,'级别',3)dcecat = -1 -1 1 1 2 -1 -1 -1 -1 -1 3 1 1 1 1 3 1 1  -1 -1 2 1 -1 -11 3 -1 1 -1 1 1 -1 1 1 -1 3 1 -1 1 -1 1

指定候选集

行交换算法交换初始设计矩阵的行X使用设计矩阵中的行C在可行治疗的候选集上进行评估Rowexh函数自动生成一个C适用于指定的模型,通过调用两个步骤操作坎迪斯按顺序排列函数。提供自己的函数C打电话坎迪斯直接地。

例如,以下使用Rowexh要使用内部生产的候选集生成双因素纯二次模型的五个流程设计:

dRE1=rowesch(2,5,'purequadratic','tries',10)dRE1=-10101-10101

同样的事情也可以通过使用坎迪斯依次:

[dC,C]=candgen(2,'purequadratic')%候选集,C dC=-1-10-11-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-10-1-1-1-1-1-0-1-0-1-0-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-0-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1%显示设计dRE2=0-1-1-1-1-1 0

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

约束=sum(abs(dC),2)<2;%my_dC=dC(约束:)my_dC=0-1-100 01

使用X2FX.将候选人设置为设计矩阵的功能:

my_C=x2fx(my_dC,'purequadratic')my_C=10-1011-10101001

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

my_treatments = candexch(my_c,5,'尝试',10)%d-opt子集my_treatments = 2 4 5 1 3 my_dre = my_dc(my_treatments,:)%显示设计my_dre = -1 0 1 0 0 1 0 -1 00
div>