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 lineal

Preparar datos

Para comenzar a ajustar una regresión, coloque los datos en un formulario que las funciones de ajuste esperan. Todas las técnicas de regresión comienzan con datos de entrada en una matriz y datos de respuesta en un vector independiente, o datos de entrada en una matriz de tabla o conjunto de datos y datos de respuesta como una columna en .Xytbltbl Cada fila de los datos de entrada representa una observación. Cada columna representa un predictor (variable).

Para una tabla o matriz de conjuntos de datos, indique la variable de respuesta con el par nombre-valor:tbl'ResponseVar'

mdl = fitlm(tbl,'ResponseVar','BloodPressure');

La variable de respuesta es la última columna de forma predeterminada.

Puede utilizar predictores numéricos.Categórico Un predictor categórico es aquel que toma valores de un conjunto fijo de posibilidades.

  • Para una matriz numérica, indique los predictores categóricos utilizando el par nombre-valor.X'Categorical' Por ejemplo, para indicar que los predictores y de seis son categóricos:23

    mdl = fitlm(X,y,'Categorical',[2,3]); % or equivalently mdl = fitlm(X,y,'Categorical',logical([0 1 1 0 0 0]));
  • Para una matriz de tabla o dataset, las funciones de ajuste suponen que estos tipos de datos son categóricos:tbl

    • Vector lógico

    • Vector categórico

    • Matriz de caracteres

    • Matriz de cadenas

    Si desea indicar que un predictor numérico es categórico, utilice el par nombre-valor.'Categorical'

Representar los datos numéricos que faltan como .NaN Para representar los datos que faltan para otros tipos de datos, consulte .Missing Group Values

Matriz de conjuntos de datos para datos de entrada y respuesta

Para crear una matriz de conjuntos de datos a partir de una hoja de cálculo:Excel®

ds = dataset('XLSFile','hospital.xls', ...     'ReadObsNames',true);

Para crear una matriz de conjuntos de datos a partir de variables de espacio de trabajo:

load carsmall ds = dataset(MPG,Weight); ds.Year = categorical(Model_Year);

Tabla de datos de entrada y respuesta

Para crear una tabla a partir de una hoja de cálculo:Excel

tbl = readtable('hospital.xls', ...     'ReadRowNames',true);

Para crear una tabla a partir de variables de espacio de trabajo:

load carsmall tbl = table(MPG,Weight); tbl.Year = categorical(Model_Year);

Matriz numérica para datos de entrada, vector numérico para la respuesta

Por ejemplo, para crear matrices numéricas a partir de variables de espacio de trabajo:

load carsmall X = [Weight Horsepower Cylinders Model_Year]; y = MPG;

Para crear matrices numéricas a partir de una hoja de cálculo:Excel

[X, Xnames] = xlsread('hospital.xls'); y = X(:,4); % response y is systolic pressure X(:,4) = []; % remove y from the X matrix

Observe que las entradas no numéricas, como , no aparecen en .sexX

Elegir un método de ajuste

Hay tres formas de ajustar un modelo a los datos:

Menos cuadrados fit

Se utiliza para construir un ajuste de mínimos cuadrados de un modelo a los datos.fitlm Este método es mejor cuando usted está razonablemente seguro de la forma del modelo, y principalmente necesita encontrar sus parámetros. Este método también es útil cuando desea explorar algunos modelos. El método requiere que examine los datos manualmente para descartar valores atípicos, aunque hay técnicas para ayudar (ver ).Examine la calidad y ajuste el modelo ajustado

Ajuste robusto

Utilícelo con el par nombre-valor para crear un modelo que se vea poco afectado por los valores atípicos.fitlmRobustOpts El ajuste robusto le ahorra el problema de desechar manualmente los valores atípicos. Sin embargo, no funciona con un ajuste robusto.step Esto significa que cuando se utiliza un ajuste robusto, no se puede buscar paso a paso para un buen modelo.

Ajuste escalonado

Se utiliza para buscar un modelo y ajustar los parámetros al modelo. comienza de un modelo, como una constante, y suma o resta términos uno a la vez, eligiendo un término óptimo cada vez de una manera codiciosa, hasta que no puede mejorar aún más.stepwiselmstepwiselm Utilice el ajuste escalonado para encontrar un buen modelo, que es uno que sólo tiene términos relevantes.

