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 th строка 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

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

'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, чтобы соответствовать модели, как описано в Линейной регрессии, к данным об ответе, измеренным в точках проекта в dRE.

Алгоритмы

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

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

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

Смотрите также

| |

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