Этот пример показывает два способа подбора нелинейной модели логистической регрессии. Первый метод использует максимальную правдоподобность (ML), а второй метод использует обобщенные наименьшие квадраты (GLS) через функцию fitnlm
от Statistics and Machine Learning Toolbox™.
Логистическая регрессия является особым типом регрессии, в которой цель состоит в том, чтобы смоделировать вероятность чего-то как функцию от других переменных. Рассмотрим набор векторов где количество наблюдений и - вектор-столбец, содержащая значения предикторы для 2е наблюдение. Переменная отклика для является где представляет Биномиальную случайную переменную с параметрами , количество испытаний, и , вероятность успеха для суда . Нормированная переменная отклика - доля успехов в испытания для наблюдения . Предположим, что ответы являются независимыми для . Для каждого :
.
Рассмотрите моделирование как функция от переменных предиктора .
В линейной логистической регрессии можно использовать функцию fitglm
смоделировать как функцию следующим образом:
с представление множества коэффициентов, умножающих предикторы в . Однако предположим, что вам нужна нелинейная функция на правой стороне:
В Statistics and Machine Learning Toolbox™ существуют функции для подбора кривой нелинейных регрессионых моделей, но не для подбора кривой нелинейных логистических регрессионных моделей. В этом примере показано, как использовать функции тулбокса для соответствия этим моделям.
Подход ML максимизирует журнал вероятность наблюдаемых данных. Вероятность легко вычисляется с помощью функции Биномиальной вероятности (или плотности), вычисленной binopdf
функция.
Можно оценить нелинейную логистическую регрессионую модель с помощью функции fitnlm
. Это может показаться удивительным сначала с fitnlm
не учитывает биномиальное распределение или какие-либо функции ссылки. Однако fitnlm
может использовать Обобщенные Наименьшие Квадраты (GLS) для оценки модели, если вы задаете среднее значение и отклонение отклика. Если GLS сходится, то он решает тот же набор нелинейных уравнений для оценки как решается ML. Можно также использовать GLS для квази-вероятностной оценки обобщенных линейных моделей. Другими словами, мы должны получить те же или эквивалентные решения от GLS и ML. Чтобы реализовать оценку GLS, предоставьте нелинейную функцию, которая подходит, и функцию отклонения для Биномиального распределения.
Средняя или модельная функция
Функция model описывает, как изменения с . Для fitnlm
, функция модели является:
Функция веса
fitnlm
принимает веса наблюдений как указатель на функцию, используя 'Weights'
аргумент пары "имя-значение". При использовании этой опции fitnlm
принимает следующую модель:
где ответы приняты независимыми, и является пользовательским указателем на функцию, который принимает и возвращает вес наблюдения. Другими словами, веса обратно пропорциональны отклонения отклика. Для Биномиального распределения, используемого в логистической регрессионой модели, создайте весовую функцию следующим образом:
fitnlm
моделирует отклонение отклика как где является дополнительным параметром, который присутствует в оценке GLS, но отсутствует в логистической регрессионой модели. Однако это обычно не влияет на оценку , и он предоставляет «параметр дисперсии», чтобы проверить на предположение, что значения имеют биномиальное распределение.
Преимущество использования fitnlm
по прямому ML является то, что вы можете выполнить проверку гипотезы и вычислить доверительные интервалы на коэффициентах модели.
Чтобы проиллюстрировать различия между подбором кривой ML и GLS, сгенерируйте некоторые примеры данных. Предположим, что является одномерным и предположим, что функция true в нелинейной логистической регрессионной модели является модель Михаэлис-Ментен, параметризованная a вектор :
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 = 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 дают одинаковые подобранные значения.
Постройте график истинной модели для . Добавьте график для начальной оценки использование и графики для оценок на основе 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 методов близко к истинной нелинейной функции . Можно использовать подобный метод для аппроксимации других нелинейных обобщенных линейных моделей, таких как нелинейная регрессия Пуассона.