El resultado depende del modelo inicial. Normalmente, comenzar con un modelo constante conduce a un modelo pequeño. Comenzar con más términos puede dar lugar a un modelo más complejo, pero uno que tiene un error cuadrado medio inferior. Ver.Compare large and small stepwise models

No se pueden utilizar opciones robustas junto con el ajuste escalonado. Por lo tanto, después de un ajuste escalonado, examine el modelo en busca de valores atípicos (consulte ).Examine la calidad y ajuste el modelo ajustado

Elija un modelo o una gama de modelos

Hay varias formas de especificar un modelo para la regresión lineal. Utilice lo que encuentre más conveniente.

Para , la especificación del modelo que proporcione es el modelo que se ajusta.fitlm Si no proporciona una especificación de modelo, el valor predeterminado es .'linear'

Para , la especificación del modelo que se proporciona es el modelo inicial, que el procedimiento escalonado intenta mejorar.stepwiselm Si no proporciona una especificación de modelo, el modelo inicial predeterminado es , y el modelo delimitador superior predeterminado es .'constant''interactions' Cambie el modelo delimitador superior utilizando el par nombre-valor.Upper

Nota

Existen otras formas de seleccionar modelos, como usar , , , o .lassolassoglmsequentialfsplsregress

Nombre breve

NombreTipo de modelo
'constant'El modelo contiene solo un término constante (intercept).
'linear'El modelo contiene una intercepción y términos lineales para cada predictor.
'interactions'El modelo contiene una interceptación, términos lineales y todos los productos de pares de predictores distintos (sin términos al cuadrado).
'purequadratic'El modelo contiene una interceptación, términos lineales y términos al cuadrado.
'quadratic'El modelo contiene una interceptación, términos lineales, interacciones y términos al cuadrado.
'polyijk'Modelo es un polinomio con todos los términos hasta el grado i en el primer predictor, grado j en el segundo predictor, etc. Utilice los números a través de .09 Por ejemplo, tiene una constante más todos los términos lineales y del producto, y también contiene términos con predictor 1 al cuadrado.'poly2111'

Por ejemplo, para especificar un modelo de interacción utilizando predictores de matriz:fitlm

mdl = fitlm(X,y,'interactions');

Para especificar un modelo mediante y una matriz de predictores de tabla o conjunto de datos, suponga que desea empezar desde una constante y tener un límite superior del modelo lineal.stepwiselmtbl Supongamos que la variable de respuesta está en la tercera columna.tbl

mdl2 = stepwiselm(tbl,'constant', ...     'Upper','linear','ResponseVar',3);

Matriz de términos

Una matriz de términos es una matriz -by-( + 1) que especifica términos en un modelo, donde es el número de términos, es el número de variables predictoras y +1 cuenta para la variable de respuesta.Ttptp El valor de es el exponente de variable en el término .T(i,j)ji

Por ejemplo, supongamos que una entrada incluye tres variables predictoras , , y la variable de respuesta en el orden , , , y .ABCYABCY Cada fila de representa un término:T

  • — Término constante o interceptación[0 0 0 0]

  • — ; Equivalente[0 1 0 0]BA^0 * B^1 * C^0

  • [1 0 1 0]A*C

  • [2 0 0 0]A^2

  • [0 1 2 0]B*(C^2)

Al final de cada término representa la variable de respuesta.0 En general, un vector de columna de ceros en una matriz de términos representa la posición de la variable de respuesta. Si tiene las variables predictor y de respuesta en una matriz y un vector de columna, debe incluir para la variable de respuesta en la última columna de cada fila.0

Fórmula

Una fórmula para una especificación de modelo es un vector de caracteres o un escalar de cadena del formulario

'Y ~ terms',

  • Y es el nombre de la respuesta.

  • terms Contiene

    • Nombres de variables

    • para incluir la siguiente variable+

    • para excluir la siguiente variable-

    • para definir una interacción, un producto de términos:

    • para definir una interacción y todos los términos de orden inferior*

    • para elevar el predictor a una potencia, exactamente como en repetida, por lo que incluye términos de orden inferior, así^*^

    • a los términos de grupo()

Sugerencia

Las fórmulas incluyen un término constante (interceptar) de forma predeterminada. Para excluir un término constante del modelo, incluya en la fórmula.-1

Ejemplos:

