В этом примере показаны два способа подгонки модели нелинейной логистической регрессии. Первый метод использует максимальное правдоподобие (ML), а второй метод использует обобщенные наименьшие квадраты (GLS) через функцию fitnlm из Toolbox™ статистики и машинного обучения.
Логистическая регрессия - особый тип регрессии, в котором целью является моделирование вероятности чего-либо как функции других переменных. Рассмотрим набор векторов предиктора x1,...,xN N - количество наблюдений, xi - вектор столбца, содержащий значения d предикторов для i-го наблюдения. Переменная ответа xi это Zi, Zi представляет случайную переменную Биномиала с n, числом испытаний pcii, вероятность успеха для i. Нормированная переменная ответа Zi/n - доля успехов в n испытаниях для наблюдения i. Предположим, что ответы Yi независимы 1,..., N. Для каждого i:
мкi
Рассмотрим моделирование как функцию предикторных переменных .
В линейной логистической регрессии можно использовать функцию fitglm чтобы смоделировать как функцию следующим образом:
xiTβ
с , представляющим набор коэффициентов, умножающих предикторы в xi. Однако предположим, что вам нужна нелинейная функция на правой стороне:
, β).
В Toolbox™ статистики и машинного обучения существуют функции для подгонки моделей нелинейной регрессии, но не для подгонки моделей нелинейной логистической регрессии. В этом примере показано, как можно использовать функции панели инструментов для соответствия этим моделям.
Подход ML максимизирует логарифмическую вероятность наблюдаемых данных. Вероятность легко вычисляется с использованием биномиальной функции вероятности (или плотности), вычисленной с помощью binopdf функция.
Нелинейную модель логистической регрессии можно оценить с помощью функции fitnlm. Сначала это может показаться удивительным, поскольку fitnlm не соответствует биномиальному распределению или каким-либо функциям связи. Однако fitnlm можно использовать Обобщенные наименьшие квадраты (GLS) для оценки модели, если указать среднее значение и дисперсию отклика. Если GLS сходится, то он решает тот же набор нелинейных уравнений для оценки , что и решенный ML. Можно также использовать GLS для квазиправдоподобной оценки обобщенных линейных моделей. Другими словами, мы должны получить те же или эквивалентные решения из GLS и ML. Чтобы реализовать оценку GLS, предоставьте нелинейную функцию для подгонки и функцию дисперсии для биномиального распределения.
Среднее значение или функция модели
Функция модели описывает, как изменяется с . Для fitnlm, функция модели:
xi, β)}
Весовая функция
fitnlm принимает веса наблюдения как дескриптор функции с помощью 'Weights' аргумент пары имя-значение. При использовании этой опции fitnlm предполагает следующую модель:
мкi
где ответы предполагаются независимыми, а является пользовательским дескриптором функции, который принимает () и возвращает вес наблюдения. Другими словами, веса обратно пропорциональны дисперсии отклика. Для биномиального распределения, используемого в модели логистической регрессии, создайте весовую функцию следующим образом:
fitnlm моделирует дисперсию отклика в виде ), где start2 - дополнительный параметр, присутствующий в оценке GLS, но отсутствующий в модели логистической регрессии. Однако это обычно не влияет на оценку β, и это обеспечивает «параметр дисперсии» для проверки предположения, что значения Zi имеют биномиальное распределение.
Преимущество использования fitnlm над прямым ML - это то, что вы можете выполнять тесты гипотез и вычислять доверительные интервалы для коэффициентов модели.
Чтобы проиллюстрировать различия между фитингом ML и GLS, создайте некоторые примеры данных. Предположим, что является одномерной и предположим, что истинной функцией в модели нелинейной логистической регрессии является модель Михаэлиса-Ментена, параметризованная 2 × 1 β:
+ xi.
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];Вычислите вектор, состоящий из мкi значений для каждого предиктора.
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 = 2×1
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 = 2×1
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 дают аналогичные решения.
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.')

ML и GLS дают аналогичные совпадающие значения.
Постройте график истинной модели для β). Добавьте график для начальной оценки β), β = β0, и графики для (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.')

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