Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Regresión lineal

Introducción

Los datos describen explícitamente una relación entre y las variables.modelPredictorRespuesta La regresión lineal se ajusta a un modelo de datos lineal en los coeficientes del modelo. El tipo más común de regresión lineal es a, que puede ajustarse tanto a líneas como a polinomios, entre otros modelos lineales.ajuste de mínimos cuadrados

Antes de modelar la relación entre pares de cantidades, es una buena idea realizar un análisis de correlación para establecer si existe una relación lineal entre estas cantidades. Tenga en cuenta que las variables pueden tener relaciones no lineales, que el análisis de correlación no puede detectar. Para obtener más información, consulte.Correlación lineal

La interfaz de usuario de conexión básica le ayuda a ajustar los datos, por lo que puede calcular los coeficientes del modelo y trazar el modelo encima de los datos.MATLAB® Para ver un ejemplo, vea.Ejemplo: uso de la interfaz de usuario de conexión básica También puede utilizar las funciones y para ajustar los datos a un modelo lineal en los coeficientes.MATLABpolyfitpolyval Para ver un ejemplo, vea.Ajuste programático

Si necesita ajustar los datos con un modelo no lineal, transforme las variables para que la relación sea lineal. Como alternativa, intente ajustar una función no lineal directamente mediante la función, la función o aplicando funciones en el.Statistics and Machine Learning Toolbox™nlinfitOptimization Toolbox™lsqcurvefitCurve Fitting Toolbox™

En este tema se explica cómo:

  • Realice una regresión lineal simple utilizando el operador.\

  • Utilice el análisis de correlación para determinar si dos cantidades están relacionadas para justificar la adaptación de los datos.

  • Ajuste un modelo lineal a los datos.

  • Evalúe la bondad del ajuste trazando los residuos y buscando patrones.

  • Calcule las medidas de bondad de ajuste R2 y ajustado R2

Regresión lineal simple

En este ejemplo se muestra cómo realizar una regresión lineal simple mediante el conjunto de datos.accidents El ejemplo también muestra cómo calcular el coeficiente de determinación

<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
para evaluar las regresiones. El DataSet contiene datos para accidentes de tráfico fatales en Estados Unidos.accidents

La regresión lineal modela la relación entre una variable dependiente o de respuesta

<math display="block">
<mrow>
<mi>y</mi>
</mrow>
</math>
y una o más variables independientes o predictoras
<math display="block">
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<mo>.</mo>
<mo>.</mo>
<mo>.</mo>
<mo>,</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
</mrow>
</math>
. La regresión lineal simple solo considera una variable independiente mediante la relación

<math display="block">
<mrow>
<mi>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>
<mi>x</mi>
<mo>+</mo>
<mi>ϵ</mi>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
es la intercepción y,
<math display="block">
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</math>
es la pendiente (o coeficiente de regresión) y
<math display="block">
<mrow>
<mi>ϵ</mi>
</mrow>
</math>
es el término de error.

Empiece con un conjunto de

<math display="block">
<mrow>
<mi>n</mi>
</mrow>
</math>
valores observados de
<math display="block">
<mrow>
<mi>x</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mi>y</mi>
</mrow>
</math>
dadas por
<math display="block">
<mrow>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mrow>
</math>
,
<math display="block">
<mrow>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mrow>
</math>
, ...,
<math display="block">
<mrow>
<mo stretchy="false">(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
<mo>,</mo>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
<mo stretchy="false">)</mo>
</mrow>
</math>
. Utilizando la relación de regresión lineal simple, estos valores forman un sistema de ecuaciones lineales. Represente estas ecuaciones en forma de matriz como

<math display="block">
<mrow>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo></mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo></mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mo></mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

Dejar

<math display="block">
<mrow>
<mi>Y</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo></mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
<mi>X</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mo></mo>
</mrow>
</mtd>
<mtd>
<mrow>
<mo></mo>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mn>1</mn>
</mrow>
</mtd>
<mtd>
<mrow>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>,</mo>
<mi>B</mi>
<mo>=</mo>
<mrow>
<mo>[</mo>
<mtable>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
</mrow>
</mtd>
</mtr>
</mtable>
<mo>]</mo>
</mrow>
<mo>.</mo>
</mrow>
</math>

La relación es ahora

<math display="block">
<mrow>
<mi>Y</mi>
<mo>=</mo>
<mi>X</mi>
<mi>B</mi>
</mrow>
</math>
.

En MATLAB, puede encontrar

<math display="block">
<mrow>
<mi>B</mi>
</mrow>
</math>
utilizando el operador como.mldivideB = X\Y

Desde el DataSet, cargue los datos de accidentes y los datos de población del estado en.accidentsyx Encuentre la relación de regresión lineal