es un modelo lineal de tres variables con interceptación. es un modelo lineal de tres variables sin interceptación. es un modelo de tres variables con interceptación y un término. es el mismo que el ejemplo anterior, ya que incluye un término. incluye un término. es el mismo que el ejemplo anterior, ya que . tiene todas las interacciones entre , , y , excepto la interacción de tres vías. tiene todos los términos lineales, además de los productos de con cada una de las otras variables.'Y ~ A + B + C'
'Y ~ A + B + C - 1'
'Y ~ A + B + C + B^2'B^2
'Y ~ A + B^2 + C'B^2B
'Y ~ A + B + C + A:B'A*B
'Y ~ A*B + C'A*B = A + B + A:B
'Y ~ A*B*C - A:B:C'ABC
'Y ~ A*(B + C + D)'A

Por ejemplo, para especificar un modelo de interacción utilizando predictores de matriz:fitlm

mdl = fitlm(X,y,'y ~ x1*x2*x3 - x1:x2:x3');

Para especificar un modelo mediante y una matriz de predictores de tabla o conjunto de datos, suponga que desea empezar desde una constante y tener un límite superior del modelo lineal.stepwiselmtbl Supongamos que la variable de respuesta se denomina , y las variables predictoras se denominan , , y .tbl'y''x1''x2''x3'

mdl2 = stepwiselm(tbl,'y ~ 1','Upper','y ~ x1 + x2 + x3');

Ajustar modelo a los datos

Los argumentos opcionales más comunes para el ajuste:

  • Para una regresión robusta en , establezca el par nombre-valor en .fitlm'RobustOpts''on'

  • Especifique un modelo de límite superior adecuado en , como establecer en .stepwiselm'Upper''linear'

  • Indique qué variables son categóricas utilizando el par nombre-valor.'CategoricalVars' Proporcione un vector con números de columna, por ejemplo, para especificar que los predictores y son categóricos.[1 6]16 Como alternativa, asigne a un vector lógico la misma longitud que las columnas de datos, con una entrada que indique que la variable es categórica.1 Si hay siete predictores y predictores y son categóricos, especifique .16logical([1,0,0,0,0,1,0])

  • Para una tabla o matriz de conjunto de datos, especifique la variable de respuesta mediante el par nombre-valor.'ResponseVar' El valor predeterminado es la última columna de la matriz.

Por ejemplo,

mdl = fitlm(X,y,'linear', ...     'RobustOpts','on','CategoricalVars',3); mdl2 = stepwiselm(tbl,'constant', ...     'ResponseVar','MPG','Upper','quadratic');

Examine la calidad y ajuste el modelo ajustado

Después de ajustar un modelo, examine el resultado y realice ajustes.

Visualización del modelo

Un modelo de regresión lineal muestra varios diagnósticos al introducir su nombre o escribir .disp(mdl) Esta pantalla proporciona parte de la información básica para comprobar si el modelo ajustado representa los datos adecuadamente.

Por ejemplo, ajuste un modelo lineal a los datos construidos con dos de cinco predictores no presentes y sin término de interceptación:

X = randn(100,5); y = X*[1;0;3;0;-1] + randn(100,1); mdl = fitlm(X,y)
mdl =  Linear regression model:     y ~ 1 + x1 + x2 + x3 + x4 + x5  Estimated Coefficients:                    Estimate        SE        tStat        pValue                      _________    ________    ________    __________      (Intercept)     0.038164    0.099458     0.38372       0.70205     x1               0.92794    0.087307      10.628    8.5494e-18     x2             -0.075593     0.10044    -0.75264       0.45355     x3                2.8965    0.099879          29    1.1117e-48     x4              0.045311     0.10832     0.41831       0.67667     x5              -0.99708     0.11799     -8.4504     3.593e-13   Number of observations: 100, Error degrees of freedom: 94 Root Mean Squared Error: 0.972 R-squared: 0.93,  Adjusted R-Squared: 0.926 F-statistic vs. constant model: 248, p-value = 1.5e-52 

