Традиционные экспериментальные планы (Полные Планы факторного эксперимента, Дробные Планы факторного эксперимента и Проекты Поверхности Ответа) подходят для калибровки линейных моделей в экспериментальных настройках, где факторы относительно неограничены в необходимой области. В некоторых случаях, однако, модели обязательно нелинейны. В других случаях определенные обработки (комбинации факторных уровней) могут быть дорогими или неосуществимыми измериться. D-optimal designs является проектами модели специфичными, которые обращаются к этим ограничениям традиционных проектов.
Проект D-optimal сгенерирован итеративным алгоритмом поиска и стремится минимизировать ковариацию оценок параметра для заданной модели. Это эквивалентно максимизации определителя D = |XTX |, где X является матрицей проекта условий модели (столбцы) оцененный при определенных обработках на пробеле проекта (строки). В отличие от традиционных проектов, проекты Д-оптимэла не требуют ортогональных матриц проекта, и в результате оценки параметра могут коррелироваться. Оценки параметра могут также быть локально, но не глобально, D-optimal.
Существует несколько функций Statistics and Machine Learning Toolbox™ для генерации проектов Д-оптимэла:
Функция | Описание |
---|---|
candexch | Использует обменный строкой алгоритм, чтобы сгенерировать проект D-optimal с конкретным количеством запусков для заданной модели, и заданный кандидат установил. Это - второй компонент алгоритма, используемого |
candgen | Генерирует набор кандидата для заданной модели. Это - первый компонент алгоритма, используемого |
cordexch | Использует координатно-обменный алгоритм, чтобы сгенерировать проект D-optimal с конкретным количеством запусков для заданной модели. |
daugment | Использует координатно-обменный алгоритм, чтобы увеличить существующий проект D-optimal с дополнительными запусками, чтобы оценить дополнительные условия модели. |
dcovary | Использует координатно-обменный алгоритм, чтобы сгенерировать проект D-optimal с фиксированными ковариационными факторами. |
rowexch | Использует обменный строкой алгоритм, чтобы сгенерировать проект D-optimal с конкретным количеством запусков для заданной модели. Вызовы алгоритма |
Следующие разделы объясняют, как использовать эти функции, чтобы сгенерировать проекты Д-оптимэла.
Примечание
Функция rsmdemo
генерирует симулированные данные для экспериментальных настроек, заданных или пользователем или проектом D-optimal, сгенерированным cordexch
. Это использует rstool
интерфейс, чтобы визуализировать подгонку моделей поверхности ответа к данным, и это использует nlintool
интерфейс, чтобы визуализировать нелинейную подгонку модели к данным.
Два алгоритма Statistics and Machine Learning Toolbox генерируют проекты Д-оптимэла:
Оба cordexch
и rowexch
используйте итеративные алгоритмы поиска. Они действуют путем инкрементного изменения начальной матрицы проекта X, чтобы увеличить D = |XTX | на каждом шаге. В обоих алгоритмах существует случайность, встроенная в выбор первоначального проекта и в выбор инкрементных изменений. В результате оба алгоритма могут возвратиться локально, но не глобально, проекты Д-оптимэла. Запустите каждый алгоритм многократно и выберите лучший результат для вашего итогового проекта. Обе функции имеют 'tries'
параметр, который автоматизирует это повторение и сравнение.
На каждом шаге обменный строкой алгоритм обменивается целой строкой X со строкой из матрицы проекта C, оцененный в candidate set выполнимых обработок. rowexch
функция автоматически генерирует C, подходящий для заданной модели, действующей на двух шагах путем вызова candgen
и candexch
функции в последовательности. Обеспечьте свой собственный C путем вызова candexch
непосредственно. В любом случае, если C является большим, его статическое присутствие в памяти может влиять на расчет.
Координатно-обменный алгоритм, в отличие от этого, не использует набор кандидата. (Или скорее кандидат установил, целый пробел проекта.) На каждом шаге координатно-обменный алгоритм обменивается одним элементом X с новым элементом, оцененным в соседней точке на пробеле проекта. Отсутствие набора кандидата снижает спросы на памяти, но меньший масштаб поиска означает, что координатно-обменный алгоритм, более вероятно, станет захваченным в локальном минимуме, чем обменный строкой алгоритм.
Например, предположите, что вы хотите, чтобы проект оценил параметры в следующей модели взаимодействия с семью терминами, с тремя факторами:
Использование cordexch
сгенерировать проект D-optimal с семью запусками:
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-optimal.
Например, следующий восьмиуправляемый проект достаточен для оценки основных эффектов в четырех факторных моделях:
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
Увеличенный проект является полным факториалом с исходными восемью запусками в первых восьми строках.
'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
чтобы сгенерировать пятиуправляемый проект для 2D факторной модели неполного квадратного уравнения использование набора кандидата, который производится внутренне:
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