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