Tenga en cuenta que:

  • La visualización contiene los valores estimados de cada coeficiente en la columna.Estimate Estos valores están razonablemente cerca de los valores verdaderos.[0;1;0;3;0;-1]

  • Hay una columna de error estándar para las estimaciones de coeficiente.

  • Los informes (que se derivan de las estadísticas ( ) bajo la suposición de errores normales) para los predictores 1, 3 y 5 son extremadamente pequeños.pValuettStat Estos son los tres predictores que se utilizaron para crear los datos de respuesta.y

  • El for , y son mucho más grandes que 0.01.pValue(Intercept)x2x4 Estos tres predictores no se utilizaron para crear los datos de respuesta.y

  • La pantalla contiene

    <math display="inline">
    <mrow>
    <msup>
    <mrow>
    <mi mathvariant="italic">R</mi>
    </mrow>
    <mrow>
    <mn>2</mn>
    </mrow>
    </msup>
    </mrow>
    </math>
    Ajustado
    <math>
    <msup>
    <mrow>
    <mi mathvariant="italic">R</mi>
    </mrow>
    <mrow>
    <mn>2</mn>
    </mrow>
    </msup>
    </math>
    , y las estadísticas.F

Anova

Para examinar la calidad del modelo ajustado, consulte una mesa ANOVA. Por ejemplo, utilice en un modelo lineal con cinco predictores:anova

tbl = anova(mdl)
tbl=6×5 table
              SumSq     DF    MeanSq        F         pValue  
             _______    __    _______    _______    __________

    x1        106.62     1     106.62     112.96    8.5494e-18
    x2       0.53464     1    0.53464    0.56646       0.45355
    x3        793.74     1     793.74     840.98    1.1117e-48
    x4       0.16515     1    0.16515    0.17498       0.67667
    x5        67.398     1     67.398      71.41     3.593e-13
    Error     88.719    94    0.94382                         

Esta tabla proporciona resultados algo diferentes que la visualización del modelo. El cuadro muestra claramente que los efectos de y no son significativos.x2x4 Dependiendo de sus objetivos, considere la posibilidad de quitar y del modelo.x2x4

Gráficas de diagnóstico

Las gráficas de diagnóstico le ayudan a identificar valores atípicos y a ver otros problemas en el modelo o en el ajuste. Por ejemplo, cargue los datos y haga un modelo de como una función de (categórico) y :carsmallMPGCylindersWeight

load carsmall tbl = table(Weight,MPG,Cylinders); tbl.Cylinders = categorical(tbl.Cylinders); mdl = fitlm(tbl,'MPG ~ Cylinders*Weight + Weight^2');

Haga una gráfica de apalancamiento de los datos y el modelo.

plotDiagnostics(mdl)

Hay algunos puntos con un alto apalancamiento. Pero esta trama no revela si los puntos de alto apalancamiento son valores atípicos.

Busque puntos con gran distancia de Cook.

plotDiagnostics(mdl,'cookd')

Hay un punto con gran distancia de Cook. Identifíquelo y elimínelo del modelo. Puede utilizar el cursor de datos para hacer clic en el atípico e identificarlo, o identificarlo mediante programación:

[~,larg] = max(mdl.Diagnostics.CooksDistance); mdl2 = fitlm(tbl,'MPG ~ Cylinders*Weight + Weight^2','Exclude',larg);

Residuales — Calidad del modelo para los datos de formación

Hay varias gráficas residuales para ayudarle a detectar errores, valores atípicos o correlaciones en el modelo o los datos. Las gráficas residuales más simples son la gráfica de histograma predeterminada, que muestra el rango de los residuos y sus frecuencias, y la gráfica de probabilidad, que muestra cómo la distribución de los residuos se compara con una distribución normal con varianza coincidente.

Examine los residuos:

plotResiduals(mdl)

Las observaciones superiores a 12 son posibles valores atípicos.

plotResiduals(mdl,'probability')

Los dos valores atípicos potenciales también aparecen en esta trama. De lo contrario, la gráfica de probabilidad parece razonablemente recta, lo que significa un ajuste razonable a los residuos distribuidos normalmente.

Puede identificar los dos valores atípicos y eliminarlos de los datos:

outl = find(mdl.Residuals.Raw > 12)
outl = 2×1

    90
    97

Para eliminar los valores atípicos, utilice el par nombre-valor:Exclude

mdl3 = fitlm(tbl,'MPG ~ Cylinders*Weight + Weight^2','Exclude',outl);

Examine una gráfica de residuos de mdl2:

plotResiduals(mdl3)

