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.

fitlm

Ajustar modelo de regresión lineal

Descripción

ejemplo

mdl = fitlm(tbl) devuelve un modelo de regresión lineal ajustado a las variables de la tabla o matriz de dataset.tbl De forma predeterminada, toma la última variable como variable de respuesta.fitlm

ejemplo

mdl = fitlm(X,y) devuelve un modelo de regresión lineal de las respuestas, ajuste a la matriz de datos.yX

ejemplo

mdl = fitlm(___,modelspec) define la especificación del modelo utilizando cualquiera de las combinaciones de argumentos de entrada de las sintaxis anteriores.

ejemplo

mdl = fitlm(___,Name,Value) especifica opciones adicionales mediante uno o más argumentos de par nombre-valor. Por ejemplo, puede especificar qué variables son categóricas, realizar una regresión robusta o utilizar ponderaciones de observación.

Ejemplos

contraer todo

Ajuste un modelo de regresión lineal mediante un conjunto de datos de entrada de matriz.

Cargue el conjunto de datos, un conjunto de datos de entrada de matriz.carsmall

load carsmall X = [Weight,Horsepower,Acceleration];

Ajuste un modelo de regresión lineal utilizando .fitlm

mdl = fitlm(X,MPG)
mdl =  Linear regression model:     y ~ 1 + x1 + x2 + x3  Estimated Coefficients:                     Estimate        SE          tStat        pValue                      __________    _________    _________    __________      (Intercept)        47.977       3.8785        12.37    4.8957e-21     x1             -0.0065416    0.0011274      -5.8023    9.8742e-08     x2              -0.042943     0.024313      -1.7663       0.08078     x3              -0.011583      0.19333    -0.059913       0.95236   Number of observations: 93, Error degrees of freedom: 89 Root Mean Squared Error: 4.09 R-squared: 0.752,  Adjusted R-Squared: 0.744 F-statistic vs. constant model: 90, p-value = 7.38e-27 

La visualización del modelo incluye la fórmula del modelo, los coeficientes estimados y las estadísticas de resumen del modelo.

La fórmula del modelo en la pantalla, , corresponde ay ~ 1 + x1 + x2 + x3

<math display="inline">
<mrow>
<mi mathvariant="italic">y</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msub>
<mrow>
<mi mathvariant="italic">X</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msub>
<mrow>
<mi mathvariant="italic">X</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>3</mn>
</mrow>
</msub>
<msub>
<mrow>
<mi mathvariant="italic">X</mi>
</mrow>
<mrow>
<mn>3</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>ϵ</mi>
</mrow>
</math>
.

La visualización del modelo también muestra la información de coeficiente estimada, que se almacena en la propiedad.Coefficients Muestre la propiedad.Coefficients

mdl.Coefficients
ans=4×4 table
                    Estimate        SE          tStat        pValue  
                   __________    _________    _________    __________

    (Intercept)        47.977       3.8785        12.37    4.8957e-21
    x1             -0.0065416    0.0011274      -5.8023    9.8742e-08
    x2              -0.042943     0.024313      -1.7663       0.08078
    x3              -0.011583      0.19333    -0.059913       0.95236

La propiedad incluye estas columnas:Coefficient

  • — Estimaciones de coeficiente para cada término correspondiente en el modelo.Estimate Por ejemplo, la estimación del término constante ( ) es 47.977.intercept

  • — Error estándar de los coeficientes.SE

  • — -estadística para cada coeficiente para probar la hipótesis nula de que el coeficiente correspondiente es cero con respecto a la alternativa de que es diferente de cero, dados los otros predictores en el modelo.tStatt Tenga en cuenta que .tStat = Estimate/SE Por ejemplo, la estadística para la interceptación es 47.977/3.8785 a 12,37.t

  • — -valor para la estadística de la prueba de hipótesis de que el coeficiente correspondiente es igual a cero o no.pValuept Por ejemplo, el valor -value de la -statistic para es mayor que 0.05, por lo que este término no es significativo en el nivel de significancia del 5% dados los otros términos en el modelo.ptx2

Las estadísticas resumidos del modelo son:

  • — Número de filas sin valores.Number of observationsNaN Por ejemplo, es 93 porque el vector de datos tiene seis valores y el vector de datos tiene un valor para una observación diferente, donde el número de filas en y es 100.Number of observationsMPGNaNHorsepowerNaNXMPG

  • — – , donde está el número de observaciones y está el número de coeficientes en el modelo, incluida la interceptación.Error degrees of freedomn pnp Por ejemplo, el modelo tiene cuatro predictores, por lo que el es 93 – 4 x 89.Error degrees of freedom

  • — Raíz cuadrada del error cuadrado medio, que estima la desviación estándar de la distribución del error.Root mean squared error

  • y — Coeficiente de determinación y coeficiente de determinación ajustado, respectivamente.R-squaredAdjusted R-squared Por ejemplo, el valor sugiere que el modelo explica aproximadamente el 75% de la variabilidad en la variable de respuesta.R-squaredMPG

  • — Estadística de prueba para la prueba -test en el modelo de regresión, que comprueba si el modelo se ajusta significativamente mejor que un modelo degenerado que consiste en sólo un término constante.F-statistic vs. constant modelF

  • — -value para la prueba en el modelo.p-valuepF Por ejemplo, el modelo es significativo con un valor de 7.3816e-27.p

