Традиционные экспериментальные проекты (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