exponenta event banner

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

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

Описание проблемы

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

E (Yi) = мкi

Var (Yi) =

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

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

log (мкi1-мкi) = xiTβ

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

log (pcii1-pcii) = f (xi, β).

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

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

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

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

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

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

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

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

Весовая функция

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

E (Yi) = мкi

Var (Yi) =

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

w (pcii) = 1Var (yi) = n

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

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

Создание данных примера

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

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

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

Создайте функцию модели, которая задает связь между pcii и β.

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 из биномиального распределения с вероятностями успеха pcii и числом испытаний 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, и графики для оценок f (xi, β) на основе ML и GLS.

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. Вы можете использовать аналогичный метод, чтобы подогнать другие нелинейные обобщенные линейные модели, такие как нелинейная регрессия Пуассона.