Puede encontrar estas estadísticas en las propiedades del modelo ( , , , y ) y mediante la función.NumObservationsDFERMSERsquaredanova

anova(mdl,'summary')
ans=3×5 table
                SumSq     DF    MeanSq      F         pValue  
                ______    __    ______    ______    __________

    Total       6004.8    92    65.269                        
    Model         4516     3    1505.3    89.987    7.3816e-27
    Residual    1488.8    89    16.728                        

Cargue los datos de ejemplo.

load carsmall

Almacene las variables en una tabla.

tbl = table(Weight,Acceleration,MPG,'VariableNames',{'Weight','Acceleration','MPG'});

Muestre las primeras cinco filas de la tabla.

tbl(1:5,:)
ans=5×3 table
    Weight    Acceleration    MPG
    ______    ____________    ___

     3504           12        18 
     3693         11.5        15 
     3436           11        18 
     3433           12        16 
     3449         10.5        17 

Ajuste un modelo de regresión lineal para millas por galón (MPG). Especifique la fórmula del modelo mediante la notación Wilkinson.

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm =  Linear regression model:     MPG ~ 1 + Weight + Acceleration  Estimated Coefficients:                      Estimate         SE         tStat       pValue                       __________    __________    _______    __________      (Intercept)         45.155        3.4659     13.028    1.6266e-22     Weight          -0.0082475    0.00059836    -13.783    5.3165e-24     Acceleration       0.19694       0.14743     1.3359       0.18493   Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 4.12 R-squared: 0.743,  Adjusted R-Squared: 0.738 F-statistic vs. constant model: 132, p-value = 1.38e-27 

El modelo de este ejemplo es equivalente a establecer la especificación del modelo como .'MPG~Weight+Acceleration''linear' Por ejemplo,

lm2 = fitlm(tbl,'linear');

Si utiliza un vector de caracteres para la especificación del modelo y no especifica la variable de respuesta, acepta la última variable como la variable de respuesta y las otras variables como variables predictoras.fitlmtbl

Ajuste un modelo de regresión lineal mediante una fórmula de modelo especificada por la notación Wilkinson.

Cargue los datos de ejemplo.

load carsmall

Almacene las variables en una tabla.

tbl = table(Weight,Acceleration,Model_Year,MPG,'VariableNames',{'Weight','Acceleration','Model_Year','MPG'});

Ajuste un modelo de regresión lineal para millas por galón (MPG) con peso y aceleración como variables predictoras.

lm = fitlm(tbl,'MPG~Weight+Acceleration')
lm =  Linear regression model:     MPG ~ 1 + Weight + Acceleration  Estimated Coefficients:                      Estimate         SE         tStat       pValue                       __________    __________    _______    __________      (Intercept)         45.155        3.4659     13.028    1.6266e-22     Weight          -0.0082475    0.00059836    -13.783    5.3165e-24     Acceleration       0.19694       0.14743     1.3359       0.18493   Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 4.12 R-squared: 0.743,  Adjusted R-Squared: 0.738 F-statistic vs. constant model: 132, p-value = 1.38e-27 

El valor -valor de 0.18493 indica que no tiene un impacto significativo en .pAccelerationMPG

Quite del modelo e intente mejorar el modelo agregando la variable predictora .AccelerationModel_Year Primero defina como una variable categórica.Model_Year

tbl.Model_Year = categorical(tbl.Model_Year); lm = fitlm(tbl,'MPG~Weight+Model_Year')
lm =  Linear regression model:     MPG ~ 1 + Weight + Model_Year  Estimated Coefficients:                       Estimate         SE         tStat       pValue                        __________    __________    _______    __________      (Intercept)           40.11        1.5418     26.016    1.2024e-43     Weight           -0.0066475    0.00042802    -15.531    3.3639e-27     Model_Year_76        1.9291       0.74761     2.5804      0.011488     Model_Year_82        7.9093       0.84975     9.3078    7.8681e-15   Number of observations: 94, Error degrees of freedom: 90 Root Mean Squared Error: 2.92 R-squared: 0.873,  Adjusted R-Squared: 0.868 F-statistic vs. constant model: 206, p-value = 3.83e-40 

Especificar mediante la notación Wilkinson le permite actualizar el modelo sin tener que cambiar la matriz de diseño. utiliza solo las variables que se especifican en la fórmula.modelspecfitlm También crea las dos variables de indicador ficticias necesarias para la variable categórica.Model_Year

Ajuste un modelo de regresión lineal utilizando una matriz de términos.

Matriz de términos para la entrada de tabla

Si las variables de modelo están en una tabla, una columna de s en una matriz de términos representa la posición de la variable de respuesta.0

Cargue el conjunto de datos.hospital

load hospital

Almacene las variables en una tabla.

t = table(hospital.Sex,hospital.BloodPressure(:,1),hospital.Age,hospital.Smoker, ...     'VariableNames',{'Sex','BloodPressure','Age','Smoker'});

Representar el modelo lineal mediante una matriz de términos.'BloodPressure ~ 1 + Sex + Age + Smoker' La variable de respuesta está en la segunda columna de la tabla, por lo que la segunda columna de la matriz de términos debe ser una columna de s para la variable de respuesta.0

T = [0 0 0 0;1 0 0 0;0 0 1 0;0 0 0 1]
T = 4×4

     0     0     0     0
     1     0     0     0
     0     0     1     0
     0     0     0     1

