Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Regresión logística no lineal

En este ejemplo se muestran dos formas de ajustar un modelo de regresión logística no lineal. El primer método utiliza la máxima probabilidad (ML) y el segundo método utiliza mínimos cuadrados generalizados (GLS) a través de la función de Statistics and Machine Learning Toolbox (TM).fitnlm

Descripción del problema

La regresión logística es un tipo especial de regresión en el que el objetivo es modelar la probabilidad de algo como una función de otras variables. Considere un conjunto de vectores predictores $x_1,\ldots,x_N$ Dónde $N$ es el número de observaciones y $x_i$ es un vector de columna que contiene los valores de la $d$ predictores para el $i$ observación. La variable de respuesta para $x_i$ Es $Z_i$ Dónde $Z_i$ representa una variable aleatoria Binomial con parámetros $n$, el número de ensayos y $\mu_i$, la probabilidad de éxito para el ensayo $i$. La variable de respuesta normalizada es $Y_i = Z_i/n$ - la proporción de éxitos en $n$ ensayos de observación $i$. Supongamos que las respuestas $Y_i$ son independientes para $i = 1,\ldots,N$. Por cada $i$:

$E(Y_i) = \mu_i$

$Var(Y_i) = \frac{\mu_i(1-\mu_i)}{n}$.

Considere la posibilidad de modelar $\mu_i$ como función de las variables predictoras $x_i$.

En la regresión logística lineal, puede utilizar la función para modelarfitglm $\mu_i$ en función de $x_i$ de la siguiente manera:

$\log{\left( \frac{\mu_i}{1 - \mu_i} \right)} = x_i^T \beta$

Con $\beta$ que representan un conjunto de coeficientes que multiplican los predictores en $x_i$. Sin embargo, supongamos que necesita una función no lineal en el lado derecho:

$\log{\left( \frac{\mu_i}{1 - \mu_i} \right)} = f(x_i,\beta).$

Hay funciones en Statistics and Machine Learning Toolbox (TM) para ajustar modelos de regresión no lineal, pero no para ajustar modelos de regresión logística no lineal. En este ejemplo se muestra cómo puede utilizar las funciones de la caja de herramientas para ajustarse a esos modelos.

Probabilidad Máxima Directa (ML)

El enfoque de ML maximiza la probabilidad de registro de los datos observados. La probabilidad se calcula fácilmente utilizando la función probabilidad (o densidad) binomial calculada por la función.binopdf

Mínimos cuadrados generalizados (GLS)

Puede estimar un modelo de regresión logística no lineal utilizando la función .fitnlm Esto puede parecer sorprendente al principio, ya que no admite la distribución binomial ni ninguna función de enlace.fitnlm Sin embargo, puede utilizar Mínimos cuadrados generalizados (GLS) para la estimación del modelo si especifica la media y la varianza de la respuesta.fitnlm Si GLS converge, entonces resuelve el mismo conjunto de ecuaciones no lineales para estimar $\beta$ según lo resuelto por ML. También puede utilizar GLS para la estimación cuasi-probable de modelos lineales generalizados. En otras palabras, debemos obtener las mismas o equivalentes soluciones de GLS y ML. Para implementar la estimación de GLS, proporcione la función no lineal que se ajuste y la función de varianza para la distribución binomial.

Función media o modelo

La función modelo describe cómo $\mu_i$ cambios con $\beta$. Para , la función de modelo es:fitnlm

$\mu_i = \frac{1}{1 \,\, + \,\, \mbox{exp}\left\{-f(x_i,\beta)\right\}}$

Función de peso

acepta ponderaciones de observación como un identificador de función mediante el argumento de par nombre-valor.fitnlm'Weights' Al utilizar esta opción, se supone que el siguiente modelo:fitnlm

$E(Y_i) = \mu_i$

$Var(Y_i) = \frac{\sigma^2}{w(\mu_i)}$

donde las respuestas $Y_i$ se supone que son independientes, y $w$ es un identificador de función personalizado que acepta $\mu_i$ y devuelve un peso de observación. En otras palabras, los pesos son inversamente proporcionales a la varianza de respuesta. Para la distribución Binomial utilizada en el modelo de regresión logística, cree la función de peso de la siguiente manera:

$w(\mu_i) = \frac{1}{Var(y_i)} = \frac{n}{\mu_i (1 - \mu_i)}$

modela la varianza de la respuestafitnlm $Y_i$ Como $\sigma^2/w(\mu_i)$ Dónde $\sigma^2$ es un parámetro adicional que está presente en la estimación de GLS, pero ausente en el modelo de regresión logística. Sin embargo, esto normalmente no afecta a la estimación de $\beta$, y proporciona un "parámetro de dispersión" para comprobar la suposición de que el $Z_i$ valores tienen una distribución Binomial.

Una ventaja de usar sobre ML directo es que puede realizar pruebas de hipótesis e calcular intervalos de confianza en los coeficientes del modelo.fitnlm

Generar datos de ejemplo

Para ilustrar las diferencias entre el empalme ml y GLS, genere algunos datos de ejemplo. Supongamos que $x_i$ es unidimensional y supongamos que la verdadera función $f$ en el modelo de regresión logística no lineal se encuentra el modelo Michaelis-Menten parametrizado por un $2 \times 1$ Vector $\beta$:

$f(x_i,\beta) = \frac{\beta_1 x_i}{\beta_2 + x_i}.$

    myf = @(beta,x) beta(1)*x./(beta(2) + x); 

Cree una función de modelo que especifique la relación entre $\mu_i$ Y $\beta$.

    mymodelfun = @(beta,x) 1./(1 + exp(-myf(beta,x))); 

Crear un vector de predictores unidimensionales y el verdadero vector de coeficiente $\beta$.

    rng(300,'twister');     x    = linspace(-1,1,200)';     beta = [10;2]; 

Calcular un vector de $\mu_i$ valores para cada predictor.

    mu = mymodelfun(beta,x); 

Generar respuestas $z_i$ de una distribución binomial con probabilidades de éxito $\mu_i$ y el número de ensayos $n$.

    n = 50;     z = binornd(n,mu); 

Normalizar las respuestas.

    y = z./n; 

Enfoque ML

El enfoque de ML define la probabilidad de registro negativo como una función de la $\beta$ vector y, a continuación, lo minimiza con una función de optimización como .fminsearch Especifique como el valor inicial parabeta0 $\beta$.

    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  

Los coeficientes estimados en están cerca de los valores verdaderos de .betaHatML[10;2]

Enfoque GLS

El enfoque GLS crea una función de peso para lo descrito anteriormente.fitnlm

    wfun = @(xx) n./(xx.*(1-xx)); 

Llame con funciones de media y peso personalizadas.fitnlm Especifique como el valor inicial parabeta0 $\beta$.

    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 

Obtenga una estimación de $\beta$ del objeto ajustado.NonLinearModelnlm

    betaHatGLS = nlm.Coefficients.Estimate 
 betaHatGLS =      9.9260     1.9720  

Al igual que en el método ML, los coeficientes estimados en están cerca de los valores verdaderos de .betaHatGLS[10;2] Los pequeños valores para ambosp $\beta_1$ Y $\beta_2$ indican que ambos coeficientes son significativamente diferentes de $0$.

Comparar enfoques de ML y GLS

Comparar estimaciones de $\beta$.

    max(abs(betaHatML - betaHatGLS)) 
 ans =     1.1460e-05  

Compare los valores ajustados con ML y GLS

    yHatML  = mymodelfun(betaHatML ,x);     yHatGLS = mymodelfun(betaHatGLS,x);     max(abs(yHatML - yHatGLS)) 
 ans =     1.2746e-07  

Los enfoques de ML y GLS producen soluciones similares.

Trazar valores ajustados utilizando ML y 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 y GLS producen valores ajustados similares.

Trazar la función no lineal estimada utilizando ML y GLS

Trazar el modelo verdadero para $f(x_i,\beta)$. Añadir parcela para la estimación inicial de $f(x_i,\beta)$ Usando $\beta = \beta_0$ y parcelas para estimaciones basadas en ML y GLS de $f(x_i,\beta)$.

    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); 

La función no lineal estimada $f$ el uso de métodos ML y GLS está cerca de la verdadera función no lineal $f$. Puede utilizar una técnica similar para ajustar otros modelos lineales generalizados no lineales como la regresión de Poisson no lineal.