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

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

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

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

Примечание

Функция Statistics and Machine Learning Toolbox 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