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 достигнут.

Аргументы name-value

Задайте дополнительные разделенные запятой пары 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