Этот пример показывает два способа подбирать нелинейную модель логистической регрессии. Первый метод использует наибольшее правдоподобие (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.1460e-05
Сравните адаптированные значения с помощью ML и GLS
yHatML = mymodelfun(betaHatML ,x); yHatGLS = mymodelfun(betaHatGLS,x); max(abs(yHatML - yHatGLS))
ans = 1.2746e-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 близко к истинной нелинейной функции. Можно использовать подобный метод, чтобы подбирать другие нелинейные обобщенные линейные модели как нелинейная регрессия Пуассона.