Ajuste un modelo lineal.

mdl1 = fitlm(t,T)
mdl1 =  Linear regression model:     BloodPressure ~ 1 + Sex + Age + Smoker  Estimated Coefficients:                    Estimate       SE        tStat        pValue                      ________    ________    ________    __________      (Intercept)      116.14      2.6107      44.485    7.1287e-66     Sex_Male       0.050106     0.98364    0.050939       0.95948     Age            0.085276    0.066945      1.2738        0.2058     Smoker_1           9.87      1.0346      9.5395    1.4516e-15   Number of observations: 100, Error degrees of freedom: 96 Root Mean Squared Error: 4.78 R-squared: 0.507,  Adjusted R-Squared: 0.492 F-statistic vs. constant model: 33, p-value = 9.91e-15 

Matriz de términos para la entrada de matriz

Si las variables predictor y de respuesta están en una matriz y un vector de columna, debe incluir para la variable de respuesta al final de cada fila en una matriz de términos.0

Cargue el conjunto de datos y defina la matriz de predictores.carsmall

load carsmall X = [Acceleration,Weight];

Especifique el modelo mediante una matriz de términos.'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2' Este modelo incluye el efecto principal y los términos de interacción bidireccional para las variables y , y un término de segundo orden para la variable .AccelerationWeightWeight

T = [0 0 0;1 0 0;0 1 0;1 1 0;0 2 0]
T = 5×3

     0     0     0
     1     0     0
     0     1     0
     1     1     0
     0     2     0

Ajuste un modelo lineal.

mdl2 = fitlm(X,MPG,T)
mdl2 =  Linear regression model:     y ~ 1 + x1*x2 + x2^2  Estimated Coefficients:                     Estimate          SE         tStat       pValue                      ___________    __________    _______    __________      (Intercept)         48.906        12.589     3.8847    0.00019665     x1                 0.54418       0.57125    0.95261       0.34337     x2               -0.012781     0.0060312    -2.1192      0.036857     x1:x2          -0.00010892    0.00017925    -0.6076         0.545     x2^2            9.7518e-07    7.5389e-07     1.2935       0.19917   Number of observations: 94, Error degrees of freedom: 89 Root Mean Squared Error: 4.1 R-squared: 0.751,  Adjusted R-Squared: 0.739 F-statistic vs. constant model: 67, p-value = 4.99e-26 

Sólo la interceptación y el término, que corresponde a la variable, son significativos en el nivel de significancia del 5%.x2Weight

Ajuste un modelo de regresión lineal que contenga un predictor categórico. Reordene las categorías del predictor categórico para controlar el nivel de referencia en el modelo. A continuación, se utiliza para probar la importancia de la variable categórica.anova

Modelo con Predictor Categórico

Cargue el conjunto de datos y cree un modelo de regresión lineal en función de .carsmallMPGModel_Year Para tratar el vector numérico como una variable categórica, identifique el predictor mediante el argumento de par nombre-valor.Model_Year'CategoricalVars'

load carsmall mdl = fitlm(Model_Year,MPG,'CategoricalVars',1,'VarNames',{'Model_Year','MPG'})
mdl =  Linear regression model:     MPG ~ 1 + Model_Year  Estimated Coefficients:                      Estimate      SE      tStat       pValue                        ________    ______    ______    __________      (Intercept)        17.69     1.0328    17.127    3.2371e-30     Model_Year_76     3.8839     1.4059    2.7625     0.0069402     Model_Year_82      14.02     1.4369    9.7571    8.2164e-16   Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 R-squared: 0.531,  Adjusted R-Squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15 

La fórmula del modelo en la pantalla, , corresponde aMPG ~ 1 + Model_Year

<math display="inline">
<mrow>
<mi mathvariant="normal">MPG</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>76</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>82</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>ϵ</mi>
</mrow>
</math>
,

Dónde

<math display="inline">
<mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>76</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>82</mn>
</mrow>
</msub>
</mrow>
</math>
son variables indicadoras cuyo valor es uno si el valor es 76 y 82, respectivamente.Model_Year La variable incluye tres valores distintos, que puede comprobar mediante la función.Model_Yearunique

unique(Model_Year)
ans = 3×1

    70
    76
    82

elige el valor más pequeño como nivel de referencia ( ) y crea dos variables indicadorasfitlmModel_Year'70'

<math display="inline">
<mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>76</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>82</mn>
</mrow>
</msub>
</mrow>
</math>
. El modelo incluye sólo dos variables de indicador porque la matriz de diseño se vuelve deficiente de rango si el modelo incluye tres variables de indicador (una para cada nivel) y un término de intercepción.

Modelo con variables indicadoras completas

Puede interpretar la fórmula del modelo como un modelo que tiene tres variables de indicador sin un término de interceptación:mdl

<math display="inline">
<mrow>
<mi mathvariant="italic">y</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>70</mn>
</mrow>
</msub>
<mo>+</mo>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>76</mn>
</mrow>
</msub>
<mo>+</mo>
<mrow>
<mo>(</mo>
<mrow>
<msub>
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>β</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
<mo>)</mo>
</mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<msub>
<mrow>
<mi mathvariant="italic">x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo>=</mo>
<mn>82</mn>
</mrow>
</msub>
<mo>+</mo>
<mi>ϵ</mi>
</mrow>
</math>
.

