nlinfit

Нелинейная регрессия

Синтаксис

beta = nlinfit(X,Y,modelfun,beta0)
beta = nlinfit(X,Y,modelfun,beta0,options)
beta = nlinfit(___,Name,Value)
[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(___)

Описание

пример

beta = nlinfit(X,Y,modelfun,beta0) возвращает вектор предполагаемых коэффициентов для нелинейной регрессии ответов в Y на предикторах в X с помощью модели, заданной modelfun. Коэффициенты оцениваются с помощью итеративной оценки методом наименьших квадратов с начальными значениями, заданными beta0.

пример

beta = nlinfit(X,Y,modelfun,beta0,options) соответствует нелинейной регрессии с помощью параметров управления алгоритмом в структуре options. Можно возвратить любой из выходных аргументов в предыдущих синтаксисах.

пример

beta = nlinfit(___,Name,Value) дополнительные опции использования заданы одним или несколькими аргументами пары "имя-значение". Например, можно задать веса наблюдения или непостоянную ошибочную модель. Можно комбинировать с любым синтаксом из перечисленных выше.

пример

[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(___) дополнительно возвращает невязки, R, якобиан modelfun, J, предполагаемой ковариационной матрицы отклонения для предполагаемых коэффициентов, CovB, оценки отклонения остаточного члена, MSE и структуры, содержащей детали об ошибочной модели, ErrorModelInfo.

Примеры

свернуть все

Загрузка демонстрационных данных.

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

Соответствуйте модели Хоуджен-Уотсона к данным об уровне с помощью начальных значений в beta0.

beta = nlinfit(X,y,@hougen,beta0)
beta = 5×1

    1.2526
    0.0628
    0.0400
    0.1124
    1.1914

Сгенерируйте выборочные данные из нелинейной модели регрессии y=b1+b2exp{-b3x}+ϵ, где b1, b2, и b3 коэффициенты, и остаточный член нормально распределен со средним значением 0 и стандартным отклонением 0.1.

modelfun = @(b,x)(b(1)+b(2)*exp(-b(3)*x));

rng('default') % for reproducibility
b = [1;3;2];
x = exprnd(2,100,1);
y = modelfun(b,x) + normrnd(0,0.1,100,1);

Установите устойчивые подходящие опции.

opts = statset('nlinfit');
opts.RobustWgtFun = 'bisquare';

Соответствуйте нелинейной модели с помощью устойчивых подходящих опций.

beta0 = [2;2;2];
beta = nlinfit(x,y,modelfun,beta0,opts)
beta = 3×1

    1.0041
    3.0997
    2.1483

Загрузка демонстрационных данных.

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

Задайте вектор известных весов наблюдения.

W = [8 2 1 6 12 9 12 10 10 12 2 10 8]';

Соответствуйте модели Хоуджен-Уотсона к данным об уровне с помощью заданных весов наблюдения.

[beta,R,J,CovB] = nlinfit(X,y,@hougen,beta0,'Weights',W);
beta
beta = 5×1

    2.2068
    0.1077
    0.0766
    0.1818
    0.6516

Отобразите содействующие стандартные погрешности.

sqrt(diag(CovB))
ans = 5×1

    2.5721
    0.1251
    0.0950
    0.2043
    0.7735

Загрузка демонстрационных данных.

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

Задайте указатель на функцию для весов наблюдения. Функция признает, что модель соответствовала значениям, как введено и возвращает вектор весов.

 a = 1; b = 1;
 weights = @(yhat) 1./((a + b*abs(yhat)).^2);

Соответствуйте модели Хоуджен-Уотсона к данным об уровне с помощью заданной функции весов наблюдения.

[beta,R,J,CovB] = nlinfit(X,y,@hougen,beta0,'Weights',weights);
beta
beta = 5×1

    0.8308
    0.0409
    0.0251
    0.0801
    1.8261

Отобразите содействующие стандартные погрешности.

sqrt(diag(CovB))
ans = 5×1

    0.5822
    0.0297
    0.0197
    0.0578
    1.2810

Загрузка демонстрационных данных.

S = load('reaction');
X = S.reactants;
y = S.rate;
beta0 = S.beta;

Соответствуйте модели Хоуджен-Уотсона к данным об уровне с помощью объединенной ошибочной модели.

[beta,R,J,CovB,MSE,ErrorModelInfo] = nlinfit(X,y,@hougen,beta0,'ErrorModel','combined');
beta
beta = 5×1

    1.2526
    0.0628
    0.0400
    0.1124
    1.1914

Отобразите ошибочную информацию о модели.

ErrorModelInfo
ErrorModelInfo = struct with fields:
              ErrorModel: 'combined'
         ErrorParameters: [0.1517 5.6783e-08]
           ErrorVariance: [function_handle]
                     MSE: 1.6245
          ScheffeSimPred: 6
          WeightFunction: 0
            FixedWeights: 0
    RobustWeightFunction: 0

Входные параметры

свернуть все

Переменные прогноза для нелинейной функции регрессии, заданной как матрица. Как правило, X является матрицей проекта предиктора (независимая переменная) значения с одной строкой для каждого значения в Y и одним столбцом для каждого предиктора. Однако X может быть любым массивом, который может принять modelfun.

Типы данных: single | double

Значения ответа (зависимая переменная) для подбора кривой нелинейной функции регрессии, заданной как вектор с одинаковым числом строк как X.

Типы данных: single | double

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

Например, чтобы задать hougen нелинейная функция регрессии, используйте указатель на функцию @hougen.

Типы данных: function_handle

Начальные содействующие значения для алгоритма оценки методом наименьших квадратов, заданного как вектор.

Примечание

Плохие начальные значения могут привести к решению с большой остаточной ошибкой.

Типы данных: single | double

Опции алгоритма оценки, заданные как структура, вы создаете использование statset. Следующие параметры statset применимы к nlinfit.

Относительная разница для вычисления градиента конечной разности, заданного как значение положительной скалярной величины или вектор тот же размер как beta. Используйте вектор, чтобы задать различную относительную разницу для каждого коэффициента.

Уровень вывода отображается во время оценки, заданной как один из 'off', 'iter' или 'final'. Если вы задаете 'iter', выводите, отображен в каждой итерации. Если вы задаете 'final', выводите, отображен после итоговой итерации.

Индикатор для того, проверять ли на недопустимые значения, такие как NaN или Inf от целевой функции, заданной как 'on' или 'off'.

Максимальное количество итераций для алгоритма оценки, заданного как положительное целое число. Итерации продолжаются, пока оценки не в допуске сходимости, или максимальное количество итераций, заданных MaxIter, достигнуто.

Функция веса для устойчивого подбора кривой, заданного как вектор допустимого символа, представляет в виде строки скаляр или указатель на функцию.

Примечание

RobustWgtFun должен иметь значение [], когда вы используете веса наблюдения, W.

Следующая таблица описывает возможные векторы символов и скаляры строки. Позвольте r обозначить, что нормированные невязки и w обозначают устойчивые веса. Функция индикатора I [x] равна 1, если выражение x верно, и 0 в противном случае.

Функция весаУравнениеЗначение по умолчанию, настраивающееся постоянный
'' (значение по умолчанию) Никакой устойчивый подбор кривой
'andrews'

w=I[|r|<π]×sin(r)/r

1.339
'bisquare'

w=I[|r|<1]×(1r2)2

4.685
'cauchy'

w=1(1+r2)

2.385
'fair'

w=1(1+|r|)

1.400
'huber'

w=1max (1,|r|)

1.345
'logistic'

w=tanh(r)r

1.205
'talwar'

w=I[|r|<1]

2.795
'welsch'

w=exp{r2}

2.985

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

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

Если вы используете указатель на функцию, чтобы задать RobustWgtFun, то необходимо задать значение для Tune.

Допуск завершения к остаточной сумме квадратов, заданной как значение положительной скалярной величины. Итерации продолжаются, пока оценки не в допуске сходимости, или максимальное количество итераций, заданных MaxIter, достигнуто.

Допуск завершения на предполагаемых коэффициентах, beta, заданном как значение положительной скалярной величины. Итерации продолжаются, пока оценки не в допуске сходимости, или максимальное количество итераций, заданных MaxIter, достигнуто.

Индикатор для устойчивого подбора кривой, заданного как 'off' или 'on'.

Примечание

Robust будет удален в будущем релизе программного обеспечения. Используйте RobustWgtFun для устойчивого подбора кривой.

Функция веса для устойчивого подбора кривой, заданного как вектор символов или скаляр строки указание на функцию веса или указатель на функцию. WgtFun допустим только, когда Robust имеет значение 'on'.

Примечание

WgtFun будет удален в будущем релизе программного обеспечения. Используйте RobustWgtFun вместо этого.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'ErrorModel','proportional','ErrorParameters',0.5 задает пропорциональную ошибочную модель с начальным значением 0.5 для оценки параметра ошибок

Форма остаточного члена, заданного как пара, разделенная запятой, состоящая из 'ErrorModel' и 'constant', 'proportional' или 'combined', указывающего на ошибочную модель. Каждая модель задает ошибку стандартный средний нуль и переменная e модульного отклонения в сочетании с независимыми компонентами: значение функции f и один или два параметра a и b.

'constant' (значение по умолчанию)y=f+ae
'proportional'y=f+bfe
'combined'y=f+(a+b|f|)e

Единственной позволенной ошибочной моделью при использовании Weights является 'constant'.

Примечание

options.RobustWgtFun должен иметь значение [] при использовании ошибочной модели кроме 'constant'.

Первоначальные оценки для ошибочных параметров модели в выбранном ErrorModel, заданном как пара, разделенная запятой, состоящая из 'ErrorParameters' и скалярного значения или двухэлементного вектора.

Ошибочная модельПараметрыЗначения по умолчанию
'constant' a1
'proportional'b1
'combined'a, B [1,1]

Например, если 'ErrorModel' имеет значение 'combined', можно задать начальное значение 1 для a и начального значения 2 для b можно следующим образом.

Пример: 'ErrorParameters',[1,2]

Можно только использовать ошибочную модель 'constant' при использовании Weights.

Примечание

options.RobustWgtFun должен иметь значение [] при использовании ошибочной модели кроме 'constant'.

Типы данных: double | single

Веса наблюдения, заданные как пара, разделенная запятой, состоящая из 'Weights' и вектор действительных положительных весов или указателя на функцию. Можно использовать веса наблюдения, чтобы вниз-взвесить наблюдения, что вы хотите иметь меньше влияния на подобранную модель.

  • Если W является вектором, то он должен быть одного размера как Y.

  • Если W является указателем на функцию, то он должен принять вектор предсказанных значений ответа, как введено и возвратить вектор действительных положительных весов, как выведено.

Примечание

options.RobustWgtFun должен иметь значение [], когда вы используете веса наблюдения.

Типы данных: double | single | function_handle

Выходные аргументы

свернуть все

Предполагаемые коэффициенты регрессии, возвращенные как вектор. Число элементов в beta равняется числу элементов в beta0.

Пусть f(Xi,b) обозначьте нелинейную функцию, заданную modelfun, где xi предикторы для наблюдения i, i = 1..., N, и b коэффициенты регрессии. Вектор коэффициентов, возвращенных в beta, минимизирует уравнение метода взвешенных наименьших квадратов,

i=1Nwi[yif(xi,b)]  2.

Для невзвешенной нелинейной регрессии все условия веса равны 1.

Невязки для подобранной модели, возвращенной как вектор.

  • Если вы задаете веса наблюдения с помощью аргумента пары "имя-значение" Weights, то R содержит взвешенные невязки.

  • Если вы задаете ошибочную модель кроме 'constant' с помощью аргумента пары "имя-значение" ErrorModel, то вы больше не можете интерпретировать R как образцовые подходящие невязки.

Якобиан нелинейной модели регрессии, modelfun, возвращенного как N-by-p матрица, где N является количеством наблюдений и p, является количеством предполагаемых коэффициентов.

  • Если вы задаете веса наблюдения с помощью аргумента пары "имя-значение" Weights, то J является взвешенным образцовым функциональным якобианом.

  • Если вы задаете ошибочную модель кроме 'constant' с помощью аргумента пары "имя-значение" ErrorModel, то вы больше не можете интерпретировать J как образцовый функциональный якобиан.

Предполагаемая ковариационная матрица отклонения для подходящих коэффициентов, beta, возвращенного как p-by-p матрица, где p является количеством предполагаемых коэффициентов. Если образцовый якобиан, J, имеет полный ранг столбца, то CovB = inv(J'*J)*MSE, где MSE является среднеквадратической ошибкой.

Среднеквадратическая ошибка (MSE) подобранной модели, возвращенной как скалярное значение. MSE является оценкой отклонения остаточного члена. Если образцовый якобиан, J, имеет полный ранг столбца, то MSE = (R'*R)/(N-p), где N является количеством наблюдений и p, является количеством предполагаемых коэффициентов.

Информация об ошибочной подгонке модели, возвращенной как структура со следующими полями:

ErrorModelВыбранная ошибочная модель
ErrorParametersПредполагаемые параметры ошибок
ErrorVarianceУказатель на функцию, который принимает N-by-p матрица, X, и возвращает N-by-1 вектор ошибочных отклонений с помощью предполагаемой ошибочной модели
MSEСреднеквадратическая ошибка
ScheffeSimPredПараметр Scheffé для одновременных интервалов прогноза при использовании предполагаемой ошибочной модели
WeightFunctionЛогический со значением true, если вы использовали пользовательскую функцию веса ранее в nlinfit
FixedWeightsЛогический со значением true, если вы использовали зафиксированные веса ранее в nlinfit
RobustWeightFunctionЛогический со значением true, если вы использовали устойчивый подбор кривой ранее в nlinfit

Больше о

свернуть все

Взвешенные невязки

weighted residual является невязкой, умноженной на квадратный корень из соответствующего веса наблюдения.

Учитывая предполагаемые коэффициенты регрессии, b, невязка для наблюдения i

ri=yif(xi,b),

где yi является наблюдаемым ответом и f(xi,b) подходящий ответ в предикторах xi.

Когда вы соответствуете взвешенной нелинейной регрессии весами wi, i = 1..., N, nlinfit возвращает взвешенные невязки,

ri*=wi(yif(xi,b)).

Взвешенный образцовый функциональный якобиан

weighted model function Jacobian является нелинейным образцовым якобианом, умноженным на квадратный корень из матрицы веса наблюдения.

Учитывая предполагаемые коэффициенты регрессии, b, предполагаемый образцовый якобиан, J,для нелинейной функции f(xi,b) имеет элементы

Jij=f(xi,b)bj,

где bj является j th элемент b.

Когда вы соответствуете взвешенной нелинейной регрессии диагональной матрицей весов W,nlinfit возвращает взвешенную якобиевскую матрицу,

J*=W1/2J.

Советы

  • Чтобы произвести ошибочные оценки на прогнозах, используйте дополнительные выходные аргументы R, J, CovB или MSE как входные параметры к nlpredci.

  • Чтобы произвести ошибочные оценки на предполагаемых коэффициентах, beta, используют дополнительные выходные аргументы R, J, CovB или MSE как входные параметры к nlparci.

  • Если вы используете устойчивую подходящую опцию, RobustWgtFun, вы должны использовать CovB — и можете нуждаться в MSE — как входные параметры к nlpredci или nlparci, чтобы гарантировать, что доверительные интервалы берут устойчивую подгонку правильно во внимание.

Алгоритмы

  • nlinfit обрабатывает значения NaN в Y или modelfun(beta0,X) как недостающие данные, и игнорирует соответствующие наблюдения.

  • Для неустойчивой оценки nlinfit использует алгоритм нелинейного метода наименьших квадратов Levenberg-Marquardt [1].

  • Для устойчивой оценки nlinfit использует итеративный перевзвешенный алгоритм наименьших квадратов ([2], [3]). В каждой итерации устойчивые веса повторно вычисляются на основе невязки каждого наблюдения от предыдущей итерации. Эти веса подавляют выбросы, так, чтобы их влияние на подгонку было уменьшено. Итерации продолжаются, пока веса не сходятся.

  • Когда вы задаете указатель на функцию для весов наблюдения, веса зависят от подобранной модели. В этом случае nlinfit использует итеративный обобщенный алгоритм наименьших квадратов, чтобы соответствовать нелинейной модели регрессии.

Ссылки

[1] Seber, G. A. F. и C. J. Дикий. Нелинейная регрессия. Хобокен, NJ: Wiley-межнаука, 2003.

[2] DuMouchel, W. H. и Ф. Л. О'Брайен. “Интегрируя Устойчивую Опцию в Вычислительную среду Регрессии кратного”. Информатика и Статистика: Продолжения 21-го Симпозиума по Интерфейсу. Александрия, ВА: американская Статистическая Ассоциация, 1989.

[3] Голландия, P. W. и Р. Э. Велш. “Устойчивая Регрессия Используя Итеративно Перевзвешенные Наименьшие квадраты”. Коммуникации в Статистике: Теория и Методы, A6, 1977, стр 813–827.

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