Традиционные экспериментальные планы (Полные Планы факторного эксперимента, Дробные Планы факторного эксперимента и Проекты Поверхности Ответа) подходят для калибровки линейных моделей в экспериментальных настройках, где факторы относительно неограничены в видимой области. В некоторых случаях, однако, модели обязательно нелинейны. В других случаях определенные обработки (комбинации факторных уровней) могут быть дорогими или неосуществимыми измериться. 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 с конкретным количеством выполнений для заданной модели. Алгоритм вызывает |
Следующие разделы объясняют, как использовать эти функции, чтобы сгенерировать проекты Д-оптимэла.
Функция Statistics and Machine Learning Toolbox 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