Нелинейная логистическая регрессия

Этот пример показывает два способа подбора нелинейной модели логистической регрессии. Первый метод использует максимальную правдоподобность (ML), а второй метод использует обобщенные наименьшие квадраты (GLS) через функцию fitnlm от Statistics and Machine Learning Toolbox™.

Описание задачи

Логистическая регрессия является особым типом регрессии, в которой цель состоит в том, чтобы смоделировать вероятность чего-то как функцию от других переменных. Рассмотрим набор векторов x1,,xN где N количество наблюдений и xi - вектор-столбец, содержащая значения d предикторы для i 2е наблюдение. Переменная отклика для xi является Zi где Zi представляет Биномиальную случайную переменную с параметрами n, количество испытаний, и μi, вероятность успеха для суда i. Нормированная переменная отклика Yi=Zi/n - доля успехов в n испытания для наблюдения i. Предположим, что ответы Yi являются независимыми для i=1,,N. Для каждого i:

E(Yi)=μi

Var(Yi)=μi(1-μi)n.

Рассмотрите моделирование μi как функция от переменных предиктора xi.

В линейной логистической регрессии можно использовать функцию fitglm смоделировать μi как функцию xi следующим образом:

log(μi1-μi)=xiTβ

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

log(μi1-μi)=f(xi,β).

В Statistics and Machine Learning Toolbox™ существуют функции для подбора кривой нелинейных регрессионых моделей, но не для подбора кривой нелинейных логистических регрессионных моделей. В этом примере показано, как использовать функции тулбокса для соответствия этим моделям.

Прямая максимальная правдоподобность (ML)

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

Обобщенные наименьшие квадраты (GLS)

Можно оценить нелинейную логистическую регрессионую модель с помощью функции fitnlm. Это может показаться удивительным сначала с fitnlm не учитывает биномиальное распределение или какие-либо функции ссылки. Однако fitnlm может использовать Обобщенные Наименьшие Квадраты (GLS) для оценки модели, если вы задаете среднее значение и отклонение отклика. Если GLS сходится, то он решает тот же набор нелинейных уравнений для оценки β как решается ML. Можно также использовать GLS для квази-вероятностной оценки обобщенных линейных моделей. Другими словами, мы должны получить те же или эквивалентные решения от GLS и ML. Чтобы реализовать оценку GLS, предоставьте нелинейную функцию, которая подходит, и функцию отклонения для Биномиального распределения.

Средняя или модельная функция

Функция model описывает, как μi изменения с β. Для fitnlm, функция модели является:

μi=11+exp{-f(xi,β)}

Функция веса

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

E(Yi)=μi

Var(Yi)=σ2w(μi)

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

w(μi)=1Var(yi)=nμi(1-μi)

fitnlm моделирует отклонение отклика Yi как σ2/w(μi) где σ2 является дополнительным параметром, который присутствует в оценке GLS, но отсутствует в логистической регрессионой модели. Однако это обычно не влияет на оценку β, и он предоставляет «параметр дисперсии», чтобы проверить на предположение, что Zi значения имеют биномиальное распределение.

Преимущество использования fitnlm по прямому ML является то, что вы можете выполнить проверку гипотезы и вычислить доверительные интервалы на коэффициентах модели.

Сгенерируйте данные примера

Чтобы проиллюстрировать различия между подбором кривой ML и GLS, сгенерируйте некоторые примеры данных. Предположим, что xi является одномерным и предположим, что функция true f в нелинейной логистической регрессионной модели является модель Михаэлис-Ментен, параметризованная a 2×1 вектор β:

f(xi,β)=β1xiβ2+xi.

myf = @(beta,x) beta(1)*x./(beta(2) + x);

Создайте функцию модели, которая задает отношение между μi и β.

mymodelfun = @(beta,x) 1./(1 + exp(-myf(beta,x)));

Создайте вектор из одномерных предикторов и вектора истинного коэффициента β.

rng(300,'twister');
x    = linspace(-1,1,200)';
beta = [10;2];

Вычислите вектор из μi значения для каждого предиктора.

mu = mymodelfun(beta,x);

Сгенерируйте ответы zi из Биномиального распределения с вероятностями успеха μi и количество судебных разбирательств n.

n = 50;
z = binornd(n,mu);

Нормализуйте ответы.

y = z./n;

Подход ML

Подход 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 = 2×1

    9.9259
    1.9720

Предполагаемые коэффициенты в betaHatML близки к истинным значениям [10;2].

Подход GLS

Подход 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 = 2×1

    9.9260
    1.9720

Как и в методе ML, предполагаемые коэффициенты в betaHatGLS близки к истинным значениям [10;2]. Маленькие значения p для обоих β1 и β2 указывают, что оба коэффициента значительно отличаются от 0.

Сравнение подходов ML и GLS

Сравнение оценок β.

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 дают аналогичные решения.

Постройте графики подобранных значений с помощью ML и GLS

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.')

Figure contains an axes. The axes with title Data y along with ML and GLS fits. contains 3 objects of type line. These objects represent Data, ML, GLS.

ML и GLS дают одинаковые подобранные значения.

Постройте расчетную нелинейную функцию с помощью ML и GLS

Постройте график истинной модели для f(xi,β). Добавьте график для начальной оценки f(xi,β) использование β=β0 и графики для оценок на основе ML и GLS f(xi,β).

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.')

Figure contains an axes. The axes with title Comparison of true f with estimated f using ML and GLS. contains 4 objects of type line. These objects represent True f, Initial f, Estimated f with ML, Estimated f with GLS.

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