fitlm
Ajustar un modelo de regresión lineal
Sintaxis
Descripción
especifica qué variable de la tabla contiene los datos de respuesta.mdl
= fitlm(tbl
,ResponseVarName
)
especifica más opciones con uno o varios argumentos de par nombre-valor. Por ejemplo, puede especificar qué variables son categóricas, realizar una regresión robusta o utilizar los pesos de las observaciones.mdl
= fitlm(___,Name,Value
)
Ejemplos
Ajustar una regresión lineal con los datos de una matriz
Ajuste un modelo de regresión lineal con un conjunto de datos de entrada de matriz.
Cargue el conjunto de datos carsmall
, un conjunto de datos de entrada de matriz.
load carsmall
X = [Weight,Horsepower,Acceleration];
Ajuste un modelo de regresión lineal mediante 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 presentación del modelo incluye la fórmula del modelo, los coeficientes estimados y las estadísticas descriptivas del modelo.
La fórmula del modelo de la presentación, y ~ 1 + x1 + x2 + x3
, corresponde a .
La presentación del modelo también muestra información de los coeficientes estimados, 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 Coefficient
incluye estas columnas:
Estimate
: las estimaciones de los coeficientes de cada término correspondiente del modelo. Por ejemplo, la estimación del término constante (intercept
) es 47.977.SE
: error estándar de los coeficientes.tStat
: estadístico t de cada coeficiente para probar la hipótesis nula de que el coeficiente correspondiente es cero en contraste con la alternativa de que es diferente de cero, dados los otros predictores del modelo. Tenga en cuenta quetStat = Estimate/SE
. Por ejemplo, el estadístico t del intercepto es 47.977/3.8785 = 12.37.pValue
: valor de p del estadístico t de la prueba de hipótesis bilateral. Por ejemplo, el valor de p del estadístico t dex2
es mayor que 0.05, por lo que este término no es significativo al nivel de significación del 5% dados los otros términos del modelo.
Las estadísticas descriptivas del modelo son:
Number of observations
: número de filas sin valoresNaN
. Por ejemplo,Number of observations
es 93, puesto que el vector de datosMPG
tiene seis valoresNaN
y el vector de datosHorsepower
tiene un valorNaN
en una observación diferente, donde el número de filas enX
yMPG
es 100.Error degrees of freedom
: n – p, donde n es el número de observaciones y p es el número de coeficientes del modelo, incluido el intercepto. Por ejemplo, el modelo tiene cuatro predictores, por lo queError degrees of freedom
es 93 – 4 = 89.Root mean squared error
: raíz cuadrada del error cuadrático medio, que calcula la desviación estándar de la distribución del error.R-squared
yAdjusted R-squared
: coeficiente de determinación y coeficiente de determinación ajustado, respectivamente. Por ejemplo, el valor deR-squared
indica que el modelo explica aproximadamente el 75% de la variabilidad en la variable de respuestaMPG
.F-statistic vs. constant model
: estadístico de la prueba F realizada en el modelo de regresión, que comprueba si el modelo se ajusta significativamente mejor que un modelo degenerado que solo consta de un término constante.p-value
: valor de p de la prueba F realizada en el modelo. Por ejemplo, el modelo es significativo con un valor de p de 7.3816e-27.
Puede encontrar estos estadísticos en las propiedades del modelo (NumObservations
, DFE
, RMSE
y Rsquared
) y mediante la función anova
.
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
Utilice plot
para crear una gráfica de variables añadida (gráfica de influencia de regresión parcial) para el modelo completo, excepto el término constante (intercepto).
plot(mdl)
Ajustar una regresión lineal con los datos de una tabla
Cargue los datos de muestra.
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 de millas por galón (MPG). Especifique la fórmula del modelo mediante notación de 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 'MPG~Weight+Acceleration'
de este ejemplo equivale a ajustar la especificación del modelo como 'linear'
. Por ejemplo:
lm2 = fitlm(tbl,'linear');
Si se utiliza un vector de caracteres para la especificación del modelo y no se especifica la variable de respuesta, fitlm
acepta la última variable en tbl
como la variable de respuesta y las otras variables como las variables predictoras.
Ajustar una regresión lineal con una fórmula del modelo especificada
Ajuste un modelo de regresión lineal con una fórmula del modelo especificada mediante notación de Wilkinson.
Cargue los datos de muestra.
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 de millas por galón (MPG) con el peso y la aceleración como las 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 p de 0.18493 indica que Acceleration
no tiene un efecto significativo sobre MPG
.
Elimine Acceleration
del modelo y pruebe a mejorar el modelo añadiendo la variable predictora Model_Year
. En primer lugar, defina Model_Year
como una variable categórica.
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
Al especificar modelspec
mediante notación de Wilkinson, puede actualizar el modelo sin tener que cambiar la matriz de diseño. fitlm
solo utiliza las variables que se especifican en la fórmula. También se crean las dos variables indicadoras simuladas necesarias para la variable categórica Model_Year
.
Ajustar una regresión lineal con una matriz de términos
Ajuste un modelo de regresión lineal con una matriz de términos.
Matriz de términos de una entrada de tabla
Si las variables del modelo figuran en una tabla, una columna de 0
en una matriz de términos representa la posición de la variable de respuesta.
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'});
Represente el modelo lineal 'BloodPressure ~ 1 + Sex + Age + Smoker'
mediante una matriz de términos. La variable de respuesta se sitúa en la segunda columna de la tabla, por lo que la segunda columna de la matriz de términos debe ser una columna de 0
para ejercer de variable de respuesta.
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 de una entrada de matriz
Si las variables predictoras y de respuesta figuran en una matriz y un vector columna, debe incluir 0
para señalar la variable de respuesta al final de cada fila de una matriz de términos.
Cargue el conjunto de datos carsmall
y defina la matriz de predictores.
load carsmall
X = [Acceleration,Weight];
Especifique el modelo 'MPG ~ Acceleration + Weight + Acceleration:Weight + Weight^2'
mediante una matriz de términos. Este modelo incluye el efecto principal y términos de interacción bidireccional para las variables Acceleration
y Weight
, así como un término de segundo orden para la variable Weight
.
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
Solo el intercepto y el término x2
, que corresponde a la variable Weight
, son significativos al nivel de significación del 5%.
Regresión lineal con un predictor categórico
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 del modelo. Después, utilice anova
para comprobar la significación de la variable categórica.
Modelo con un predictor categórico
Cargue el conjunto de datos carsmall
y cree un modelo de regresión lineal de MPG
como función de Model_Year
. Para tratar el vector numérico Model_Year
como variable categórica, identifique el predictor mediante el argumento de par nombre-valor '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 de la presentación, MPG ~ 1 + Model_Year
, corresponde a
,
donde y son variables indicadoras cuyo valor es uno si el valor de Model_Year
es 76 y 82, respectivamente. La variable Model_Year
incluye tres valores diferentes, que puede comprobar mediante la función unique
.
unique(Model_Year)
ans = 3×1
70
76
82
fitlm
elige el valor más pequeño en Model_Year
como nivel de referencia ('70'
) y crea dos variables indicadoras e . El modelo solo incluye dos variables indicadoras, porque la matriz de diseño pasa a ser de rango deficiente si el modelo incluye tres variables indicadoras (una para cada nivel) y un término de intercepto.
Modelo con variables indicadoras completas
Puede interpretar la fórmula del modelo de mdl
como un modelo con tres variables indicadoras sin término de intercepto:
.
También puede crear un modelo con tres variables indicadoras sin término de intercepto creando manualmente 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
Elegir un nivel de referencia en el modelo
Puede elegir un nivel de referencia modificando el orden de las categorías en una variable categórica. Primero, 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
{'70'}
{'76'}
{'82'}
Si utiliza Year
como variable predictora, fitlm
elige la primera categoría '70'
como nivel de referencia. Reordene Year
mediante la función reordercats
.
Year_reordered = reordercats(Year,{'76','70','82'}); categories(Year_reordered)
ans = 3x1 cell
{'76'}
{'70'}
{'82'}
La primera categoría de Year_reordered
es '76'
. Cree un modelo de regresión lineal de MPG
como función de Year_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
mdl2
utiliza '76'
como nivel de referencia e incluye dos variables indicadoras e .
Evaluar un predictor categórico
La presentación del modelo de mdl2
incluye un valor de p de cada término para comprobar si el coeficiente correspondiente es igual a cero o no. Cada valor de p examina cada variable indicadora. Para examinar la variable categórica Model_Year
como grupo de variables indicadoras, utilice anova
. Utilice la opción 'components'
(valor predeterminado) para devolver una tabla ANOVA de componentes que incluye estadísticos ANOVA de cada variable del modelo, excepto el término constante.
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 p de la variable Model_Year
, que es más pequeño que los valores de p de las variables indicadoras.
Especificar las variables de respuesta y predictoras del modelo lineal
Ajuste un modelo de regresión lineal a los datos de muestra. Especifique las variables de respuesta y predictoras, e incluya en el modelo solo términos de interacción en pares.
Cargue los datos de muestra.
load hospital
Ajuste un modelo lineal con términos de interacción a los datos. Especifique el peso como la variable de respuesta y el sexo, la edad y el tabaquismo como las variables predictoras. Así mismo, especifique que el sexo y el 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 parece diferir significativamente en función de la edad, el tabaquismo o la interacción de estos factores con el sexo del paciente al nivel de significación del 5%.
Ajustar un modelo de regresión lineal robusta
Cargue el conjunto de datos hald
, que mide el efecto de la composición del cemento en el calor disipado por su fraguado.
load hald
Este conjunto de datos incluye las variables ingredients
y heat
. La matriz ingredients
contiene la composición porcentual de los cuatro productos químicos presentes en el cemento. El vector heat
contiene los valores del fraguado térmico tras 180 días para cada muestra de cemento.
Ajuste un modelo de regresión lineal robusta 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 Reduce Outlier Effects Using Robust Regression, en el que se comparan los resultados de un ajuste robusto con los de un ajuste de mínimos cuadrados estándar.
Calcular el error medio absoluto mediante validación cruzada
Calcule el error medio absoluto de un modelo de regresión mediante una validación cruzada de 10 particiones.
Cargue el conjunto de datos carsmall
. Especifique las variables Acceleration
y Displacement
como predictores y la variable Weight
como la respuesta.
load carsmall
X1 = Acceleration;
X2 = Displacement;
y = Weight;
Cree la función personalizada regf
(se muestra al final de este ejemplo). Esta función ajusta un modelo de regresión a los datos de entrenamiento y después calcula los pesos pronosticados de los vehículos en un conjunto de pruebas. La función compara los valores pronosticados del peso de los vehículos con los valores reales y después calcula el error medio absoluto (EMA) y el EMA ajustado al intervalo de pesos de los vehículos en el conjunto de pruebas.
Nota: si utiliza el archivo de script en vivo en este ejemplo, la función regf
ya se incluye al final del archivo. De lo contrario, ha de crear esta función al final del archivo .m o añadirlo como archivo en la ruta de MATLAB®.
De forma predeterminada, crossval
realiza una validación cruzada de 10 particiones. En cada una de las 10 particiones de los conjuntos de pruebas y entrenamiento de los datos en X1
, X2
e y
, calcule los valores de EMA y EMA ajustado mediante la función regf
. Halle la media del EMA y del EMA ajustado.
rng('default') % For reproducibility values = crossval(@regf,X1,X2,y)
values = 10×2
319.2261 0.1132
342.3722 0.1240
214.3735 0.0902
174.7247 0.1128
189.4835 0.0832
249.4359 0.1003
194.4210 0.0845
348.7437 0.1700
283.1761 0.1187
210.7444 0.1325
mean(values)
ans = 1×2
252.6701 0.1129
Este código crea la función regf
.
function errors = regf(X1train,X2train,ytrain,X1test,X2test,ytest) tbltrain = table(X1train,X2train,ytrain, ... 'VariableNames',{'Acceleration','Displacement','Weight'}); tbltest = table(X1test,X2test,ytest, ... 'VariableNames',{'Acceleration','Displacement','Weight'}); mdl = fitlm(tbltrain,'Weight ~ Acceleration + Displacement'); yfit = predict(mdl,tbltest); MAE = mean(abs(yfit-tbltest.Weight)); adjMAE = MAE/range(tbltest.Weight); errors = [MAE adjMAE]; end
Argumentos de entrada
tbl
— Datos de entrada
tabla | arreglo de conjuntos de datos
Datos de entrada, incluidas las variables predictoras y de respuesta, especificados en forma de tabla o arreglo de conjuntos de datos. 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.
De forma predeterminada,
fitlm
adopta la última variable como la variable de respuesta y el resto como las variables predictoras.Para establecer otra columna como la 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 la especificación de un modelo, establezca el argumento
modelspec
mediante una fórmula o matriz de términos. La fórmula o matriz de términos especifica qué columnas se utilizarán como las variables predictoras o de respuesta.
Los nombres de las variables de una tabla no tienen que ser identificadores válidos de MATLAB®, pero los nombres no deben contener espacios en blanco al principio ni al final. Si los nombres no son válidos, no puede utilizar una fórmula al ajustar un modelo; por ejemplo:
No puede especificar
modelspec
mediante una fórmula.No puede utilizar una fórmula para especificar los términos que se han de añadir o eliminar al utilizar la función
addTerms
o la funciónremoveTerms
, respectivamente.No puede utilizar una fórmula para especificar los límites inferior y superior del modelo al utilizar la función
step
ostepwiselm
con los argumentos de par nombre-valor'Lower'
y'Upper'
, respectivamente.
Puede verificar los nombres de las variables en tbl
mediante la función isvarname
. Si los nombres de las variables no son válidos, puede convertirlos en válidos mediante la función matlab.lang.makeValidName
.
ResponseVarName
— Nombre de la variable para usar como respuesta
escalar de cadena | vector de caracteres
Nombre de la variable para usar como respuesta, especificado como escalar de cadena o vector de caracteres. ResponseVarName
indica qué variable en tbl
contiene los datos de respuesta. Cuando especifique ResponseVarName
, debe especificar también el argumento de entrada tbl
.
Tipos de datos: char
| string
X
— Variables predictoras
matriz
Variables predictoras, especificadas como una matriz n por p, donde n es el número de observaciones y p es el número de variables predictoras. Cada columna de X
representa una variable y cada fila, una observación.
De forma predeterminada, el modelo contiene un término constante, a menos que lo elimine de manera explícita, por lo que no incluya una columna de unos en X
.
Tipos de datos: single
| double
modelspec
— Especificación de modelo
'linear'
(predeterminado) | vector de caracteres o escalar de cadena que da nombre al modelo | matriz de términos t por (p + 1) | vector de caracteres o fórmula de escalar de cadena con el formato 'y ~ terms'
Especificación de modelo, especificado como uno de estos valores.
Vector de caracteres o escalar de cadena que da nombre al modelo.
Valor Tipo de modelo 'constant'
El modelo contiene solo un término constante (intercepto). 'linear'
El modelo contiene un intercepto y un término lineal para cada predictor. 'interactions'
El modelo contiene un intercepto, un término lineal para cada predictor y todos los productos de pares de predictores diferentes (sin términos cuadrados). 'purequadratic'
El modelo contiene un término de intercepto y términos lineales y cuadrados para cada predictor. 'quadratic'
El modelo contiene un término de intercepto, términos lineales y cuadrados para cada predictor y todos los productos de pares de predictores diferentes. 'poly
ijk
'El modelo es un polinomio con todos los términos hasta el grado i
en el primer predictor, hasta el gradoj
en el segundo y así sucesivamente. Especifique el grado máximo para cada predictor mediante los numerales del cero al nueve. El modelo contiene términos de interacción, pero el grado de cada uno de ellos no supera el valor máximo de los grados especificados. Por ejemplo,'poly13'
tiene un intercepto y los términos x1, x2, x22, x23, x1*x2 y x1*x22, donde x1 y x2 son el primer y el segundo predictores, respectivamente.Matriz t por (p + 1), o Matriz de términos, en la que se especifican los términos del modelo, donde t es el número de términos, p es el número de variables predictoras y +1 representa la variable de respuesta. Una matriz de términos es útil cuando el número de predictores es grande y desea generar los términos de forma programática.
Vector de caracteres o escalar de cadena Fórmula con el formato
'y ~ terms'
,donde los
terms
figuran en Notación de Wilkinson. Los nombres de las variables de la fórmula deben ser nombres de variables entbl
o nombres de variables especificados medianteVarnames
. Así mismo, los nombres de las variables deben ser identificadores válidos de MATLAB.El software determina el orden de los términos en un modelo ajustado mediante el orden de los términos en
tbl
oX
. Por tanto, el orden de los términos en el modelo puede ser diferente del orden de los términos en la fórmula especificada.
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 opcionales Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de otros argumentos, pero el orden de los pares no importa.
En versiones anteriores a R2021a, use comas para separar cada nombre y valor y encierre Name
entre comillas.
Ejemplo: 'Intercept',false,'PredictorVars',[1,3],'ResponseVar',5,'RobustOpts','logistic'
especifica un modelo de regresión robusta sin ningún término constante, donde el algoritmo utiliza la función logística de ponderación con la constante de ajuste predeterminada, la primera y tercera variables son las variables predictoras y la quinta variable es la variable de respuesta.
CategoricalVars
— Lista de variables categóricas
arreglo de cadenas | arreglo de celdas de vectores de caracteres | vector índice lógico o numérico
Lista de variables categóricas, especificadas como el par separado por comas que consta de 'CategoricalVars'
y un arreglo de cadenas o un arreglo de celdas de vectores de caracteres que contiene los nombres de las variables categóricas en la tabla o el arreglo de conjuntos de datos tbl
, o un vector índice lógico o numérico que indica qué columnas son categóricas.
Si los datos se recogen en una tabla o un arreglo de conjuntos de datos
tbl
, de forma predeterminada,fitlm
trata todos los valores categóricos, los valores lógicos, los arreglos de caracteres, los arreglos de cadenas y los arreglos de celdas de vectores de caracteres como variables categóricas.Si los datos se recogen en una matriz
X
, el valor predeterminado de'CategoricalVars'
es una matriz vacía[]
. Es decir, ninguna variable es categórica a menos que especifique que es categórica.
Por ejemplo, puede especificar que la segunda y la tercera variables de un total de seis son categóricas mediante cualquiera de las siguientes opciones:
Ejemplo: 'CategoricalVars',[2,3]
Ejemplo: 'CategoricalVars',logical([0 1 1 0 0 0])
Tipos de datos: single
| double
| logical
| string
| cell
Exclude
— Observaciones que se van a excluir
vector índice lógico o numérico
Observaciones que se excluirán del ajuste, especificadas como el par separado por comas que consta de 'Exclude'
y un vector índice lógico o numérico que indica qué observaciones se excluirán del ajuste.
Por ejemplo, puede excluir las observaciones 2 y 3 de un total de 6 mediante cualquiera de los siguientes ejemplos.
Ejemplo: 'Exclude',[2,3]
Ejemplo: 'Exclude',logical([0 1 1 0 0 0])
Tipos de datos: single
| double
| logical
Intercept
— Indicador de término constante
true
(predeterminado) | false
Indicador del término constante (intercepto) del ajuste, especificado como el par separado por comas que consta de 'Intercept'
y de true
para incluir o de false
para eliminar el término constante del modelo.
Utilice 'Intercept'
solo cuando se especifique el modelo mediante un vector de caracteres o escalar de cadena y no mediante una fórmula o matriz.
Ejemplo: 'Intercept',false
PredictorVars
— Variables predictoras
arreglo de cadenas | arreglo de celdas de vectores de caracteres | vector índice lógico o numérico
Variables predictoras que se utilizarán en el ajuste, especificadas como el par separado por comas que consta de 'PredictorVars'
y un arreglo de cadenas o un arreglo de celdas de vectores de caracteres de los nombres de las variables en la tabla o el arreglo de conjuntos de datos tbl
, o un vector índice lógico o numérico que indica qué columnas son las variables predictoras.
Los valores de la cadena o los vectores de caracteres deben estar entre los nombres que figuran en tbl
o en los nombres que especifique mediante el argumento de par nombre-valor 'VarNames'
.
El valor predeterminado es todas las variables en X
o en tbl
excepto ResponseVar
.
Por ejemplo, puede especificar que la segunda y la tercera variables son las variables predictoras mediante cualquiera 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
ResponseVar
— Variable de respuesta
última columna en tbl
(predeterminado) | vector de caracteres o escalar de cadena que contiene el nombre de la variable | vector índice lógico o numérico
Variable de respuesta que se utilizará en el ajuste, especificada como el par separado por comas que consta de 'ResponseVar'
y un vector de caracteres o escalar de cadena que contiene el nombre de la variable en la tabla o el arreglo de conjuntos de datos tbl
, o un vector índice lógico o numérico que indica qué columna es la variable de respuesta. Normalmente, se ha de utilizar 'ResponseVar'
al ajustar una tabla o un arreglo de conjuntos de datos tbl
.
Por ejemplo, puede especificar que la cuarta variable, es decir, yield
, es la respuesta de un total de seis variables de una de las siguientes maneras.
Ejemplo: 'ResponseVar','yield'
Ejemplo: 'ResponseVar',[4]
Ejemplo: 'ResponseVar',logical([0 0 0 1 0 0])
Tipos de datos: single
| double
| logical
| char
| string
RobustOpts
— Indicador de tipo de ajuste robusto
'off'
(predeterminado) | 'on'
| vector de caracteres | escalar de cadena | estructura
Indicador del tipo de ajuste robusto que se utilizará, especificado como el par separado por comas que consta de 'RobustOpts'
y uno de estos valores.
'off'
: sin ajuste robusto.fitlm
utiliza mínimos cuadrados ordinarios.'on'
: ajuste robusto mediante la función de ponderación'bisquare'
con la constante de ajuste predeterminada.Vector de caracteres o escalar de cadena: nombre de una función de ponderación de ajuste robusto de la tabla siguiente.
fitlm
utiliza la constante de ajuste predeterminada correspondiente de la tabla.Estructura con los dos campos
RobustWgtFun
yTune
.El campo
RobustWgtFun
contiene el nombre de una función de ponderación de ajuste robusto de la tabla siguiente o un identificador de función de una función de ponderación personalizada.El campo
Tune
contiene una constante de ajuste. Si no establece el campoTune
,fitlm
utiliza la constante de ajuste predeterminada correspondiente.
Función de ponderación Descripción Constante de ajuste predeterminada 'andrews'
w = (abs(r)<pi) .* sin(r) ./ r
1.339 'bisquare'
w = (abs(r)<1) .* (1 - r.^2).^2
(también llamada biponderación)4.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) ./ r
1.205 'ols'
Mínimos cuadrados ordinarios (sin función de ponderación) Ninguna 'talwar'
w = 1 * (abs(r)<1)
2.795 'welsch'
w = exp(-(r.^2))
2.985 identificador de función Función de ponderación personalizada que acepta un vector r
de los valores residuales escalados y devuelve un vector de ponderaciones del mismo tamaño quer
1 Las constantes de ajuste predeterminadas de las funciones de ponderación integradas ofrecen estimaciones de los coeficientes que son aproximadamente el 95% de eficientes estadísticamente que las estimaciones de los mínimos cuadrados ordinarios, siempre que la respuesta tenga una distribución normal sin valores atípicos. Al disminuir la constante de ajuste, se aumenta la reducción asignada a los valores residuales grandes; al aumentar la constante de ajuste, se disminuye la reducción asignada a los valores residuales grandes.
El valor r en las funciones de ponderación es
r = resid/(tune*s*sqrt(1–h))
,donde
resid
es el vector de los valores residuales de la iteración anterior,tune
es la constante de ajuste,h
es el vector de los valores de influencia de un ajuste de mínimos cuadrados ys
es una estimación de la desviación estándar del término de error dado pors = MAD/0.6745
.MAD
es la mediana de la desviación absoluta de los valores residuales con respecto a su mediana. La constante 0.6745 convierte la estimación en insesgada para la distribución normal. SiX
tiene p columnas, el software excluye las p desviaciones absolutas más pequeñas al calcular la mediana.
Para obtener un ajuste robusto, fitlm
utiliza la estimación de M para formular las ecuaciones de estimación y las resuelve mediante el método de Iteratively Reweighted Least Squares (IRLS).
Ejemplo: 'RobustOpts','andrews'
VarNames
— Nombres de las variables
{'x1','x2',...,'xn','y'}
(predeterminado) | arreglo de cadenas | arreglo de celdas de vectores de caracteres
Nombres de las variables, especificados como el par separado por comas que consta de 'VarNames'
y un arreglo de cadenas o un arreglo de celdas de vectores de caracteres que incluye los nombres de las columnas de X
en primer lugar y el nombre de la variable de respuesta y
en último lugar.
'VarNames'
no se puede aplicar a las variables de una tabla o un arreglo de conjuntos de datos, puesto que dichas variables ya tienen nombres.
Los nombres de las variables no tienen que ser identificadores válidos de MATLAB, pero los nombres no deben contener espacios en blanco al principio ni al final. Si los nombres no son válidos, no puede utilizar una fórmula al ajustar un modelo; por ejemplo:
No puede utilizar una fórmula para especificar los términos que se han de añadir o eliminar al utilizar la función
addTerms
o la funciónremoveTerms
, respectivamente.No puede utilizar una fórmula para especificar los límites inferior y superior del modelo al utilizar la función
step
ostepwiselm
con los argumentos de par nombre-valor'Lower'
y'Upper'
, respectivamente.
Antes de especificar 'VarNames',varNames
, puede verificar los nombres de las variables en varNames
mediante la función isvarname
. Si los nombres de las variables no son válidos, puede convertirlos en válidos mediante la función matlab.lang.makeValidName
.
Ejemplo: 'VarNames',{'Horsepower','Acceleration','Model_Year','MPG'}
Tipos de datos: string
| cell
Weights
— Pesos de las observaciones
ones(n,1)
(predeterminado) | Vector n por 1 de los valores escalares no negativos
Pesos de las observaciones, especificados como el par separado por comas que consta de 'Weights'
y un vector n por 1 de los valores escalares no negativos, donde n es el número de observaciones.
Tipos de datos: single
| double
Argumentos de salida
mdl
— Modelo lineal
objeto LinearModel
Modelo lineal que representa un ajuste de mínimos cuadrados de la respuesta a los datos, devuelto como objeto LinearModel
.
Si el valor del par nombre-valor 'RobustOpts'
no es []
ni 'ols'
, el modelo no es un ajuste de mínimos cuadrados, pero utiliza la función de ajuste robusto.
Más acerca de
Matriz de términos
Una matriz de términos T
es una matriz t por (p + 1) en la que se especifican los términos de un modelo, donde t es el número de términos, p es el número de variables predictoras y +1 representa la variable de respuesta. El valor de T(i,j)
es el exponente de la variable j
en el término i
.
Por ejemplo, suponga que una entrada incluye tres variables predictoras x1
, x2
y x3
y la variable de respuesta y
con el orden x1
, x2
, x3
e y
. Cada fila de T
representa un término:
[0 0 0 0]
: término constante o intercepto[0 1 0 0]
:x2
; equivalentemente,x1^0 * x2^1 * x3^0
[1 0 1 0]
—x1*x3
[2 0 0 0]
—x1^2
[0 1 2 0]
—x2*(x3^2)
El 0
al final de cada término representa la variable de respuesta. En general, un vector columna de ceros en una matriz de términos representa la posición de la variable de respuesta. Si las variables predictoras y de respuesta se encuentran en una matriz y un vector columna, debe incluir 0
para señalar la variable de respuesta en la última columna de cada fila.
Fórmula
Una fórmula para la especificación de un modelo es un vector de caracteres o escalar de cadena con el formato '
.y
~ terms
'
y
es el nombre de la respuesta.terms
representa los términos de los predictores en un modelo mediante notación de Wilkinson.
Para representar las variables predictoras y de respuesta, utilice los nombres de las variables de la entrada de tabla tbl
o los nombres de las variables especificados mediante VarNames
. El valor predeterminado de VarNames
es {'x1','x2',...,'xn','y'}
.
Por ejemplo:
'y ~ x1 + x2 + x3'
especifica un modelo lineal de tres variables con intercepto.'y ~ x1 + x2 + x3 – 1'
especifica un modelo lineal de tres variables sin intercepto. Tenga en cuenta que las fórmulas incluyen un término constante (intercepto) de forma predeterminada. Para excluir un término constante del modelo, debe incluir–1
en la fórmula.
Una fórmula incluye un término constante a menos que lo elimine de manera explícita con –1
.
Notación de Wilkinson
La notación de 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 dichos términos.
La notación de Wilkinson utiliza estos símbolos:
+
significa que se incluye la siguiente variable.–
significa que no se incluye 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 cuando se repite*
, por lo que^
incluye también los términos de orden inferior.()
agrupa los términos.
Esta tabla muestra ejemplos típicos de la notación de Wilkinson.
Notación de Wilkinson | Términos en notación estándar |
---|---|
1 | Término constante (intercepto) |
x1^k , donde k es un entero positivo | x1 , x12 , ..., x1k |
x1 + x2 | x1 , x2 |
x1*x2 | x1 , x2 , x1*x2 |
x1:x2 | x1*x2 solo |
–x2 | No se incluye x2 |
x1*x2 + x3 | x1 , x2 , x3 , x1*x2 |
x1 + x2 + x3 + x1:x2 | x1 , x2 , x3 , x1*x2 |
x1*x2*x3 – x1:x2:x3 | x1 , x2 , x3 , x1*x2 , x1*x3 , x2*x3 |
x1*(x2 + x3) | x1 , x2 , x3 , x1*x2 , x1*x3 |
Para obtener más información, consulte Wilkinson Notation.
Sugerencias
Para acceder a las propiedades del modelo del objeto
LinearModel
mdl
, puede utilizar la notación de puntos. Por ejemplo,mdl.Residuals
devuelve una tabla de los valores residuales sin procesar, de Pearson, studentizados y estandarizados del modelo.Tras entrenar un modelo, puede generar código C/C++ que prediga las respuestas de los nuevos datos. Generar código C/C++ requiere MATLAB Coder™. Para obtener más detalles, consulte Introduction to Code Generation.
Algoritmos
El algoritmo de ajuste principal es la descomposición QR. Para obtener un ajuste robusto,
fitlm
utiliza la estimación de M para formular las ecuaciones de estimación y las resuelve mediante el método de Iteratively Reweighted Least Squares (IRLS).fitlm
trata un predictor categórico de la siguiente manera:Un modelo con un predictor categórico que tiene L niveles (categorías) incluye L – 1 variables indicadoras. El modelo utiliza la primera categoría como nivel de referencia, por lo que no incluye la variable indicadora en este. Si el tipo de datos del predictor categórico es
categorical
, puede comprobar el orden de las categorías mediantecategories
y reordenarlas conreordercats
para personalizar el nivel de referencia. Para obtener más información sobre cómo crear variables indicadoras, consulte Automatic Creation of Dummy Variables.fitlm
trata el grupo de L – 1 variables indicadoras como una única variable. Si desea tratar las variables indicadoras como variables predictoras diferentes, cree variables indicadoras manualmente mediantedummyvar
. Después utilice las variables indicadoras, excepto la correspondiente al nivel de referencia de la variable categórica, al ajustar un modelo. Para el predictor categóricoX
, si especifica que todas las columnas dedummyvar(X)
y un término de intercepto son predictores, la matriz de diseño pasa a ser de rango deficiente.Los términos de interacción entre un predictor continuo y un predictor categórico con L niveles consisten en el producto elemento por elemento de las L – 1 variables indicadoras con el predictor continuo.
Los términos de interacción entre dos predictores categóricos con L y M niveles consisten en las (L – 1)*(M – 1) variables indicadoras, que incluyen todas las posibles combinaciones de niveles de los dos predictores categóricos.
No puede especificar términos de orden superior en un predictor categórico, puesto que el cuadrado de un indicador es igual a sí mismo.
fitlm
considera que los valoresNaN
,''
(vector de caracteres vacío),""
(cadena vacía),<missing>
y<undefined>
detbl
,X
eY
son valores faltantes.fitlm
no utiliza observaciones con valores faltantes en el ajuste. La propiedadObservationInfo
de un modelo ajustado indica sifitlm
utiliza cada una de las observaciones en el ajuste o no.
Funcionalidad alternativa
Para reducir el tiempo de cálculo en conjuntos de datos de altas dimensiones, ajuste un modelo de regresión lineal mediante la función
fitrlinear
.Para regularizar una regresión, utilice
fitrlinear
,lasso
,ridge
oplsregress
.fitrlinear
regulariza una regresión para conjuntos de datos de altas dimensiones mediante una regresión lasso o ridge.lasso
elimina los predictores redundantes en una regresión lineal mediante lasso o elastic net.ridge
regulariza una regresión con términos correlacionados mediante una regresión ridge.plsregress
regulariza una regresión con términos correlacionados mediante mínimos cuadrados parciales.
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
Arreglos altos
Realice cálculos con arreglos que tienen más filas de las que caben en la memoria.
Esta función es compatible con los arreglos altos para datos con memoria insuficiente con algunas limitaciones.
Si algún argumento de entrada a
fitlm
es un arreglo alto, el resto de entradas deben ser también arreglos altos, lo que incluye a las variables no vacías proporcionadas con los pares nombre-valor'Weights'
y'Exclude'
.El par nombre-valor
'RobustOpts'
no es compatible con los arreglos altos.Para datos altos,
fitlm
devuelve un objetoCompactLinearModel
que contiene la mayoría de las mismas propiedades que un objetoLinearModel
. La principal diferencia es que el objeto compacto es sensible a los requisitos de memoria. El objeto compacto no incluye las propiedades que incluyen los datos o que incluyen un arreglo del mismo tamaño que los datos. El objeto compacto no contiene estas propiedades deLinearModel
:Diagnostics
Fitted
ObservationInfo
ObservationNames
Residuals
Steps
Variables
Puede calcular los valores residuales directamente desde el objeto compacto devuelto por
LM = fitlm(X,Y)
medianteRES = Y - predict(LM,X); S = LM.RMSE; histogram(RES,linspace(-3*S,3*S,51))
Si el objeto
CompactLinearModel
no cuenta con términos de orden inferior que incluyan factores categóricos:No se admiten los métodos
plotEffects
yplotInteraction
.No se admite el método
anova
con la opción'components'
.
Para obtener más información, consulte Arreglos altos para datos con memoria insuficiente.
Arreglos GPU
Acelere código mediante la ejecución en una unidad de procesamiento gráfico (GPU) mediante Parallel Computing Toolbox™.
Esta función es totalmente compatible con los arreglos de GPU. Para obtener más información, consulte Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
Historial de versiones
Introducido en R2013bR2024a: Especificar la estimación de verosimilitud penalizada
fitlm
es compatible ahora con la estimación de verosimilitud penalizada mediante la distribución a priori de Jeffreys. Puede utilizar el método a priori de Jeffreys para reducir el sesgo de la estimación del coeficiente cuando ajuste un modelo de regresión lineal generalizado a un conjunto de datos separables o a un número reducido de muestras. Para penalizar la estimación de verosimilitud, establezca el argumento nombre-valor LikelihoodPenalty
en "jeffreys-prior"
.
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)