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.

Flujo de trabajo de modelo lineal generalizado

En este ejemplo se muestra cómo ajustar un modelo lineal generalizado y analizar los resultados. Un flujo de trabajo típico implica lo siguiente: importar datos, ajustar un modelo lineal generalizado, probar su calidad, modificarlo para mejorar la calidad y realizar predicciones basadas en el modelo. Calcula la probabilidad de que una flor se encuentra en una de dos clases, basándose en los datos de iris de Fisher.

Paso 1. Cargue los datos.

Cargue los datos de iris de Fisher. Extraiga las filas que tienen clasificación versicolor o virginica. Estas son las filas 51 a 150. Cree variables de respuesta lógicas para las Flores versicolor.true

load fisheriris X = meas(51:end,:); % versicolor and virginica y = strcmp('versicolor',species(51:end));

Paso 2. Ajuste un modelo lineal generalizado.

Ajuste un modelo lineal generalizado binomial a los datos.

mdl = fitglm(X,y,'linear',...     'distr','binomial')
mdl =  Generalized linear regression model:     logit(y) ~ 1 + x1 + x2 + x3 + x4     Distribution = Binomial  Estimated Coefficients:                    Estimate      SE       tStat      pValue                     ________    ______    _______    ________      (Intercept)     42.638     25.708     1.6586    0.097204     x1              2.4652     2.3943     1.0296     0.30319     x2              6.6809     4.4796     1.4914     0.13585     x3             -9.4294     4.7372    -1.9905    0.046537     x4             -18.286     9.7426    -1.8769    0.060529   100 observations, 95 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 127, p-value = 1.95e-26 

Paso 3. Examine el resultado, considere modelos alternativos.

Algunos

<math display="block">
<mrow>
<mi>p</mi>
</mrow>
</math>
-los valores de la columna no son muy pequeños.pValue Tal vez el modelo se puede simplificar.

Ver si algunos intervalos de confianza de 95% para los coeficientes incluyen 0. Si es así, tal vez estos términos del modelo podrían eliminarse.

confint = coefCI(mdl)
confint = 5×2

   -8.3984   93.6740
   -2.2881    7.2185
   -2.2122   15.5739
  -18.8339   -0.0248
  -37.6277    1.0554

Sólo dos de los predictores tienen coeficientes cuyos intervalos de confianza no incluyen 0.

Los coeficientes de y tienen el mayor'x1''x2'

<math display="block">
<mrow>
<mi>p</mi>
</mrow>
</math>
valores. Pruebe si ambos coeficientes podrían ser cero.

M = [0 1 0 0 0     % picks out coefficient for column 1      0 0 1 0 0];   % picks out coefficient for column 2 p = coefTest(mdl,M)
p = 0.1442 

el

<math display="block">
<mrow>
<mi>p</mi>
</mrow>
</math>
-valor de alrededor de 0,14 no es muy pequeño. Suelte esos términos del modelo.

mdl1 = removeTerms(mdl,'x1 + x2')
mdl1 =  Generalized linear regression model:     logit(y) ~ 1 + x3 + x4     Distribution = Binomial  Estimated Coefficients:                    Estimate      SE       tStat       pValue                      ________    ______    _______    __________      (Intercept)     45.272     13.612      3.326    0.00088103     x3             -5.7545     2.3059    -2.4956      0.012576     x4             -10.447     3.7557    -2.7816     0.0054092   100 observations, 97 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 118, p-value = 2.3e-26 

Tal vez hubiera sido mejor identificar el modelo inicialmente.stepwiseglm

mdl2 = stepwiseglm(X,y,...     'constant','Distribution','binomial','upper','linear')
1. Adding x4, Deviance = 33.4208, Chi2Stat = 105.2086, PValue = 1.099298e-24 2. Adding x3, Deviance = 20.5635, Chi2Stat = 12.8573, PValue = 0.000336166 3. Adding x2, Deviance = 13.2658, Chi2Stat = 7.29767, PValue = 0.00690441 
mdl2 =  Generalized linear regression model:     logit(y) ~ 1 + x2 + x3 + x4     Distribution = Binomial  Estimated Coefficients:                    Estimate      SE       tStat      pValue                     ________    ______    _______    ________      (Intercept)     50.527     23.995     2.1057    0.035227     x2              8.3761     4.7612     1.7592    0.078536     x3             -7.8745     3.8407    -2.0503    0.040334     x4              -21.43     10.707    -2.0014     0.04535   100 observations, 96 error degrees of freedom Dispersion: 1 Chi^2-statistic vs. constant model: 125, p-value = 5.4e-27 

incluido en el modelo, ya que no añade ni elimina términos constepwiseglm'x2'

<math display="block">
<mrow>
<mi>p</mi>
</mrow>
</math>
-valores entre 0,05 y 0,10.

Paso 4. Busque valores atípicos y excluirlos.

Examine una gráfica de apalancamiento para buscar valores atípicos influyentes.

plotDiagnostics(mdl2,'leverage')

Hay una observación con un apalancamiento cercano a uno. Con el cursor de datos, haga clic en el punto y busque el índice 69.

Ver si los coeficientes del modelo cambian cuando se ajusta un modelo excluyendo este punto.

oldCoeffs = mdl2.Coefficients.Estimate; mdl3 = fitglm(X,y,'linear',...     'distr','binomial','pred',2:4,'exclude',69); newCoeffs = mdl3.Coefficients.Estimate; disp([oldCoeffs newCoeffs])
   50.5268   50.5268     8.3761    8.3761    -7.8745   -7.8745   -21.4296  -21.4296 

Los coeficientes del modelo no cambian, lo que sugiere que la respuesta en el punto de alto apalancamiento es consistente con el valor pronosticado del modelo reducido.

Paso 5. Predecir la probabilidad de que una nueva flor es versicolor.

Se utiliza para predecir la probabilidad de que una flor con mediciones medias sea versicolor.mdl2 Genere intervalos de confianza para su predicción.

[newf,newc] = predict(mdl2,mean(X))
newf = 0.5086 
newc = 1×2

    0.1863    0.8239

El modelo da casi un 50% de probabilidad de que la flor promedio es versicolor, con un amplio intervalo de confianza sobre esta estimación.