Como alternativa, puede crear un modelo que tenga tres variables de indicador sin un término de interceptación creando manualmente variables de indicador y especificando la fórmula del modelo.

temp_Year = dummyvar(categorical(Model_Year)); Model_Year_70 = temp_Year(:,1); Model_Year_76 = temp_Year(:,2); Model_Year_82 = temp_Year(:,3); tbl = table(Model_Year_70,Model_Year_76,Model_Year_82,MPG); mdl = fitlm(tbl,'MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82 - 1')
mdl =  Linear regression model:     MPG ~ Model_Year_70 + Model_Year_76 + Model_Year_82  Estimated Coefficients:                      Estimate      SE       tStat       pValue                        ________    _______    ______    __________      Model_Year_70      17.69      1.0328    17.127    3.2371e-30     Model_Year_76     21.574     0.95387    22.617    4.0156e-39     Model_Year_82      31.71     0.99896    31.743    5.2234e-51   Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 

Elija Nivel de referencia en el modelo

Puede elegir un nivel de referencia modificando el orden de las categorías en una variable categórica. En primer lugar, cree una variable categórica .Year

Year = categorical(Model_Year);

Compruebe el orden de las categorías utilizando la función.categories

categories(Year)
ans = 3x1 cell array
    {'70'}
    {'76'}
    {'82'}

Si utiliza como variable predictora, elija la primera categoría como nivel de referencia.Yearfitlm'70' Reordenar mediante la función.Yearreordercats

Year_reordered = reordercats(Year,{'76','70','82'}); categories(Year_reordered)
ans = 3x1 cell array
    {'76'}
    {'70'}
    {'82'}

La primera categoría de es .Year_reordered'76' Cree un modelo de regresión lineal de como función de .MPGYear_reordered

mdl2 = fitlm(Year_reordered,MPG,'VarNames',{'Model_Year','MPG'})
mdl2 =  Linear regression model:     MPG ~ 1 + Model_Year  Estimated Coefficients:                      Estimate      SE        tStat       pValue                        ________    _______    _______    __________      (Intercept)       21.574     0.95387     22.617    4.0156e-39     Model_Year_70    -3.8839      1.4059    -2.7625     0.0069402     Model_Year_82     10.136      1.3812     7.3385    8.7634e-11   Number of observations: 94, Error degrees of freedom: 91 Root Mean Squared Error: 5.56 R-squared: 0.531,  Adjusted R-Squared: 0.521 F-statistic vs. constant model: 51.6, p-value = 1.07e-15 

utiliza como nivel de referencia e incluye dos variables indicadorasmdl2'76'

<math display="inline">
<mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>70</mn>
</mrow>
</msub>
</mrow>
</math>
Y
<math display="inline">
<mrow>
<msub>
<mrow>
<mi>Ι</mi>
</mrow>
<mrow>
<mi mathvariant="normal">Year</mi>
<mo>=</mo>
<mn>82</mn>
</mrow>
</msub>
</mrow>
</math>
.

Evaluar el predictor categórico

La visualización del modelo de incluye un -valor de cada término para probar si el coeficiente correspondiente es igual a cero.mdl2p Cada valor examina cada variable de indicador.p Para examinar la variable categórica como un grupo de variables indicadoras, utilice .Model_Yearanova Utilice la opción (predeterminada) para devolver una tabla ANOVA de componente que incluya estadísticas de ANOVA para cada variable del modelo excepto el término constante.'components'

anova(mdl2,'components')
ans=2×5 table
                  SumSq     DF    MeanSq      F        pValue  
                  ______    __    ______    _____    __________

    Model_Year    3190.1     2    1595.1    51.56    1.0694e-15
    Error         2815.2    91    30.936                       

La tabla ANOVA del componente incluye el valor -valor de la variable, que es menor que los valores de las variables del indicador.pModel_Yearp

Ajuste un modelo de regresión lineal a los datos de muestra. Especifique las variables de respuesta y predictor e incluya solo términos de interacción por pares en el modelo.

Cargar datos de ejemplo.

load hospital

Ajuste un modelo lineal con términos de interacción a los datos. Especifique el peso como variable de respuesta y el sexo, la edad y el estado de tabaquismo como variables predictoras. Además, especifique que el sexo y el estado de fumar son variables categóricas.

mdl = fitlm(hospital,'interactions','ResponseVar','Weight',...     'PredictorVars',{'Sex','Age','Smoker'},...     'CategoricalVar',{'Sex','Smoker'})
mdl =  Linear regression model:     Weight ~ 1 + Sex*Age + Sex*Smoker + Age*Smoker  Estimated Coefficients:                          Estimate      SE        tStat        pValue                            ________    _______    ________    __________      (Intercept)             118.7     7.0718      16.785     6.821e-30     Sex_Male               68.336     9.7153      7.0339    3.3386e-10     Age                   0.31068    0.18531      1.6765      0.096991     Smoker_1               3.0425     10.446     0.29127       0.77149     Sex_Male:Age         -0.49094    0.24764     -1.9825      0.050377     Sex_Male:Smoker_1      0.9509     3.8031     0.25003       0.80312     Age:Smoker_1         -0.07288    0.26275    -0.27737       0.78211   Number of observations: 100, Error degrees of freedom: 93 Root Mean Squared Error: 8.75 R-squared: 0.898,  Adjusted R-Squared: 0.892 F-statistic vs. constant model: 137, p-value = 6.91e-44 