La nueva gráfica de residuos se ve bastante simétrica, sin problemas obvios. Sin embargo, puede haber cierta correlación serial entre los residuos. Cree un nuevo trazado para ver si existe tal efecto.

plotResiduals(mdl3,'lagged')

La gráfica de dispersión muestra muchas más cruces en los cuadrantes superior derecho e inferior izquierdo que en los otros dos cuadrantes, lo que indica una correlación serial positiva entre los residuos.

Otro problema potencial es cuando los residuos son grandes para observaciones grandes. Compruebe si el modelo actual tiene este problema.

plotResiduals(mdl3,'fitted')

Hay cierta tendencia a que los valores ajustados más grandes tengan residuos más grandes. Tal vez los errores del modelo son proporcionales a los valores medidos.

Gráficas para comprender los efectos predictores

En este ejemplo se muestra cómo comprender el efecto que tiene cada predictor en un modelo de regresión mediante una variedad de trazados disponibles.

Examine un gráfico de sectores de las respuestas. Esto muestra el efecto de cada predictor por separado.

plotSlice(mdl)

Puede arrastrar los valores del predictor individual, que se representan mediante líneas verticales azules discontinuas. También puede elegir entre límites de confianza simultáneos y no simultáneos, que están representados por curvas rojas discontinuas.

Utilice un trazado de efectos para mostrar otra vista del efecto de los predictores en la respuesta.

plotEffects(mdl)

Esta gráfica muestra que cambiar de aproximadamente 2500 a 4732 baja por unos 30 (la ubicación del círculo azul superior).WeightMPG También muestra que cambiar el número de cilindros de 8 a 4 aumenta por alrededor de 10 (el círculo azul inferior).MPG Las líneas azules horizontales representan intervalos de confianza para estas predicciones. Las predicciones provienen de promediar más de un predictor, ya que se cambia el otro. En casos como este, donde los dos predictores están correlacionados, tenga cuidado al interpretar los resultados.

En lugar de ver el efecto de promediar sobre un predictor a medida que se cambia el otro, examine la interacción conjunta en una gráfica de interacción.

plotInteraction(mdl,'Weight','Cylinders')

La gráfica de interacción muestra el efecto de cambiar un predictor con el otro fijo. En este caso, la trama es mucho más informativa. Muestra, por ejemplo, que la reducción del número de cilindros en un coche relativamente ligero (1795) conduce a un aumento en el kilometraje, pero la reducción del número de cilindros en un coche relativamente pesado (4732) conduce a una disminución en el kilometraje.WeightWeight

Para obtener una visión aún más detallada de las interacciones, mire una gráfica de interacción con las predicciones. Esta gráfica mantiene un predictor fijo mientras varía el otro, y traza el efecto como una curva. Observe las interacciones de varios números fijos de cilindros.

plotInteraction(mdl,'Cylinders','Weight','predictions')

Ahora mira las interacciones con varios niveles fijos de peso.

plotInteraction(mdl,'Weight','Cylinders','predictions')

Parcelas para comprender los efectos de los términos

En este ejemplo se muestra cómo comprender el efecto de cada término en un modelo de regresión utilizando una variedad de trazados disponibles.

Cree un trazado variable añadido con como variable añadida.Weight^2

plotAdded(mdl,'Weight^2')

Esta gráfica muestra los resultados de la adaptación tanto como a los términos distintos de .Weight^2MPGWeight^2 La razón para usar es entender qué mejora adicional en el modelo se obtiene mediante la adición de .plotAddedWeight^2 El coeficiente de ajuste de una línea a estos puntos es el coeficiente de en el modelo completo.Weight^2 El predictor está justo sobre el borde de la significancia ( < 0.05) como se puede ver en la visualización de la tabla de coeficientes.Weight^2pValue Se puede ver que en la parcela también. Los límites de confianza parecen que no podían contener una línea horizontal (constante), por lo que un modelo de pendiente cero no es coherente con los datos.y

Cree un trazado variable añadido para el modelo en su conjunto.

plotAdded(mdl)

El modelo en su conjunto es muy significativo, por lo que los límites no se acercan a contener una línea horizontal. La pendiente de la línea es la pendiente de un ajuste a los predictores proyectados en su dirección de ajuste más adecuado, o en otras palabras, la norma del vector de coeficiente.

Cambiar modelos

Hay dos maneras de cambiar un modelo:

Si ha creado un modelo utilizando , puede tener un efecto solo si proporciona diferentes modelos superiores o inferiores. no funciona cuando se ajusta un modelo mediante .stepwiselmstepstepRobustOpts

Por ejemplo, comience con un modelo lineal de kilometraje a partir de los datos:carbig

load carbig tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG); mdl = fitlm(tbl,'linear','ResponseVar','MPG')
mdl =  Linear regression model:     MPG ~ 1 + Acceleration + Displacement + Horsepower + Weight  Estimated Coefficients:                      Estimate         SE         tStat        pValue                       __________    __________    ________    __________      (Intercept)         45.251         2.456      18.424    7.0721e-55     Acceleration     -0.023148        0.1256     -0.1843       0.85388     Displacement    -0.0060009     0.0067093    -0.89441       0.37166     Horsepower       -0.043608      0.016573     -2.6312      0.008849     Weight          -0.0052805    0.00081085     -6.5123    2.3025e-10   Number of observations: 392, Error degrees of freedom: 387 Root Mean Squared Error: 4.25 R-squared: 0.707,  Adjusted R-Squared: 0.704 F-statistic vs. constant model: 233, p-value = 9.63e-102 

Intente mejorar el modelo mediante el paso para un máximo de 10 pasos:

mdl1 = step(mdl,'NSteps',10)
1. Adding Displacement:Horsepower, FStat = 87.4802, pValue = 7.05273e-19 
mdl1 =  Linear regression model:     MPG ~ 1 + Acceleration + Weight + Displacement*Horsepower  Estimated Coefficients:                                 Estimate         SE         tStat       pValue                                  __________    __________    _______    __________      (Intercept)                    61.285        2.8052     21.847    1.8593e-69     Acceleration                 -0.34401       0.11862       -2.9     0.0039445     Displacement                -0.081198      0.010071    -8.0623    9.5014e-15     Horsepower                   -0.24313      0.026068    -9.3265    8.6556e-19     Weight                     -0.0014367    0.00084041    -1.7095      0.088166     Displacement:Horsepower    0.00054236    5.7987e-05     9.3531    7.0527e-19   Number of observations: 392, Error degrees of freedom: 386 Root Mean Squared Error: 3.84 R-squared: 0.761,  Adjusted R-Squared: 0.758 F-statistic vs. constant model: 246, p-value = 1.32e-117 

se detuvo después de un solo cambio.step

Para intentar simplificar el modelo, elimine los términos y de:AccelerationWeightmdl1

mdl2 = removeTerms(mdl1,'Acceleration + Weight')
mdl2 =  Linear regression model:     MPG ~ 1 + Displacement*Horsepower  Estimated Coefficients:                                 Estimate        SE         tStat       pValue                                   __________    _________    _______    ___________      (Intercept)                    53.051        1.526     34.765    3.0201e-121     Displacement                -0.098046    0.0066817    -14.674     4.3203e-39     Horsepower                   -0.23434     0.019593     -11.96     2.8024e-28     Displacement:Horsepower    0.00058278    5.193e-05     11.222     1.6816e-25   Number of observations: 392, Error degrees of freedom: 388 Root Mean Squared Error: 3.94 R-squared: 0.747,  Adjusted R-Squared: 0.745 F-statistic vs. constant model: 381, p-value = 3e-115 

utiliza just y , y tiene casi tan bueno como en los datos como en la métrica.mdl2DisplacementHorsepowermdl1Adjusted R-Squared

Predecir o simular respuestas a nuevos datos

Un objeto ofrece tres funciones para predecir o simular la respuesta a nuevos datos: , , y .LinearModelpredictfevalrandom

predict

Utilice la función para predecir y obtener intervalos de confianza en las predicciones.predict

Cargue los datos y cree un modelo lineal predeterminado de la respuesta a los predictores , , , y .carbigMPGAccelerationDisplacementHorsepowerWeight

load carbig X = [Acceleration,Displacement,Horsepower,Weight]; mdl = fitlm(X,MPG);

Cree una matriz de tres filas de predictores a partir de los valores mínimo, medio y máximo. contiene algunos valores, así que utilice funciones que ignoren los valores.XNaNNaN

Xnew = [nanmin(X);nanmean(X);nanmax(X)];

Encuentre las respuestas del modelo pronosticadas y los intervalos de confianza en las predicciones.

