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 que se ajusta a las variables de la matriz de tabla o DataSet.tbl De forma predeterminada, toma la última variable como la variable de respuesta.fitlm

ejemplo

mdl = fitlm(X,y) Devuelve un modelo de regresión lineal de las respuestas, que se ajusta 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 varios 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 utilizando 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 del coeficiente estimado, que se almacena en la propiedad.Coefficients Mostrar 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 para el 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 frente 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 intercepción es 47.977/3.8785 = 12,37.t

  • —-valor de 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 de la-estadística para es mayor que 0,05, por lo que este término no es significativo en el nivel de significancia 5% dado los otros términos en el modelo.ptx2

Las estadísticas de resumen 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 es el número de coeficientes en el modelo, incluyendo la intercepción.Error degrees of freedomn pnp Por ejemplo, el modelo tiene cuatro predictores, por lo que el is 93 – 4 = 89.Error degrees of freedom

  • — Raíz cuadrada del error medio cuadrado, que estima la desviación estándar de la distribución de errores.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 en el modelo de regresión, que comprueba si el modelo se ajusta significativamente mejor que un modelo degenerado que consta de un término constante.F-statistic vs. constant modelF

  • —-valor para la prueba en el modelo.p-valuepF Por ejemplo, el modelo es significativo con un valor de 7.3816 e-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'});

Visualice 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 utilizando 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 en este ejemplo equivale 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 variable de respuesta y las otras variables como variables predictoras.fitlmtbl

Ajuste un modelo de regresión lineal utilizando 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 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 el uso de la notación Wilkinson le permite actualizar el modelo sin tener que cambiar la matriz de diseño. utiliza solo las variables especificadas 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.

Términos matriz para entrada de tabla

Si las variables del 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 utilizando 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 

Términos matriz para entrada matricial

Si las variables de predictor y respuesta están en un vector de matriz y 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 utilizando 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 bidireccionales 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 intercepció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. Reordenar las categorías del predictor categórico para controlar el nivel de referencia en el modelo. A continuación, utilice para probar la significancia de la variable categórica.anova

Modelo con predictor categórico