El peso de los pacientes no parece diferir significativamente según la edad, o el estado de tabaquismo, o la interacción de estos factores con el sexo del paciente en el nivel de significancia del 5%.

Cargue el conjunto de datos, que mide el efecto de la composición del cemento en su calor de endurecimiento.hald

load hald

Este conjunto de datos incluye las variables y .ingredientsheat La matriz contiene el porcentaje de composición de cuatro productos químicos presentes en el cemento.ingredients El vector contiene los valores para el endurecimiento térmico después de 180 días para cada muestra de cemento.heat

Ajuste un modelo de regresión lineal robusto a los datos.

mdl = fitlm(ingredients,heat,'RobustOpts','on')
mdl =  Linear regression model (robust fit):     y ~ 1 + x1 + x2 + x3 + x4  Estimated Coefficients:                    Estimate      SE        tStat       pValue                     ________    _______    ________    ________      (Intercept)       60.09     75.818     0.79256      0.4509     x1               1.5753    0.80585      1.9548    0.086346     x2               0.5322    0.78315     0.67957     0.51596     x3              0.13346     0.8166     0.16343     0.87424     x4             -0.12052     0.7672    -0.15709     0.87906   Number of observations: 13, Error degrees of freedom: 8 Root Mean Squared Error: 2.65 R-squared: 0.979,  Adjusted R-Squared: 0.969 F-statistic vs. constant model: 94.6, p-value = 9.03e-07 

Para obtener más información, consulte el tema , que compara los resultados de un ajuste robusto con un ajuste estándar de mínimos cuadrados.Reduce Outlier Effects Using Robust Regression

Argumentos de entrada

contraer todo

Datos de entrada, incluidas las variables predictora y de respuesta, especificadas como una matriz de tabla o conjunto de datos. Las variables predictoras pueden ser numéricas, lógicas, categóricas, de carácter o de cadena. La variable de respuesta debe ser numérica o lógica.

  • De forma predeterminada, fitlm toma la última variable como la variable de respuesta y las otras como variables predictoras.

  • Para establecer una columna diferente como variable de respuesta, utilice el argumento de par nombre-valor.ResponseVar

  • Para utilizar un subconjunto de las columnas como predictores, utilice el argumento de par nombre-valor.PredictorVars

  • Para definir una especificación de modelo, establezca el argumento mediante una matriz de fórmulas o términos.modelspec La matriz de fórmulas o términos especifica qué columnas se van a utilizar como predictor o variables de respuesta.

Los nombres de variable de una tabla no tienen que ser identificadores válidos.MATLAB® Sin embargo, si los nombres no son válidos, no puede utilizar una fórmula al ajustar o ajustar un modelo; por ejemplo:

  • No se puede especificar mediante una fórmula.modelspec

  • No puede utilizar una fórmula para especificar los términos que se agregaron o quitaron cuando utilice la función o la función, respectivamente.addTermsremoveTerms

  • No puede utilizar una fórmula para especificar los límites inferior y superior del modelo cuando se utiliza la función o con los argumentos de par nombre-valor y , respectivamente.stepstepwiselm'Lower''Upper'

Puede verificar los nombres de las variables mediante la función.tblisvarname El código siguiente devuelve logical ( ) para cada variable que tiene un nombre de variable válido.1true Si los nombres de variable en no son válidos, a continuación, convertirlos mediante la función.

cellfun(@isvarname,tbl.Properties.VariableNames)
tblmatlab.lang.makeValidName
tbl.Properties.VariableNames = matlab.lang.makeValidName(tbl.Properties.VariableNames);

Variables predictoras, especificadas como una matriz -por-, donde está el número de observaciones y es el número de variables predictoras.npnp Cada columna de representa una variable y cada fila representa una observación.X

De forma predeterminada, hay un término constante en el modelo, a menos que lo quite explícitamente, por lo que no incluya una columna de 1s en .X

Tipos de datos: single | double

Variable de respuesta, especificada como un vector -by-1, donde está el número de observaciones.nn Cada entrada es la respuesta para la fila correspondiente de .yX

Tipos de datos: single | double | logical

Especificación del modelo, especificada como uno de estos valores.

  • Un vector de caracteres o un escalar de cadena que nombra el modelo.

    ValorTipo de modelo
    'constant'El modelo contiene solo un término constante (intercept).
    'linear'El modelo contiene una intercepción y un término lineal para cada predictor.
    'interactions'El modelo contiene una interceptación, un término lineal para cada predictor y todos los productos de pares de predictores distintos (sin términos al cuadrado).
    'purequadratic'El modelo contiene un término de interceptación y términos lineales y cuadrados para cada predictor.
    'quadratic'El modelo contiene un término de interceptación, términos lineales y cuadrados para cada predictor, y todos los productos de pares de predictores distintos.
    'polyijk'Modelo es un polinomio con todos los términos hasta el grado i en el primer predictor, grado j en el segundo predictor, y así sucesivamente. Especifique el grado máximo para cada predictor utilizando los números 0 a 9. El modelo contiene términos de interacción, pero el grado de cada término de interacción no supera el valor máximo de los grados especificados. Por ejemplo, tiene una interceptación y'poly13'x1, x2, x22, x23, x1*x2Yx1*x22 términos, dondex1 Yx2 son el primer y segundo predictor, respectivamente.
  • Una matriz -by-( + 1), o un , especificando términos en el modelo, donde está el número de términos y es el número de variables predictoras, y +1 cuenta para la variable de respuesta.tpMatriz de términostp Una matriz de términos es conveniente cuando el número de predictores es grande y desea generar los términos mediante programación.

  • Un vector de caracteres o un escalar de cadena que representa un en el formatoFórmula

    'Y ~ terms',

    donde están en .termsNotación Wilkinson Los nombres de variable de la fórmula deben ser identificadores válidos.MATLAB