<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mi>x</mi>
</mrow>
</math>
entre los accidentes en un estado y la población de un estado utilizando el operador.\ El operador realiza una regresión de mínimos cuadrados.\

load accidents x = hwydata(:,14); %Population of states y = hwydata(:,4); %Accidents per state format long b1 = x\y
b1 =       1.372716735564871e-04  

es el coeficiente de pendiente o regresión.b1 La relación lineal es

<math display="block">
<mrow>
<mi>y</mi>
<mo>=</mo>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>1</mn>
</mrow>
</msub>
<mi>x</mi>
<mo>=</mo>
<mn>0</mn>
<mo>.</mo>
<mn>0</mn>
<mn>0</mn>
<mn>0</mn>
<mn>1</mn>
<mn>3</mn>
<mn>7</mn>
<mn>2</mn>
<mi>x</mi>
</mrow>
</math>
.

Calcule los accidentes por estado utilizando la relación.yCalcx Visualice la regresión trazando los valores reales y los valores calculados.yyCalc

yCalc1 = b1*x; scatter(x,y) hold on plot(x,yCalc1) xlabel('Population of state') ylabel('Fatal traffic accidents per state') title('Linear Regression Relation Between Accidents & Population') grid on

Mejore el ajuste mediante la inclusión de una intercepción y

<math display="block">
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
en su modelo como
<math display="block">
<mrow>
<mi>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>
<mi>x</mi>
</mrow>
</math>
. Calcular
<math display="block">
<mrow>
<msub>
<mrow>
<mi>β</mi>
</mrow>
<mrow>
<mn>0</mn>
</mrow>
</msub>
</mrow>
</math>
por relleno con una columna de unos y utilizando el operador.x\

X = [ones(length(x),1) x]; b = X\y
b = 2×1
102 ×

   1.427120171726537
   0.000001256394274

Este resultado representa la relación

<math display="block">
<mrow>
<mi>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>
<mi>x</mi>
<mo>=</mo>
<mn>1</mn>
<mn>4</mn>
<mn>2</mn>
<mo>.</mo>
<mn>7</mn>
<mn>1</mn>
<mn>2</mn>
<mn>0</mn>
<mo>+</mo>
<mn>0</mn>
<mo>.</mo>
<mn>0</mn>
<mn>0</mn>
<mn>0</mn>
<mn>1</mn>
<mn>2</mn>
<mn>5</mn>
<mn>6</mn>
<mi>x</mi>
</mrow>
</math>
.

Visualice la relación trazando en la misma figura.

yCalc2 = X*b; plot(x,yCalc2,'--') legend('Data','Slope','Slope & Intercept','Location','best');

De la figura, los dos ajustes parecen similares. Un método para encontrar el mejor ajuste es calcular el coeficiente de determinación,

<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
.
<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
es una medida de qué tan bien un modelo puede predecir los datos, y cae entre
<math display="block">
<mrow>
<mn>0</mn>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mn>1</mn>
</mrow>
</math>
. Cuanto mayor sea el valor de
<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
, mejor es el modelo para predecir los datos.

Dónde

<math display="block">
<mrow>
<munderover accent="true">
<mrow>
<mi>y</mi>
</mrow>
<mrow></mrow>
<mrow>
<mo>ˆ</mo>
</mrow>
</munderover>
</mrow>
</math>
representa los valores calculados de
<math display="block">
<mrow>
<mi>y</mi>
</mrow>
</math>
Y
<math display="block">
<mrow>
<munderover accent="true">
<mrow>
<mi>y</mi>
</mrow>
<mrow></mrow>
<mrow>
<mo stretchy="false"></mo>
</mrow>
</munderover>
</mrow>
</math>
es la media de
<math display="block">
<mrow>
<mi>y</mi>
</mrow>
</math>
,
<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
se define como

<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
<mo>=</mo>
<mn>1</mn>
<mo>-</mo>
<mfrac>
<mrow>
<munderover>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</munderover>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mrow>
<munderover accent="true">
<mrow>
<mi>y</mi>
</mrow>
<mrow></mrow>
<mrow>
<mo>ˆ</mo>
</mrow>
</munderover>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
<mrow>
<munderover>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>i</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>n</mi>
</mrow>
</munderover>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mrow>
<mi>y</mi>
</mrow>
<mrow>
<mi>i</mi>
</mrow>
</msub>
<mo>-</mo>
<munderover accent="true">
<mrow>
<mi>y</mi>
</mrow>
<mrow></mrow>
<mrow>
<mo stretchy="false"></mo>
</mrow>
</munderover>
<mo>)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mfrac>
<mo>.</mo>
</mrow>
</math>

