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