Ejemplo: 'quadratic'

Ejemplo: 'y ~ X1 + X2^2 + X1:X2'

Tipos de datos: single | double | char | string

Argumentos de par nombre-valor

Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo: especifica un modelo de regresión robusto sin término constante, donde el algoritmo utiliza la función de ponderación logística con la constante de ajuste predeterminada, la primera y la tercera variables son las variables predictoras, y la quinta variable es la variable de respuesta.'Intercept',false,'PredictorVars',[1,3],'ResponseVar',5,'RobustOpts','logistic'

Lista de variables categóricas, especificada como el par separado por comas que consta de y una matriz de cadenas o una matriz de celdas de vectores de caracteres que contienen nombres de variables categóricas en la tabla o matriz de conjuntos de datos, o un vector de índice lógico o numérico que indica qué las columnas son categóricas.'CategoricalVars'tbl

  • Si los datos están en una tabla o matriz de conjunto de datos, entonces, de forma predeterminada,tbl fitlm trata todos los valores categóricos, valores lógicos, matrices de caracteres, matrices de cadenas y matrices de celdas de vectores de caracteres como variables categóricas.

  • Si los datos están en matriz , el valor predeterminado de es una matriz vacía .X'CategoricalVars'[] Es decir, ninguna variable es categórica a menos que la especifique como categórica.

Por ejemplo, puede especificar las observaciones 2 y 3 de 6 como categóricas utilizando cualquiera de los ejemplos siguientes.

Ejemplo: 'CategoricalVars',[2,3]

Ejemplo: 'CategoricalVars',logical([0 1 1 0 0 0])

Tipos de datos: single | double | logical | string | cell

Observaciones para excluir del ajuste, especificado como el par separado por comas que consta de y un vector de índice lógico o numérico que indica qué observaciones excluir del ajuste.'Exclude'

Por ejemplo, puede excluir las observaciones 2 y 3 de 6 utilizando cualquiera de los ejemplos siguientes.

Ejemplo: 'Exclude',[2,3]

Ejemplo: 'Exclude',logical([0 1 1 0 0 0])

Tipos de datos: single | double | logical

Indicador del término constante (intercept) en el ajuste, especificado como el par separado por comas que consta de y para incluir o quitar el término constante del modelo.'Intercept'truefalse

Utilícelo solo cuando especifique el modelo utilizando un vector de caracteres o un escalar de cadena, no una fórmula o matriz.'Intercept'

Ejemplo: 'Intercept',false

Variables predictoras que se utilizarán en el ajuste, especificadas como el par separado por comas que consta de y una matriz de cadenas o una matriz de celdas de vectores de caracteres de los nombres de variable en la matriz de tabla o dataset, o un vector de índice lógico o numérico que indica qué columnas son variables predictoras.'PredictorVars'tbl

Los valores de cadena o vectores de caracteres deben estar entre los nombres de , o los nombres que especifique mediante el argumento de par nombre-valor.tbl'VarNames'

El valor predeterminado es todas las variables en , o todas las variables en excepto para .XtblResponseVar

Por ejemplo, puede especificar la segunda y la tercera variables como variables predictoras utilizando cualquiera de los ejemplos siguientes.

Ejemplo: 'PredictorVars',[2,3]

Ejemplo: 'PredictorVars',logical([0 1 1 0 0 0])

Tipos de datos: single | double | logical | string | cell

Variable de respuesta que se va a utilizar en el ajuste, especificada como el par separado por comas que consta de un vector de caracteres o un escalar de cadena que contiene el nombre de la variable en la matriz de tabla o dataset, o un vector de índice lógico o numérico que indica qué columna es la columna variable de respuesta.'ResponseVar'tbl Normalmente es necesario utilizar al ajustar una tabla o matriz de conjunto de datos.'ResponseVar'tbl

Por ejemplo, puede especificar la cuarta variable, por ejemplo , como la respuesta de seis variables, de una de las siguientes maneras.yield

Ejemplo: 'ResponseVar','yield'

Ejemplo: 'ResponseVar',[4]

Ejemplo: 'ResponseVar',logical([0 0 0 1 0 0])

Tipos de datos: single | double | logical | char | string