Encuentre el mejor ajuste de los dos ajustes comparando los valores de

<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
. Como el
<math display="block">
<mrow>
<msup>
<mrow>
<mi>R</mi>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
valores muestran, el segundo ajuste que incluye una intersección de y es mejor.

Rsq1 = 1 - sum((y - yCalc1).^2)/sum((y - mean(y)).^2)
Rsq1 =     0.822235650485566  
Rsq2 = 1 - sum((y - yCalc2).^2)/sum((y - mean(y)).^2)
Rsq2 =     0.838210531103428  

Los residuos y la bondad de ajuste

Los residuales son la diferencia entre los valores de la variable de respuesta (dependiente) y los valores que un modelo.observedpredicts Cuando se ajusta un modelo que es apropiado para sus datos, los residuales aproximan errores aleatorios independientes. Es decir, la distribución de los residuos no debe exhibir un patrón discernible.

La producción de un ajuste mediante un modelo lineal requiere minimizar la suma de los cuadrados de los residuos. Esta minimización produce lo que se llama un ajuste de mínimos cuadrados. Puede obtener información sobre la "bondad" de un ajuste al examinar visualmente una gráfica de los residuos. Si la gráfica residual tiene un patrón (es decir, los puntos de datos residuales no parecen tener una dispersión aleatoria), la aleatoriedad indica que el modelo no se ajusta correctamente a los datos.

Evalúe cada ajuste que realice en el contexto de sus datos. Por ejemplo, si el objetivo de ajustar los datos es extraer los coeficientes que tienen un significado físico, es importante que el modelo refleje la física de los datos. La comprensión de lo que sus datos representan, cómo se miden y cómo se modelan es importante cuando se evalúa la bondad del ajuste.

Una medida de bondad de ajuste es la, o Rcoeficiente de determinación2 (pronunciado r-cuadrado). Esta estadística indica qué tan estrechamente los valores que obtiene al ajustar un modelo coinciden con la variable dependiente que el modelo pretende predecir. Los estadísticos a menudo definen R2 utilizando la varianza residual de un modelo ajustado:

R2 = 1 – SSresid /SStotal

Ssresid es la suma de los residuales al cuadrado de la regresión. Sstotal es la suma de las diferencias cuadradas a partir de la media de la variable dependiente ().total sum of squares Ambos son escalares positivos.

Para obtener información sobre cómo calcular R2 Cuando utilice la herramienta de ajuste básico, consulte.Derivar R2, el coeficiente de determinación Para obtener más información sobre el cálculo del R2 Estadística y su generalización multivariada, siga leyendo aquí.

Ejemplo: Computing R2 de Polynomial FITS

Puede derivar R2 de los coeficientes de una regresión polinómica para determinar cuánta varianza se explica en un modelo lineal, como se describe en el ejemplo siguiente:y

  1. Cree dos variables y, a partir de las dos primeras columnas de la variable en el archivo de datos:xycountcount.dat

    load count.dat x = count(:,1); y = count(:,2);

  2. Se utiliza para calcular una regresión lineal que predice desde:polyfityx

    p = polyfit(x,y,1)  p =     1.5229   -2.1911 

    es la pendiente y es la intercepción del predictor lineal.p(1)p(2) También puede obtener coeficientes de regresión utilizando el.Interfaz de usuario de ajuste básico

  3. Llamada a utilizar para predecir, llamando al resultado:polyvalpyyfit

    yfit = polyval(p,x);

    El uso evita que escriba la ecuación de ajuste usted mismo, que en este caso se ve como:polyval

    yfit =  p(1) * x + p(2);
  4. Calcule los valores residuales como un vector de números firmados:

    yresid = y - yfit;

  5. Cuadrar los residuos y totarlos para obtener la suma residual de los cuadrados:

    SSresid = sum(yresid.^2);

  6. Calcule la suma total de los cuadrados multiplicando la varianza por el número de observaciones menos:yy1

    SStotal = (length(y)-1) * var(y); 

  7. Compute R2 utilizando la fórmula dada en la introducción de este tema: Esto demuestra que la ecuación lineal predice el 87% de la varianza en la variable.

    rsq = 1 - SSresid/SStotal  rsq =     0.8707
    1.5229 * x -2.1911y

Computación ajustada R2 para las regresiones polinómicas

Por lo general, puede reducir los residuos en un modelo mediante el ajuste de un polinomio de mayor grado. Cuando agrega más términos, aumenta el coeficiente de determinación, R2. Usted obtiene un ajuste más cercano a los datos, pero a expensas de un modelo más complejo, para el que R2 no puede tener en cuenta. Sin embargo, un refinamiento de esta estadística, ajustado R2, incluye una penalización por el número de términos en un modelo. Ajustado R2, por lo tanto, es más adecuado para comparar cómo diferentes modelos encajan con los mismos datos. El R ajustado2 se define como:

R2adjusted = 1-(SSresid /SStotal) * ((-1)/(--1))nnd

donde está el número de observaciones en sus datos, y es el grado del polinomio.nd (Un ajuste lineal tiene un grado de 1, un ajuste cuadrático 2, un ajuste cúbico 3, y así sucesivamente.)

En el ejemplo siguiente se repiten los pasos del ejemplo anterior, pero se realiza un ajuste cúbico (grado 3) en lugar de un ajuste lineal (grado 1).Ejemplo: Computing R2 de Polynomial FITS Desde el ajuste cúbico, computa tanto la simple como la ajustada R2 valores para evaluar si los términos adicionales mejoran el poder predictivo:

  1. Cree dos variables y, a partir de las dos primeras columnas de la variable en el archivo de datos:xycountcount.dat

    load count.dat x = count(:,1); y = count(:,2);

  2. Llame para generar un ajuste cúbico para predecir desde:polyfityx

    p = polyfit(x,y,3)  p =    -0.0003    0.0390    0.2233    6.2779

    es la intercepción del predictor cúbico.p(4) También puede obtener coeficientes de regresión utilizando el.Interfaz de usuario de ajuste básico

  3. Llame para utilizar los coeficientes en predecir, nombrando el resultado:polyvalpyyfit

    yfit = polyval(p,x);

    evalúa la ecuación explícita que podría introducir manualmente como:polyval

    yfit =  p(1) * x.^3 + p(2) * x.^2 + p(3) * x + p(4);

  4. Calcule los valores residuales como un vector de números firmados:

    yresid = y - yfit;

  5. Cuadrar los residuos y totarlos para obtener la suma residual de los cuadrados:

    SSresid = sum(yresid.^2);

  6. Calcule la suma total de los cuadrados multiplicando la varianza por el número de observaciones menos:yy1

    SStotal = (length(y)-1) * var(y); 

  7. Compute simple R2 para el ajuste cúbico utilizando la fórmula dada en la introducción de este tema:

    rsq = 1 - SSresid/SStotal  rsq =     0.9083

  8. Por último, Compute ajustado R2 para tener en cuenta los grados de libertad: El R ajustado

    rsq_adj = 1 - SSresid/SStotal * (length(y)-1)/(length(y)-length(p))  rsq_adj =     0.8945
    2, 0,8945, es más pequeña que la simple R2,. 9083. Proporciona una estimación más confiable de la potencia de su modelo polinómico para predecir.

En muchos modelos de regresión polinómica, la adición de términos a la ecuación aumenta tanto R2 y ajustado R2. En el ejemplo anterior, el uso de un ajuste cúbico aumentó ambas estadísticas en comparación con un ajuste lineal. (Puede calcular el ajuste de R2 para el ajuste lineal por sí mismo para demostrar que tiene un valor más bajo.) Sin embargo, no siempre es cierto que un ajuste lineal es peor que un ajuste de orden superior: un ajuste más complicado puede tener una R más baja ajustada2 que un ajuste más simple, indicando que el aumento de la complejidad no está justificado. Además, mientras que R2 siempre varía entre 0 y 1 para los modelos de regresión polinómica que genera la herramienta de ajuste básico, se ajusta R2 para algunos modelos puede ser negativo, lo que indica que un modelo que tiene demasiados términos.

La correlación no implica causalidad. Siempre interprete los coeficientes de correlación y determinación cautelosamente. Los coeficientes solo cuantifican la cantidad de varianza en una variable dependiente que un modelo ajustado elimina. Estas medidas no describen la forma en que su modelo (o las variables independientes que seleccione) son para explicar el comportamiento de la variable que predice el modelo.

Ajuste de datos con funcionesCurve Fitting Toolbox

El software amplía la funcionalidad básica al habilitar las siguientes capacidades de ajuste de datos:Curve Fitting ToolboxMATLAB

  • Ajuste paramétrico lineal y no lineal, incluidos mínimos cuadrados lineales estándar, mínimos cuadrados no lineales, mínimos cuadrados ponderados, mínimos cuadrados restringidos y procedimientos de ajuste robustos

  • Ajuste no paramétrico

  • Estadísticas para determinar la bondad del ajuste

  • Extrapolación, diferenciación e integración

  • Cuadro de diálogo que facilita la seccionamiento de datos y el suavizado

  • Guardar los resultados de ajuste en varios formatos, incluidos los archivos de código, MAT-files y variables de espacio de trabajoMATLAB

Para obtener más información, consulte el Curve Fitting Toolbox Documentación.