Традиционные экспериментальные проекты (Full Factorial Designs, Fractional Factorial Designs и Response Surface Designs) подходят для калибровки линейных моделей в экспериментальных настройках, где факторы относительно без ограничений в необходимой области. В некоторых случаях, однако, модели обязательно являются нелинейными. В других случаях определенные методы лечения (комбинации уровней факторов) могут быть дорогими или недопустимыми для измерения. D-optimal designs специфичные для модели проекты, которые устраняют эти ограничения традиционных проектов.
D-оптимальный проект сгенерирован итеративным алгоритмом поиска и стремится минимизировать ковариацию оценок параметров для заданной модели. Это эквивалентно максимизации определяющего D = |<reservedrangesplaceholder0>TX |, где X - матрица проекта членов модели (столбцы), рассчитанная при определенных обработках в пространстве проектирования (строки). В отличие от традиционных проектов, D-оптимальные проекты не требуют ортогональных матриц проекта, и в результате оценки параметров могут быть коррелированы. Оценки параметров также могут быть локально, но не глобально, D-оптимальными.
Существует несколько функций Statistics and Machine Learning Toolbox™ для генерации D-оптимальных проектов:
| Функция | Описание |
|---|---|
candexch | Использует алгоритм обмена строками, чтобы сгенерировать D-оптимальный проект с заданным количеством запусков для заданной модели и заданного набора кандидатов. Это второй компонент алгоритма, используемого |
candgen | Генерирует набор кандидатов для заданной модели. Это первый компонент алгоритма, используемого |
cordexch | Использует алгоритм координатного обмена, чтобы сгенерировать D-оптимальный проект с заданным количеством запусков для заданной модели. |
daugment | Использует алгоритм обмена координатами, чтобы расширить существующий D-оптимальный проект с помощью дополнительных запусков, чтобы оценить дополнительные условия модели. |
dcovary | Использует алгоритм координатного обмена, чтобы сгенерировать D-оптимальный проект с фиксированными ковариатными факторами. |
rowexch | Использует алгоритм обмена строками, чтобы сгенерировать D-оптимальный проект с заданным количеством запусков для заданной модели. Алгоритм вызывает |
В следующих разделах объясняется, как использовать эти функции для генерации D-оптимальных проектов.
Примечание
Функция rsmdemo генерирует моделируемые данные для экспериментальных настроек, заданных либо пользователем, либо D-оптимальным проектом, сгенерированным cordexch. Он использует rstool интерфейс для визуализации моделей поверхности отклика, соответствующих данным, и он использует nlintool интерфейс для визуализации нелинейной модели, соответствующей данным.
Два алгоритма Statistics and Machine Learning Toolbox генерируют D-оптимальные проекты:
Оба cordexch и rowexch использовать итерационные алгоритмы поиска. Они работают путем пошагового изменения начальной матрицы проекта X чтобы увеличить D = |<reservedrangesplaceholder0>TX | на каждом шаге. В обоих алгоритмах существует случайность, встроенная в выбор исходного проекта и в выбор инкрементных изменений. В результате оба алгоритма могут вернуться локально, но не глобально, D-оптимальные проекты. Запустите каждый алгоритм несколько раз и выберите лучший результат для вашего окончательного проекта. Обе функции имеют 'tries' параметр, который автоматизирует это повторение и сравнение.
На каждом шаге алгоритм обмена строками обменивается целой строкой X с строкой из матрицы проекта C оценивается на candidate set допустимых обработок. rowexch функция автоматически генерирует C, подходящую для заданной модели, работая в два шага, вызывая candgen и candexch функции в последовательности. Предоставьте свои C по телефону candexch непосредственно. В любом случае, если C большая, его статическое присутствие в памяти может повлиять на расчеты.
Алгоритм координатного обмена, напротив, не использует набор кандидатов. (Точнее, набор кандидатов является всем пространством проекта.) На каждом шаге алгоритм координат-обмена обменивается одним элементом X с новым элементом, оцениваемым в соседней точке проекта пространства. Отсутствие набора кандидатов уменьшает требования к памяти, но меньшая шкала поиска означает, что алгоритм обмена координатами чаще попадает в локальный минимум, чем алгоритм обмена строками.
Например, предположим, что вы хотите, чтобы проект оценил параметры в следующей трехфакторной, семитермовой модели взаимодействия:
Использовать cordexch чтобы сгенерировать D-оптимальный проект с семью запусками:
nfactors = 3;
nruns = 7;
[dCE,X] = cordexch(nfactors,nruns,'interaction','tries',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,'interaction','tries',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Чтобы оценить шесть членов взаимодействия в модели, дополните проект восемью дополнительными запусками:
dCEinteraction = daugment(dCEmain,8,'interaction')
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Дополненный проект является полным факториалом, с исходными восемью запускается в первых восьми строках.
The 'start' параметром candexch функция обеспечивает ту же функциональность, что и daugment, но использует алгоритм обмена строками, а не алгоритм обмена координатами.
Во многих экспериментальных условиях определенные факторы и их ковариаты ограничены фиксированным набором уровней или комбинаций уровней. Они не могут быть изменены при поиске оптимального проекта. dcovary функция позволяет вам задать фиксированные ковариатные множители в алгоритме обмена координатами.
Например, предположим, что вы хотите, чтобы проект оценил параметры в трехфакторной линейной аддитивной модели с восемью запусками, которые обязательно происходят в разное время. Если процесс испытывает временное линейное дрейф, можно хотеть включить время запуска как переменную в модель. Изготовить проект следующим образом:
time = linspace(-1,1,8)';
[dCV,X] = dcovary(3,time,'linear')
dCV =
-1.0000 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 -0.1429
1.0000 1.0000 -1.0000 0.1429
-1.0000 1.0000 -1.0000 0.4286
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 -0.7143
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Область вектора-столбца time является фиксированным фактором, нормированным к значениям между ± 1. Количество строк в фиксированном факторе определяет количество запусков в проекте. Получившийся проект dCV задает настройки фактора для трех управляемых факторов модели в каждый момент времени.
Категориальные факторы берут значения в дискретном наборе уровней. Оба cordexch и rowexch иметь 'categorical' параметр, который позволяет вам задать индексы категориальных факторов и 'levels' параметр, который позволяет вам задать количество уровней для каждого фактора.
Например, следующий восьмизначный проект предназначен для линейной аддитивной модели с пятью факторами, в которых конечный коэффициент категориален с тремя уровнями:
dCEcat = cordexch(5,8,'linear','categorical',5,'levels',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 чтобы сгенерировать пятираундовый проект для двухфакторной чистой квадратичной модели с использованием набора кандидатов, который производится внутри:
dRE1 = rowexch(2,5,'purequadratic','tries',10)
dRE1 =
-1 1
0 0
1 -1
1 0
1 1То же самое можно сделать, используя candgen и candexch последовательно:
[dC,C] = candgen(2,'purequadratic') % Candidate set, 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
treatments = candexch(C,5,'tries',10) % D-opt subset
treatments =
2
1
7
3
4
dRE2 = dC(treatments,:) % Display design
dRE2 =
0 -1
-1 -1
-1 1
1 -1
-1 0Можно заменить C в этом примере с матрицей проекта, вычисленной на вашем собственном наборе кандидатов. Например, предположим, что ваш эксперимент ограничен, так что два фактора не могут иметь экстремальные настройки одновременно. Следующее создает ограниченный набор кандидатов:
constraint = sum(abs(dC),2) < 2; % Feasible treatments
my_dC = dC(constraint,:)
my_dC =
0 -1
-1 0
0 0
1 0
0 1Используйте x2fx функция для преобразования набора кандидатов в матрицу проекта:
my_C = x2fx(my_dC,'purequadratic')
my_C =
1 0 -1 0 1
1 -1 0 1 0
1 0 0 0 0
1 1 0 1 0
1 0 1 0 1Найдите необходимый проект так же:
my_treatments = candexch(my_C,5,'tries',10) % D-opt subset
my_treatments =
2
4
5
1
3
my_dRE = my_dC(my_treatments,:) % Display design
my_dRE =
-1 0
1 0
0 1
0 -1
0 0