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 степени для факторов в столбцах. Например, если модель имеет факторы X1x2 , и X3, затем строка [0 1 2] в model задает термин (X1.^0).*(X2.^1).*(X3.^2). Строка всех нулей в model задает постоянный термин, который может быть не использован.

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

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

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

'categorical'

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

'display'

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

'excludefun'

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

'init'

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

'levels'

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

'maxiter'

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

options

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

  • UseParallel — Установите на true вычислить параллельно. Значением по умолчанию является false.

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

  • StreamsRandStream объектный массив или массив ячеек таких объектов. Если вы не задаете 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