rowexch

Обмен строками

Синтаксис

dRE = rowexch(nfactors,nruns)
[dRE,X] = rowexch(nfactors,nruns)
[dRE,X] = rowexch(nfactors,nruns,model)
[dRE,X] = rowexch(...,param1,val1,param2,val2,...)

Описание

dRE = rowexch(nfactors,nruns) использует алгоритм обмена строками, чтобы сгенерировать D -оптимальный проект dRE с nruns запуски (строки dRE) для линейной аддитивной модели с nfactors факторы (столбцы dRE). Модель включает в себя постоянный член.

[dRE,X] = rowexch(nfactors,nruns) также возвращает связанную матрицу проекта X, столбцы которого являются терминами модели, оцениваемыми при каждом лечении (строка) dRE.

[dRE,X] = rowexch(nfactors,nruns,model) использует линейную регрессионую модель, заданную в model. model является одним из следующих:

  • 'linear' - Постоянные и линейные условия. Это значение по умолчанию.

  • 'interaction' - Константа, линейная и условия взаимодействия

  • 'quadratic' - Константа, линейный, взаимодействие и квадратные условия

  • 'purequadratic' - Постоянные, линейные и квадратные условия

Порядок столбцов X для полной квадратичной модели с n терминами:

  1. Постоянный член

  2. Линейные условия в порядок 1 , 2,..., n

  3. Условия взаимодействия в порядке (1, 2), (1, 3),..., (1, n), (2, 3),..., (n-1, n)

  4. Квадратные условия в порядок 1 , 2,..., n

Другие модели используют подмножество этих терминов в том же порядке.

Другой способ model может быть матрицей, задающей полиномиальные условия произвольного порядка. В этом случае model должен иметь по одному столбцу для каждого коэффициента и по одной строке для каждого члена в модели. Значения в любой строке model являются степенями для факторов в столбцах. Для примера, если в модели есть факторы X1, X2, и X3, затем строка [0 1 2] в model задает термин (X1.^0).*(X2.^1).*(X3.^2). Строка всех нулей в model задает постоянный термин, который может быть опущен.

[dRE,X] = rowexch(...,param1,val1,param2,val2,...) задает дополнительные пары параметр/значение для проекта. Действительные параметры и их значения перечислены в следующей таблице.

ПараметрЗначение
'bounds'

Нижняя и верхняя границы для каждого фактора, заданные как 2-by- nfactors матрица. В качестве альтернативы это значение может быть массивом ячеек, содержащим nfactors элементы, каждый элемент, задающий вектор допустимых значений для соответствующего фактора.

'categorical'

Индексы категориальных предикторов.

'display'

Либо 'on' или 'off' для управления отображением счетчика итерации. Значение по умолчанию является 'on'.

'excludefun'

Указатель на функцию, которая исключает нежелательные запусков. Если функция f, она должна поддерживать синтаксис b = f (S), где S является матрицей обработок с nfactors столбцы и b являются вектором логических значений с одинаковым числом строк, как и S. b (i) верно, если исключить i S-ю строку.

'init'

Первоначальный проект как nruns-by- nfactors матрица. По умолчанию это случайным образом выбранный набор точек.

'levels'

Вектор количества уровней для каждого фактора.

'maxiter'

Максимальное количество итераций. Значение по умолчанию является 10.

options

Структура, которая задает, запускать ли параллельно, и задает случайный поток или потоки. Создайте options структура с statset. Для этой опции требуется Parallel Computing Toolbox™. Опциональные поля:

  • UseParallel - Установите значение true для параллельного вычисления. По умолчанию это false.

  • UseSubstreams - Установите значение true для параллельного вычисления воспроизводимым способом. По умолчанию это false. Чтобы вычислить воспроизводимо, установите Streams к типу, разрешающему субпотоки: 'mlfg6331_64' или 'mrg32k3a'.

  • Streams - A RandStream объект или массив ячеек таких объектов. Если вы не задаете Streams, rowexch использует поток по умолчанию или потоки. Если вы принимаете решение задать Streams, используйте один объект, кроме случая

    • UseParallel является true

    • UseSubstreams является false

    В этом случае используйте массив ячеек того же размера, что и пул Parallel.

'tries'

Количество попыток сгенерировать проект из новой начальной точки. Алгоритм использует случайные точки для каждой попытки, кроме, возможно, первой. Значение по умолчанию является 1.

Примеры

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

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

Использовать rowexch чтобы сгенерировать D -оптимальный проект с семью запусками:

nfactors = 3;
nruns = 7;
[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

Столбцы матрицы проекта X оцениваются ли условия модели в каждой строке проекта dRE. Условия появляются в порядке слева направо: постоянный термин, линейные условия (1, 2, 3), условия взаимодействия (12, 13, 23). Использование X для соответствия модели, как описано в Linear Regression, данным отклика, измеренным в проектных точках в dRE.

Алгоритмы

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

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

Расширенные возможности

См. также

| |

Представлено до R2006a