Indicador del tipo de empalme robusto a utilizar, especificado como el par separado por comas que consta de y uno de estos valores.'RobustOpts'

  • — No hay ajuste robusto.'off' fitlm utiliza mínimos cuadrados ordinarios.

  • — Ajuste robusto utilizando la función de peso con la constante de ajuste predeterminada.'on''bisquare'

  • Vector de caracteres o escalar de cadena — Nombre de una función de peso de ajuste robusto de la tabla siguiente. fitlm utiliza la constante de ajuste predeterminada correspondiente especificada en la tabla.

  • Estructura con los dos campos y .RobustWgtFunTune

    • El campo contiene el nombre de una función de peso de ajuste robusto de la tabla siguiente o un identificador de función de una función de peso personalizada.RobustWgtFun

    • El campo contiene una constante de afinación.Tune Si no establece el campo,Tune fitlm utiliza la constante de ajuste predeterminada correspondiente.

    Función de pesoDescripciónConstante de ajuste predeterminada
    'andrews'w = (abs(r)<pi) .* sin(r) ./ r1.339
    'bisquare'(también llamado biweight)w = (abs(r)<1) .* (1 - r.^2).^24.685
    'cauchy'w = 1 ./ (1 + r.^2)2.385
    'fair'w = 1 ./ (1 + abs(r))1.400
    'huber'w = 1 ./ max(1, abs(r))1.345
    'logistic'w = tanh(r) ./ r1.205
    'ols'Mínimos cuadrados ordinarios (sin función de ponderación)Ninguno
    'talwar'w = 1 * (abs(r)<1)2.795
    'welsch'w = exp(-(r.^2))2.985
    manija de la funciónFunción de peso personalizada que acepta un vector de residuos escalados y devuelve un vector de pesos del mismo tamaño querr1
    • Las constantes de ajuste predeterminadas de las funciones de peso integradas proporcionan estimaciones de coeficiente que son aproximadamente 95% tan eficientes estadísticamente como las estimaciones de mínimos cuadrados ordinarios, siempre que la respuesta tenga una distribución normal sin valores atípicos. La reducción de la constante de ajuste aumenta el peso hacia abajo asignado a residuos grandes; aumentar la constante de ajuste disminuye el peso a la baja asignado a residuos grandes.

    • El valor de las funciones de peso esr

      r = resid/(tune*s*sqrt(1–h)),

      donde está el vector de los residuos de la iteración anterior, es la constante de ajuste, es el vector de los valores de apalancamiento de un ajuste de mínimos cuadrados, y es una estimación de la desviación estándar del término de error dado porresidtunehs

      s = MAD/0.6745.

      es la mediana de la desviación absoluta de los residuos de su mediana.MAD La constante 0,6745 hace que la estimación sea imparcial para la distribución normal. Si tiene columnas, el software excluye las desviaciones absolutas más pequeñas al calcular la mediana.Xpp

Para un ajuste robusto, fitlm utiliza la estimación M para formular ecuaciones de estimación y las resuelve utilizando el método de mínimos cuadrados iterativos reponderados (IRLS).

Ejemplo: 'RobustOpts','andrews'

Nombres de variables, especificados como el par separado por comas que consta de y una matriz de cadenas o matriz de celdas de vectores de caracteres, incluidos los nombres de las columnas de first, y el nombre de la variable de respuesta last.'VarNames'Xy

no es aplicable a las variables de una matriz de tabla o conjunto de datos, porque esas variables ya tienen nombres.'VarNames'

Los nombres de variable no tienen que ser identificadores válidos.MATLAB Sin embargo, si los nombres no son válidos, no puede utilizar una fórmula al ajustar o ajustar un modelo; por ejemplo:

  • No puede utilizar una fórmula para especificar los términos que se agregaron o quitaron cuando utilice la función o la función, respectivamente.addTermsremoveTerms

  • No puede utilizar una fórmula para especificar los límites inferior y superior del modelo cuando se utiliza la función o con los argumentos de par nombre-valor y , respectivamente.stepstepwiselm'Lower''Upper'

Antes de especificar , puede comprobar los nombres de las variables mediante la función.'VarNames',varNamesvarNamesisvarname El código siguiente devuelve logical ( ) para cada variable que tiene un nombre de variable válido.1true Si los nombres de variable en no son válidos, a continuación, convertirlos mediante la función.

cellfun(@isvarname,varNames)
varNamesmatlab.lang.makeValidName
varNames = matlab.lang.makeValidName(varNames);

Ejemplo: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}

Tipos de datos: string | cell

Pesos de observación, especificados como el par separado por comas que consta de un vector -by-1 de valores escalares no negativos, donde está el número de observaciones.'Weights'nn

Tipos de datos: single | double

Argumentos de salida

contraer todo

Modelo lineal que representa un ajuste de mínimos cuadrados de la respuesta a los datos, devuelto como un objeto.LinearModel

Si el valor del par nombre-valor no es o , el modelo no es un ajuste de mínimos cuadrados, sino que utiliza la función de ajuste robusto.'RobustOpts'[]'ols'

Más acerca de

contraer todo

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 la especificación del modelo es un vector de caracteres o un escalar de cadena del formulario 'Y ~ terms'.

  • Y es el nombre de la respuesta.

  • terms representa los términos predictores en un modelo utilizando la notación Wilkinson.

Por ejemplo:

  • especifica un modelo lineal de tres variables con interceptación.'Y ~ A + B + C'

  • especifica un modelo lineal de tres variables sin interceptar.'Y ~ A + B + C – 1' Tenga en cuenta que las fórmulas incluyen un término constante (interceptar) de forma predeterminada. Para excluir un término constante del modelo, debe incluirlo en la fórmula.–1

Notación Wilkinson

