Этот пример показывает два способа подбирать нелинейную модель логистической регрессии. Первый метод использует наибольшее правдоподобие (ML), и второй метод использует обобщенные наименьшие квадраты (GLS) через функциональный fitnlm от Statistics and Machine Learning Toolbox(TM).
Логистическая регрессия является специальным типом регрессии, в которой цель состоит в том, чтобы смоделировать вероятность чего-то как функция других переменных. Рассмотрите набор векторов предиктора
, где
количество наблюдений и
вектор-столбца, содержит значения
предикторов для
th наблюдения. Переменная отклика для
-
то, где
представляет Биномиальную случайную переменную параметрами
, количеством испытаний, и
, вероятность успеха для испытания
. Нормированная переменная отклика
- пропорция успехов в
испытаниях за наблюдение
. Примите, что ответы
независимы для
. Для каждого
:

.
Рассмотрите моделирование
как функцию переменных предикторов
.
В линейной логистической регрессии можно использовать функциональный fitglm к модели
как функция
можно следующим образом:

с
представлением набора коэффициентов, умножающих предикторы в
. Однако предположите, что вам нужна нелинейная функция на правой стороне:

Существуют функции в Statistics and Machine Learning Toolbox(TM) для того, чтобы подбирать нелинейные модели регрессии, но не для того, чтобы подбирать нелинейные модели логистической регрессии. В этом примере показано, как можно использовать функции тулбокса, чтобы подбирать те модели.
Подход ML максимизирует логарифмическую вероятность наблюдаемых данных. Вероятность легко вычисляется с помощью Биномиальной вероятности (или плотность) функция, как вычислено binopdf функция.
Можно оценить нелинейную модель логистической регрессии использование функционального fitnlm. Эта сила кажется удивительной сначала начиная с fitnlm не размещает Биномиальное распределение или любые функции ссылки. Однако fitnlm может использовать Обобщенные наименьшие квадраты (GLS) в оценке модели, если вы задаете среднее значение и отклонение ответа. Если GLS сходится, то он решает тот же набор нелинейных уравнений для оценки
, как решено ML. Можно также использовать GLS в оценке квазивероятности обобщенных линейных моделей. Другими словами, мы должны получить те же или эквивалентные решения от GLS и ML. Чтобы реализовать оценку GLS, обеспечьте нелинейную функцию, чтобы соответствовать, и функция отклонения для Биномиального распределения.
Средняя или функция модели
Функция модели описывает как
изменения с
. Для fitnlm, функция модели:

Функция веса
fitnlm принимает веса наблюдения как указатель на функцию с помощью 'Weights' аргумент пары "имя-значение". При использовании этой опции, fitnlm принимает следующую модель:


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

fitnlm моделирует отклонение ответа
как
, где
дополнительный параметр, который присутствует по оценке GLS, но отсутствующий в модели логистической регрессии. Однако это обычно не влияет на оценку
, и она обеспечивает "дисперсионный параметр", чтобы проверять при условии, что
значения имеют Биномиальное распределение.
Преимущество использования fitnlm по прямому ML то, что можно выполнить тесты гипотезы и вычислить доверительные интервалы на коэффициентах модели.
Чтобы проиллюстрировать различия между ML и подбором кривой GLS, сгенерируйте некоторые данные в качестве примера. Примите, что это
является одномерным, и предположите, что истинная функция
в нелинейной модели логистической регрессии является моделью Michaelis-Menten, параметрированной
вектором
:

myf = @(beta,x) beta(1)*x./(beta(2) + x);
Создайте функцию модели, которая задает отношение между
и
.
mymodelfun = @(beta,x) 1./(1 + exp(-myf(beta,x)));
Создайте вектор одномерных предикторов и истинного вектора коэффициентов
.
rng(300,'twister');
x = linspace(-1,1,200)';
beta = [10;2];
Вычислите вектор
значений для каждого предиктора.
mu = mymodelfun(beta,x);
Сгенерируйте ответы
от Биномиального распределения с вероятностями успеха
и количеством испытаний
.
n = 50;
z = binornd(n,mu);
Нормируйте ответы.
y = z./n;
Подход ML задает отрицательную логарифмическую вероятность как функцию
вектора, и затем минимизирует его с оптимизационной функцией, такой как fminsearch. Задайте beta0 как начальное значение для
.
mynegloglik = @(beta) -sum(log(binopdf(z,n,mymodelfun(beta,x))));
beta0 = [3;3];
opts = optimset('fminsearch');
opts.MaxFunEvals = Inf;
opts.MaxIter = 10000;
betaHatML = fminsearch(mynegloglik,beta0,opts)
betaHatML =
9.9259
1.9720
Предполагаемые коэффициенты в betaHatML близко к истинным значениям [10;2].
Подход GLS создает функцию веса для fitnlm ранее описанный.
wfun = @(xx) n./(xx.*(1-xx));
Вызовите fitnlm с пользовательским средним значением и функциями веса. Задайте beta0 как начальное значение для
.
nlm = fitnlm(x,y,mymodelfun,beta0,'Weights',wfun)
nlm =
Nonlinear regression model:
y ~ F(beta,x)
Estimated Coefficients:
Estimate SE tStat pValue
________ _______ ______ __________
b1 9.926 0.83135 11.94 4.193e-25
b2 1.972 0.16438 11.996 2.8182e-25
Number of observations: 200, Error degrees of freedom: 198
Root Mean Squared Error: 1.16
R-Squared: 0.995, Adjusted R-Squared 0.995
F-statistic vs. zero model: 1.88e+04, p-value = 2.04e-226
Получите оценку
от подходящего NonLinearModel объект nlm.
betaHatGLS = nlm.Coefficients.Estimate
betaHatGLS =
9.9260
1.9720
Как в методе ML, предполагаемых коэффициентах в betaHatGLS близко к истинным значениям [10;2]. Маленькие p-значения для обоих
и
указывают, что оба коэффициента существенно отличаются от
.
Сравните оценки
.
max(abs(betaHatML - betaHatGLS))
ans = 1.1460e-05
Сравните адаптированные значения с помощью ML и GLS
yHatML = mymodelfun(betaHatML ,x);
yHatGLS = mymodelfun(betaHatGLS,x);
max(abs(yHatML - yHatGLS))
ans = 1.2746e-07
ML и подходы GLS производят аналогичные решения.
h = figure;
plot(x,y,'g','LineWidth',1);
hold on;
plot(x,yHatML ,'b' ,'LineWidth',1);
plot(x,yHatGLS,'m--','LineWidth',1);
legend('Data','ML','GLS','Location','Best');
xlabel('x');
ylabel('y and fitted values');
title('Data y along with ML and GLS fits.');
snapnow;
close(h);

ML и GLS производят подобные подходящие значения.
Постройте истинную модель для
. Добавьте график для первоначальной оценки
использования
и графики для ML, и GLS основывал оценки
.
h = figure;
plot(x,myf(beta,x),'r','LineWidth',1);
hold on;
plot(x,myf(beta0,x) ,'k' ,'LineWidth',1);
plot(x,myf(betaHatML ,x),'c--','LineWidth',1);
plot(x,myf(betaHatGLS,x),'b-.','LineWidth',1);
legend('True f','Initial f','Estimated f with ML','Estimated f with GLS','Location','Best');
xlabel('x');
ylabel('True and estimated f');
title('Comparison of true f with estimated f using ML and GLS.');
snapnow;
close(h);

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