Проекты Д-Оптимэла

Введение в проекты Д-Оптимэла

Традиционные экспериментальные планы (Полные Планы факторного эксперимента, Дробные Планы факторного эксперимента и Проекты Поверхности Ответа) подходят для калибровки линейных моделей в экспериментальных настройках, где факторы относительно неограничены в необходимой области. В некоторых случаях, однако, модели обязательно нелинейны. В других случаях определенные обработки (комбинации факторных уровней) могут быть дорогими или неосуществимыми измериться. D-optimal designs является проектами модели специфичными, которые обращаются к этим ограничениям традиционных проектов.

Проект D-optimal сгенерирован итеративным алгоритмом поиска и стремится минимизировать ковариацию оценок параметра для заданной модели. Это эквивалентно максимизации определителя D = |XTX |, где X является матрицей проекта условий модели (столбцы) оцененный при определенных обработках на пробеле проекта (строки). В отличие от традиционных проектов, проекты Д-оптимэла не требуют ортогональных матриц проекта, и в результате оценки параметра могут коррелироваться. Оценки параметра могут также быть локально, но не глобально, D-optimal.

Существует несколько функций Statistics and Machine Learning Toolbox™ для генерации проектов Д-оптимэла:

ФункцияОписание
candexch

Использует обменный строкой алгоритм, чтобы сгенерировать проект D-optimal с конкретным количеством запусков для заданной модели, и заданный кандидат установил. Это - второй компонент алгоритма, используемого rowexch.

candgen

Генерирует набор кандидата для заданной модели. Это - первый компонент алгоритма, используемого rowexch.

cordexch

Использует координатно-обменный алгоритм, чтобы сгенерировать проект D-optimal с конкретным количеством запусков для заданной модели.

daugment

Использует координатно-обменный алгоритм, чтобы увеличить существующий проект D-optimal с дополнительными запусками, чтобы оценить дополнительные условия модели.

dcovary

Использует координатно-обменный алгоритм, чтобы сгенерировать проект D-optimal с фиксированными ковариационными факторами.

rowexch

Использует обменный строкой алгоритм, чтобы сгенерировать проект D-optimal с конкретным количеством запусков для заданной модели. Вызовы алгоритма candgen и затем candexch. (Вызовите candexch отдельно, чтобы задать кандидата устанавливает.)

Следующие разделы объясняют, как использовать эти функции, чтобы сгенерировать проекты Д-оптимэла.

Примечание

Функция rsmdemo генерирует симулированные данные для экспериментальных настроек, заданных или пользователем или проектом D-optimal, сгенерированным cordexch. Это использует rstool интерфейс, чтобы визуализировать подгонку моделей поверхности ответа к данным, и это использует nlintool интерфейс, чтобы визуализировать нелинейную подгонку модели к данным.

Сгенерируйте проекты Д-Оптимэла

Два алгоритма Statistics and Machine Learning Toolbox генерируют проекты Д-оптимэла:

  • cordexch функционируйте использует координатно-обменный алгоритм

  • rowexch функционируйте использует обменный строкой алгоритм

Оба cordexch и rowexch используйте итеративные алгоритмы поиска. Они действуют путем инкрементного изменения начальной матрицы проекта X, чтобы увеличить D = |XTX | на каждом шаге. В обоих алгоритмах существует случайность, встроенная в выбор первоначального проекта и в выбор инкрементных изменений. В результате оба алгоритма могут возвратиться локально, но не глобально, проекты Д-оптимэла. Запустите каждый алгоритм многократно и выберите лучший результат для вашего итогового проекта. Обе функции имеют 'tries' параметр, который автоматизирует это повторение и сравнение.

На каждом шаге обменный строкой алгоритм обменивается целой строкой X со строкой из матрицы проекта C, оцененный в candidate set выполнимых обработок. rowexch функция автоматически генерирует C, подходящий для заданной модели, действующей на двух шагах путем вызова candgen и candexch функции в последовательности. Обеспечьте свой собственный C путем вызова candexch непосредственно. В любом случае, если C является большим, его статическое присутствие в памяти может влиять на расчет.

Координатно-обменный алгоритм, в отличие от этого, не использует набор кандидата. (Или скорее кандидат установил, целый пробел проекта.) На каждом шаге координатно-обменный алгоритм обменивается одним элементом X с новым элементом, оцененным в соседней точке на пробеле проекта. Отсутствие набора кандидата снижает спросы на памяти, но меньший масштаб поиска означает, что координатно-обменный алгоритм, более вероятно, станет захваченным в локальном минимуме, чем обменный строкой алгоритм.

Например, предположите, что вы хотите, чтобы проект оценил параметры в следующей модели взаимодействия с семью терминами, с тремя факторами:

y=β0+β1x+1β2x+2β3x+3β12xx1+2β13xx1+3β23xx2+3ε

Использование 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. Линейные члены (1, 2, 3)

  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