La notación Wilkinson describe los términos presentes en un modelo. La notación se refiere a los términos presentes en un modelo, no a los multiplicadores (coeficientes) de esos términos.

La notación Wilkinson utiliza estos símbolos:

  • medios incluyen la siguiente variable.+

  • no incluyen la siguiente variable.

  • define una interacción, que es un producto de los términos.:

  • define una interacción y todos los términos de orden inferior.*

  • eleva el predictor a una potencia, exactamente como en repetida, por lo que incluye términos de orden inferior también.^*^

  • términos de grupos.()

Esta tabla muestra ejemplos típicos de notación Wilkinson.

Notación WilkinsonTérmino en notación estándar
1Término constante (intercepción)
, donde hay un entero positivoA^kkA, A2, ..., Ak
A + BA, B
A*BA, B, A*B
A:BsolamenteA*B
–BNo incluyaB
A*B + CA, B, C, A*B
A + B + C + A:BA, B, C, A*B
A*B*C – A:B:CA, B, C, A*B, A*C, B*C
A*(B + C)A, B, C, A*B, A*C

notación siempre incluye un término constante a menos que elimine explícitamente el término mediante .Statistics and Machine Learning Toolbox™–1

Para obtener más información, consulte .Wilkinson Notation

Sugerencias

  • Para acceder a las propiedades del modelo del objeto, puede utilizar la notación de puntos.LinearModelmdl Por ejemplo, devuelve una tabla de los valores residuales sin procesar, Pearson, Studentized y estandarizados para el modelo.mdl.Residuals

  • Después de entrenar un modelo, puede generar código C/C++ que predice las respuestas para nuevos datos. La generación de código C/C++ requiere MATLAB Coder™. Para obtener más información, consulte .Introduction to Code Generation

Algoritmos

  • El algoritmo de ajuste principal es la descomposición QR. Para un ajuste robusto, fitlm utiliza la estimación M para formular ecuaciones de estimación y las resuelve utilizando el método de mínimos cuadrados iterativos reponderados (IRLS).

  • fitlm trata a un predictor categórico de la siguiente manera:

    • Un modelo con un predictor categórico que tiene niveles (categorías) incluyeL L – 1 variables indicadoras. El modelo utiliza la primera categoría como nivel de referencia, por lo que no incluye la variable de indicador para el nivel de referencia. Si el tipo de datos del predictor categórico es , puede comprobar el orden de las categorías mediante el uso y reordenar las categorías mediante el uso para personalizar el nivel de referencia.Categóricocategoriesreordercats

    • fitlm trata al grupo de L – 1 variables indicadoras como una sola variable. Si desea tratar las variables del indicador como variables predictoras distintas, cree variables de indicador manualmente utilizando .dummyvar A continuación, utilice las variables del indicador, excepto la correspondiente al nivel de referencia de la variable categórica, cuando se ajuste a un modelo. Para el predictor categórico , si especifica todas las columnas y un término de interceptación como predictores, la matriz de diseño se vuelve deficiente de rango.Xdummyvar(X)

    • Los términos de interacción entre un predictor continuo y un predictor categórico con niveles consisten en el productoL L – 1 variables indicadoras con el predictor continuo.

    • Los términos de interacción entre dos predictores categóricos con y los niveles consisten en laLM (L – 1)*(M – 1) variables indicadoras para incluir todas las combinaciones posibles de los dos niveles de predictor escategóricos.

    • No puede especificar términos de orden superior para un predictor categórico porque el cuadrado de un indicador es igual a sí mismo.

  • fitlm considera , (vector de caracteres vacíos), (cadena vacía), y valores en , , y que faltan valores.NaN''""<missing><undefined>tblXY fitlm no utiliza observaciones con valores que faltan en el ajuste. La propiedad de un modelo ajustado indica siObservationInfo fitlm utiliza cada observación en el ajuste.

Funcionalidad alternativa

  • Para reducir el tiempo de cálculo en conjuntos de datos de alta dimensión, ajuste un modelo de regresión lineal mediante la función.fitrlinear

  • Para regularizar una regresión, utilice , , , o .fitrlinearlassoridgeplsregress

    • regulariza una regresión para conjuntos de datos de alta dimensión mediante la regresión de lazo o cresta.fitrlinear

    • elimina los predictores redundantes en regresión lineal mediante lazo o red elástica.lasso

    • regulariza una regresión con términos correlacionados utilizando la regresión de cresta.ridge

    • regulariza una regresión con términos correlacionados utilizando mínimos cuadrados parciales.plsregress

Referencias

[1] DuMouchel, W. H., and F. L. O'Brien. “Integrating a Robust Option into a Multiple Regression Computing Environment.” Computer Science and Statistics: Proceedings of the 21st Symposium on the Interface. Alexandria, VA: American Statistical Association, 1989.

[2] Holland, P. W., and R. E. Welsch. “Robust Regression Using Iteratively Reweighted Least-Squares.” Communications in Statistics: Theory and Methods, A6, 1977, pp. 813–827.

[3] Huber, P. J. Robust Statistics. Hoboken, NJ: John Wiley & Sons, Inc., 1981.

[4] Street, J. O., R. J. Carroll, and D. Ruppert. “A Note on Computing Robust Regression Estimates via Iteratively Reweighted Least Squares.” The American Statistician. Vol. 42, 1988, pp. 152–154.

Capacidades ampliadas

Introducido en R2013b