Этот пример показывает два способа подбирать нелинейную модель логистической регрессии. Первый метод использует наибольшее правдоподобие (ML), и второй метод использует обобщенные наименьшие квадраты (GLS) через функциональный fitnlm
от Statistics and Machine Learning Toolbox(TM).
Логистическая регрессия является специальным типом регрессии, в которой цель состоит в том, чтобы смоделировать вероятность чего-то как функция других переменных. Рассмотрите набор векторов предиктора, где количество наблюдений и вектор-столбца, содержит значения предикторов для th наблюдения. Переменная отклика для - то, где представляет Биномиальную случайную переменную параметрами, количеством испытаний, и, вероятность успеха для испытания. Нормированная переменная отклика - пропорция успехов в испытаниях за наблюдение. Примите, что ответы независимы для. Для каждого:
.
Рассмотрите моделирование как функцию переменных предикторов.
В линейной логистической регрессии можно использовать функциональный fitglm
к модели как функция можно следующим образом:
с представлением набора коэффициентов, умножающих предикторы в. Однако предположите, что вам нужна нелинейная функция на правой стороне:
Существуют функции в Statistics and Machine Learning Toolbox(TM) для того, чтобы подбирать нелинейные модели регрессии, но не для того, чтобы подбирать нелинейные модели логистической регрессии. В этом примере показано, как можно использовать функции тулбокса, чтобы подбирать те модели.
Подход ML максимизирует логарифмическую вероятность наблюдаемых данных. Вероятность легко вычисляется с помощью Биномиальной вероятности (или плотность) функция, как вычислено binopdf
функция.
Можно оценить нелинейную модель логистической регрессии использование функционального fitnlm
. Эта сила кажется удивительной сначала начиная с fitnlm
не вмещает Биномиальное распределение или любые функции ссылки. Однако fitnlm
может использовать Обобщенные наименьшие квадраты (GLS) для оценки модели, если вы задаете среднее значение и отклонение ответа. Если GLS сходится, то он решает тот же набор нелинейных уравнений для оценки, как решено ML. Можно также использовать GLS для оценки квазивероятности обобщенных линейных моделей. Другими словами, мы должны получить те же или эквивалентные решения от GLS и ML. Чтобы реализовать оценку GLS, обеспечьте нелинейную функцию, чтобы соответствовать, и функция отклонения для Биномиального распределения.
Средняя или функция модели
Функция модели описывает как изменения с. Для fitnlm
, функция модели:
Функция веса
fitnlm
принимает веса наблюдения как указатель на функцию с помощью 'Weights'
аргумент пары "имя-значение". При использовании этой опции, fitnlm
принимает следующую модель:
где ответы приняты, чтобы быть независимыми, и пользовательский указатель на функцию, который принимает и возвращает вес наблюдения. Другими словами, веса обратно пропорциональны отклонению ответа. Для Биномиального распределения, используемого в модели логистической регрессии, создайте функцию веса можно следующим образом:
fitnlm
моделирует отклонение ответа как, где дополнительный параметр, который присутствует по оценке GLS, но отсутствующий в модели логистической регрессии. Однако это обычно не влияет на оценку, и она обеспечивает "дисперсионный параметр", чтобы проверять при условии, что значения имеют Биномиальное распределение.
Преимущество использования fitnlm
по прямому ML то, что можно выполнить тесты гипотезы и вычислить доверительные интервалы на коэффициентах модели.
Чтобы проиллюстрировать различия между ML и подбором кривой GLS, сгенерируйте некоторые данные в качестве примера. Примите, что это является одномерным, и предположите, что истинная функция в нелинейной модели логистической регрессии является моделью Michaelis-Menten, параметрированной вектором:
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 = 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 = 9.9260 1.9720
Как в методе ML, предполагаемых коэффициентах в betaHatGLS
близко к истинным значениям [10;2]
. Маленькие p-значения для обоих и указывают, что оба коэффициента существенно отличаются от.
Сравните оценки.
max(abs(betaHatML - betaHatGLS))
ans = 1.1461e-05
Сравните адаптированные значения с помощью ML и GLS
yHatML = mymodelfun(betaHatML ,x); yHatGLS = mymodelfun(betaHatGLS,x); max(abs(yHatML - yHatGLS))
ans = 1.2747e-07
ML и подходы GLS производят аналогичные решения.
h = 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.'); snapnow; close(h);
ML и GLS производят подобные подходящие значения.
Постройте истинную модель для. Добавьте график для первоначальной оценки использования и графики для ML, и GLS основывал оценки.
h = 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.'); snapnow; close(h);
Предполагаемая нелинейная функция с помощью и ML и методов GLS близко к истинной нелинейной функции. Можно использовать подобный метод, чтобы подбирать другие нелинейные обобщенные линейные модели как нелинейная регрессия Пуассона.