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, якобиан modelfunJ, предполагаемая ковариационная матрица отклонения для предполагаемых коэффициентов, 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 имя аргумента и 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.

Советы

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

  • Произвести ошибочные оценки на предполагаемых коэффициентах, beta, используйте дополнительные выходные аргументы RJ, 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