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

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

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

Логистическая регрессия является специальным типом регрессии, в которой цель состоит в том, чтобы смоделировать вероятность чего-то в зависимости от других переменных. Рассмотрите набор векторов предиктора x1,,xN где N количество наблюдений и xi вектор-столбец, содержащий значения d предикторы для i наблюдение th. Переменная отклика для 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, обеспечьте нелинейную функцию, чтобы соответствовать, и функция отклонения для Биномиального распределения.

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

Функция модели описывает как μ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, сгенерируйте некоторые данные в качестве примера. AssumeThat xi является одномерным, и предположите истинную функцию f в нелинейной логистической регрессии модель является моделью Michaelis-Menten, параметрированной 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.

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

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

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