[NewMPG, NewMPGCI] = predict(mdl,Xnew)
NewMPG = 3×1

   34.1345
   23.4078
    4.7751

NewMPGCI = 3×2

   31.6115   36.6575
   22.9859   23.8298
    0.6134    8.9367

La confianza limitada en la respuesta media es más estrecha que la de las respuestas mínimas o máximas.

feval

Utilice la función para predecir las respuestas.feval Cuando se crea un modelo a partir de una tabla o matriz de conjunto de datos, suele ser más conveniente que para predecir respuestas.fevalpredict Cuando tenga nuevos datos predictores, puede pasarlos sin crear una tabla o matriz.feval Sin embargo, no proporciona límites de confianza.feval

Cargue el conjunto de datos y cree un modelo lineal predeterminado de la respuesta a los predictores , , y .carbigMPGAccelerationDisplacementHorsepowerWeight

load carbig tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG); mdl = fitlm(tbl,'linear','ResponseVar','MPG');

Predecir la respuesta del modelo para los valores medios de los predictores.

NewMPG = feval(mdl,nanmean(Acceleration),nanmean(Displacement),nanmean(Horsepower),nanmean(Weight))
NewMPG = 23.4078 

random

Utilice la función para simular respuestas.random La función simula nuevos valores de respuesta aleatoria, igual es la predicción media más una perturbación aleatoria con la misma varianza que los datos de entrenamiento.random

Cargue los datos y cree un modelo lineal predeterminado de la respuesta a los predictores , , , y .carbigMPGAccelerationDisplacementHorsepowerWeight

load carbig X = [Acceleration,Displacement,Horsepower,Weight]; mdl = fitlm(X,MPG);

Cree una matriz de tres filas de predictores a partir de los valores mínimo, medio y máximo.

Xnew = [nanmin(X);nanmean(X);nanmax(X)];

Genere nuevas respuestas de modelo predichas, incluida cierta aleatoriedad.

rng('default') % for reproducibility NewMPG = random(mdl,Xnew)
NewMPG = 3×1

   36.4178
   31.1958
   -4.8176

Debido a que un valor negativo de no parece sensato, intente predecir dos veces más.MPG

NewMPG = random(mdl,Xnew)
NewMPG = 3×1

   37.7959
   24.7615
   -0.7783

NewMPG = random(mdl,Xnew)
NewMPG = 3×1

   32.2931
   24.8628
   19.9715

Claramente, las predicciones para la tercera fila (máxima) de no son confiables.Xnew

Compartir modelos ajustados

Supongamos que tiene un modelo de regresión lineal, como los siguientes comandos.mdl

load carbig tbl = table(Acceleration,Displacement,Horsepower,Weight,MPG); mdl = fitlm(tbl,'linear','ResponseVar','MPG');

Para compartir el modelo con otras personas, puede:

  • Proporcione la visualización del modelo.

mdl
mdl =  Linear regression model:     MPG ~ 1 + Acceleration + Displacement + Horsepower + Weight  Estimated Coefficients:                      Estimate         SE         tStat        pValue                       __________    __________    ________    __________      (Intercept)         45.251         2.456      18.424    7.0721e-55     Acceleration     -0.023148        0.1256     -0.1843       0.85388     Displacement    -0.0060009     0.0067093    -0.89441       0.37166     Horsepower       -0.043608      0.016573     -2.6312      0.008849     Weight          -0.0052805    0.00081085     -6.5123    2.3025e-10   Number of observations: 392, Error degrees of freedom: 387 Root Mean Squared Error: 4.25 R-squared: 0.707,  Adjusted R-Squared: 0.704 F-statistic vs. constant model: 233, p-value = 9.63e-102 
  • Proporcione la definición y los coeficientes del modelo.

mdl.Formula
ans =  MPG ~ 1 + Acceleration + Displacement + Horsepower + Weight 
mdl.CoefficientNames
ans = 1x5 cell array
  Columns 1 through 4

    {'(Intercept)'}    {'Acceleration'}    {'Displacement'}    {'Horsepower'}

  Column 5

    {'Weight'}

mdl.Coefficients.Estimate
ans = 5×1

   45.2511
   -0.0231
   -0.0060
   -0.0436
   -0.0053

Consulte también

| | | | | | |

Temas relacionados