Cargue el conjunto de datos y cree un modelo de regresión lineal como función de.carsmallMPGModel_Year Para tratar el vector numérico como una variable categórica, identifique el predictor utilizando 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 indicadoras porque la matriz de diseño se convierte en deficiente rango Si el modelo incluye tres variables indicadoras (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 indicadoras sin un término de intercepció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>
.

Alternativamente, puede crear un modelo que tenga tres variables indicadoras sin un término de intercepción mediante la creación manual de variables indicadoras 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 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 mediante la función.categories

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

Si utiliza como variable predictora, elige 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 es.Year_reordered'76' Cree un modelo de regresión lineal 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 predictor categórico

La visualización del modelo incluye un valor de cada término para comprobar si el coeficiente correspondiente es igual a cero.mdl2p Cada valor examina cada variable indicadora.p Para examinar la variable categórica como un grupo de variables indicadoras, utilice.Model_Yearanova Especifique para devolver una tabla ANOVA de componente que incluya estadísticas 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 de componentes incluye el-valor de la variable, que es menor que los valores-de las variables indicadoras.pModel_Yearp

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

Cargue datos de muestra.

load hospital

Ajuste un modelo lineal con términos de interacción a los datos. Especifique el peso como variable de respuesta y el estado de sexo, edad y tabaquismo como variables predictoras. Además, especifique que el sexo y el estado de tabaquismo 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 parecen 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 la composición porcentual 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 de mínimos cuadrados estándar.Regresión robusta: reduce los efectos de valor atípico

Argumentos de entrada

contraer todo

Datos de entrada, especificados como una tabla o matriz de DataSet. Cuando es a, la fórmula especifica las variables de predictor y respuesta.modelspecFórmula De lo contrario, si no especifica las variables de predictor y respuesta, la última variable en es la variable de respuesta y las otras son las variables predictoras de forma predeterminada.tbl

Las variables predictoras pueden ser numéricas, lógicas, categóricas, de caracteres o de cadena. La variable de respuesta debe ser numérica o lógica.

Para establecer una columna diferente como variable de respuesta, utilice el argumento de par nombre-valor.ResponseVar Para usar un subconjunto de las columnas como predictores, use el argumento de par nombre-valor.PredictorVars

Variables predictoras, especificadas como una-por-matriz, donde es 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 se 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 es el número de observaciones.nn Cada entrada es la respuesta de 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 solo contiene un término constante (intercepción).
    'linear'El modelo contiene una intersección y un término lineal para cada predictor.
    'interactions'El modelo contiene una intercepción, un término lineal para cada predictor y todos los productos de pares de predictores distintos (sin términos cuadrados).
    'purequadratic'El modelo contiene un término de intercepción y términos lineales y cuadrados para cada predictor.
    'quadratic'El modelo contiene un término de intercepción, términos lineales y cuadrados para cada predictor, y todos los productos de pares de predictores distintos.
    'polyijk'El 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 aunque 9. El modelo contiene términos de interacción, pero el grado de cada término de interacción no excede el valor máximo de los grados especificados. Por ejemplo, tiene una intercepción y'poly13'x1,x2,x22,x23,x1*x2Yx1*x22 términos, dondex1 Yx2 son el primer y segundo predictores, respectivamente.
  • A-by-(+ 1) matriz, o a, especificando términos en el modelo, donde es el número de términos y es el número de variables predictoras, y + 1 cuentas para la variable de respuesta.tpTérminos matriztp 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 formularioFórmula

    'Y ~ terms',

    donde están.termsLa notación Wilkinson

Ejemplo: 'quadratic'

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

Tipos de datos: single | double | char | string

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.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 sintonización predeterminada, las variables primera y tercera 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 una matriz de cadenas o matriz de vectores de caracteres que contiene nombres de variables categóricas en la matriz de tabla o DataSet, o un vector de índice numérico o lógico que indica qué columnas son categóricas.'CategoricalVars'tbl

  • Si los datos están en una tabla o conjunto de datos, a continuación, 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 la 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 uno 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 que se excluirán del ajuste, especificadas como el par separado por comas consistente en un vector de índice lógico o numérico que indica las observaciones que se excluirán 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 para el término constante (intercepción) en el ajuste, especificado como el par separado por comas que consta de y ya sea para incluir o para eliminar el término constante del modelo.'Intercept'truefalse

Utilíficese únicamente al especificar el modelo utilizando un vector de caracteres o un escalar de cadena, no una fórmula o una matriz.'Intercept'

Ejemplo: 'Intercept',false

Las variables predictoras que se usarán en el ajuste, especificadas como el par separado por comas que consta de una matriz de cadenas o matriz de vectores de caracteres de los nombres de variables de la matriz de tabla o DataSet, o un vector de índice numérico o lógico que indica qué columnas están 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 las variables segunda y tercera como variables predictoras utilizando uno de los siguientes ejemplos.

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 usará 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 numérico o lógico que indica qué columna es la variable de respuesta.'ResponseVar'tbl Normalmente, debe usar al ajustar una tabla o una matriz de conjunto de datos.'ResponseVar'tbl

Por ejemplo, puede especificar la cuarta variable, digamos, 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 accesorio robusto que se utilizará, especificado como el par separado por comas que consta de uno de estos valores.'RobustOpts'

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

  • — Ajuste robusto utilizando la función de peso con la constante de sintonización por defecto.'on''bisquare'

  • Vector de caracteres o escalar de cadena: nombre de una función de peso de ajuste robusta de la tabla siguiente. fitlm utiliza la constante de sintonización 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 robusta de la tabla siguiente o un manejador de función de una función de ponderación personalizada.RobustWgtFun

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

    Función de pesoDescripciónConstante de sintonización 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
    identificador de funciónFunción de peso personalizado que acepta un vector de los residuales a escala, y devuelve un vector de pesos del mismo tamaño querr1
    • Las constantes de ajuste predeterminadas de las funciones de ponderación incorporadas proporcionan estimaciones de coeficiente que son aproximadamente 95% estadísticamente eficientes como las estimaciones de mínimos cuadrados ordinarios, siempre que la respuesta tenga una distribución normal sin valores atípicos. La disminución de la constante de sintonización aumenta el peso descendente asignado a los residuales grandes; aumentar la constante de sintonización disminuye el peso descendente asignado a los residuales 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 afinación, 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 desviación media 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 los mínimos cuadrados reponderados iterativos (IRLS).

Ejemplo: 'RobustOpts','andrews'

Nombres de variables, especificadas como el par separado por comas que consta de una matriz de cadenas o matriz 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 DataSet, ya que esas variables ya tienen nombres.'VarNames'

Por ejemplo, si en sus datos, potencia, aceleración y año de modelo de los coches son las variables predictoras, y millas por galón (MPG) es la variable de respuesta, a continuación, puede nombrar las variables de la siguiente manera.

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

Tipos de datos: string | cell

Ponderaciones de observación, especificadas como el par separado por comas que consta de y un vector-por-1 de valores escalares no negativos, donde es 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

Términos matriz

Una matriz de términos es a-por-(+ 1) matriz especificando términos en un modelo, donde es el número de términos, es el número de variables predictoras y + 1 cuentas para la variable de respuesta.Ttptp El valor de es el exponente de la 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 intercepció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 de predictor y respuesta en un vector de matriz y 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 intercepción.'Y ~ A + B + C'

  • especifica un modelo lineal de tres variables sin intercepción.'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 incluir en la fórmula.–1

La notación Wilkinson

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

La notación Wilkinson utiliza estos símbolos:

  • significa incluir la siguiente variable.+

  • significa no incluir la siguiente variable.

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

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

  • eleva el predictor a una potencia, exactamente como se repite, también incluye términos de orden inferior.^*^

  • términos de grupos.()

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

La notación WilkinsonTérmino en notación estándar
1Término constante (intercepción)
, donde es un entero positivoA^kk,A A2, ..., Ak
A + B,AB
A*B, ,ABA*B
A:BsolamenteA*B
–BNo incluyaB
A*B + C, , ,ABCA*B
A + B + C + A:B, , ,ABCA*B
A*B*C – A:B:C, , , , ,ABCA*BA*CB*C
A*(B + C), , , ,ABCA*BA*C

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

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

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 RAW, Pearson, Studentized y estandarizados para el modelo.mdl.Residuals

  • Después de entrenar un modelo, puede generar código de C/C++ que predice las respuestas de los nuevos datos. La generación de código C/C++ requiere MATLAB®Coder™. Para obtener más información, consulte.Introducción a la generación de código

Algoritmos

  • El algoritmo de ajuste principal es la descomposición de 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 los mínimos cuadrados reponderados iterativos (IRLS).

  • fitlm trata 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 indicadora para el nivel de referencia. Si el tipo de datos del predictor categórico es, a continuación, 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 indicadoras como variables predictoras distintas, cree las variables indicadoras manualmente utilizando.dummyvar A continuación, utilice las variables indicadoras, excepto la correspondiente al nivel de referencia de la variable categórica, al ajustar un modelo. Para el predictor categórico, si especifica todas las columnas y un término de intercepción como predictores, la matriz de diseño se convierte en 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 producto elemento-sabio delL L – 1 variables indicadoras con el predictor continuo.

    • Los términos de interacción entre dos predictores categóricos y los niveles consisten en laLM (L – 1)*(M – 1) variables indicadoras para incluir todas las combinaciones posibles de los dos niveles predictores categó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 carácter vacío), (cadena vacía), y valores en,, y que faltan valores.NaN''""<missing><undefined>tblXY fitlm no utiliza observaciones con valores faltantes 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 dimensionalidad, ajuste un modelo de regresión lineal utilizando la función.fitrlinear

  • Para regularizar una regresión, use,,, o.fitrlinearLazoridgeplsregress

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

    • elimina los predictores redundantes en la regresión lineal mediante un lazo o una red elástica.Lazo

    • regulariza una regresión con términos correlacionados utilizando 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