Login Form

En este artículo hablaremos del Método de Mínimos Cuadrados el cuál nos permite aproximar una función a un conjunto de datos obtenidos de manera experimental. El método fue desarrollado por Carl Friedrich Gauss cuando aún era muy joven y aunque parece que fue publicado hasta el año de 1809, ya en 1801 había sido usado para describir la trayectoria del planeta Ceres.

Este método se usa en una gran variedad de disciplinas para crear modelos en base a conjuntos de datos recabados a partir de mediciones por ejemplo: en geología se usa para modelar terrenos en base a las mediciones de latitud, longitud y altitud realizadas en distintos puntos, en ecología se utiliza para modelar la producción de nutrientes de una planta y en negocios, para modelar la fluctuación estacional de las ventas de un producto.

 

Para comprender el método, hace falta recordar algunos conceptos de algebra lineal los cuales listamos a continuación: 

  • Ecuación matricial \({A\bf{x=b}}\)
  • Espacio Columna
  • Longitud de un vector y distancia entre dos vectores
  • Producto interno y Ortogonalidad
  • Proyecciones y Descomposición Ortogonal

 

Ecuación matricial Ax=b

Recordemos que un sistema de ecuaciones lineales se puede ver como una ecuación vectorial donde los coeficientes del lado izquierdo de la ecuación y las cantidades del lado derecho se consideran vectores columna y las incógnitas, los términos escalares que al multplicarlos por los vectores del lado izquierdo de la ecuación permitan que el resultado de su suma sea igual al vector resultante. En otras palabras, se debe encontrar una combinación lineal de los vectores de la izquierda que de como resultado el vector de la derecha.

El sistema de ecuaciones se puede escribir en términos de la multiplicación de una matriz \(A\) por un vector columna \({\bf{x}}\) que de como resultado un vector \({\bf{b}}\) (\(A{\bf{x=b}}\)). La matriz \(A\) contiene coeficientes y el vector \({\bf{x}}\) las incógnitas que queremos encontrar para que al ser multiplicado por la matriz \(A\) nos de como resultado el vector \({\bf{b}}\).

 

 

 Espacio columna

Recordemos también, que la expansión lineal de un conjunto de vectores en \(\mathbb{R}^n\)  \({span\{\bf{v_1,v_2,...,v_n}}\}\) será siempre un subespacio de \(\mathbb{R}^n\). Pues bien, las columnas de la matriz \(A\) están formadas justamente por una serie de vectores columna cuya expansión lineal forma precisamente el espacio columna de la matriz \(A\) (\(Col A)\). Esto implica que el espacio columna está formado por todos los vectores \({\bf{b}}\) para los cuales la ecuación \(A{\bf{x=b}}\) tiene solución. En otras palabras, el vector \({\bf{b}}\) debe estar en el espacio columna de \(A\) para que alguna combinación lineal de \(A\) con pesos determinados por \({\bf{x}}\) lo pueda generar. Si \({\bf{b}}\) no está en el espacio columna el sistema \(A{\bf{x=b}}\) es inconsistente.

 

Longitud de un vector y distancia entre vectores

La longitud de un vector está dada por:

\[\|\bf{v}\|=\sqrt{\bf{v_1^2+v_2^2+...+v_n^2}}\]

En realidad la longitud está definida en términos del producto interno que se describe más abajo del cuál se deriva la fórmula mostrada. Por último, la distancia entre dos vectores \(\bf{u}\) y \(\bf{v}\) es simplemente la longitud del vector \(\bf{u-v}\), es decir: \(dist(\bf{u},\bf{v})=\|\bf{u-v}\|\) .

 

Producto Interno y Ortogonalidad

El producto interno nos permite tener una medida de qué tan alineados en sus direcciones se encuentran dos vectores. La palabra ortogonal en el algebra lineal indica perpendicularidad, es decir, el que dos vectores sean ortogonales quiere decir que están apuntando a dos direcciones tales que forman un ángulo de 90° entre ellos. La manera para verificar si dos vectores tienen un ángulo de 90 grados es checando que el resultado de su producto interno sea 0. He encontrado dos buenas explicaciones acerca de esto, de hecho, las imágenes que presento son de los libros donde las leí; la primera es del libro An Introduction to Neural Networks de Kevin Gurney y la segunda de Linear Algebra and Its Applications, 4th Edition de David C. Lay que por cierto recomiendo ampliamente para un primer acercamiento de calidad al estudio del Algebra Lineal. La primera explicación es que el producto interno se puede definir en términos del coseno del ángulo entre los dos vectores:

\[\bf{v.w}=\bf{\|v\|\|w\|}cos\phi\]

Si pudieramos fijar uno de ellos e ir rotando el otro, cuando estuvieran en un ángulo de 90° el producto daría cero debido al coseno:

La segunda toma otro enfoque e indica que dos vectores \(\bf{u}\) y \(\bf{v}\) son perpendiculares únicamente si la distancia de \(\bf{u}\)  a  \(\bf{v}\)  es igual a la distancia de \(\bf{u}\) a \(\bf{-v}\).

Lo anterior da origen a una cierta ecuación que aquí está de más la cuál sólo es cierta si \(\bf{u.v}\)  es igual a cero.  

El que un conjunto de vectores sea ortogonal es una cualidad deseable para ciertos propósitos ya que permite simplificar algunas cosas, por ejemplo: una base ortogonal es mucho mejor que una base que no es ortogonal ya que los pesos de la combinación lineal requerida para expresar un vector \(\bf{x}\) en términos de la base pueden ser obtenidos de forma directa mediante unas ecuaciones fáciles de llevar a cabo mientras que si la base no es ortogonal, hay que resolver un sistema de ecuaciones lineales. Más aún, si la base es ortonormal, es decir, sus vectores son ortogonales entre sí y la longitud de cada uno de ellos es 1, mejor aún, los cálculos se simplifican más y de hecho para algunas aplicaciones que estaremos detallando más adelante, contar con una base ortonormal es un requisito.

El producto interno entre dos vectores está dado por la siguiente fórmula:

\[\bf{u.v=u^Tv=u_1v1+u_2v_2+...+u_nv_n}\]

 

Proyecciones y Descomposición ortogonal

Ahora bien, si tenemos dos vectores \(\bf{u}\) y \(\bf{v}\), podríamos proyectar ortogonalmente \(\bf{v}\) en \(\bf{u}\) encontrando algún múltiplo escalar de \(\bf{u}\) (\(\alpha\bf{u}\)) donde el vector resultante \(\bf{v}-\alpha\bf{u}\) sea ortogonal a \(\bf{u}\). Imagínense esto como el punto a lo largo de la línea que pasa por el origen y \(\bf{u}\) donde caería la sombra si pudieramos iluminar exactamente desde arriba al vector \(\bf{v}\).

Por simplicidad, omitiremos en este momento el desarrollo matemático que da origen a la fórmula de la proyección ortogonal de \(\bf{v}\) en \(\bf{u}\):

\[\bf{û}=proj_u\bf{v}=\frac{\bf{v.u}}{\bf{u.u}}\bf{u}\]

Al vector resultante \(\bf{û}\) se le conoce como la proyección ortogonal de \(\bf{v}\) en \(\bf{u}\) y el vector ortogonal a \(\bf{u}\) (\(\bf{v-û}\)) se le conoce como el componente de \(\bf{v}\) ortogonal a \(\bf{u}\). La proyección anterior fue sobre el vector \(\bf{u}\), pero podríamos haberlo generalizado a la línea \(L\) cubierta por \({span\{\bf{u}}\}\). La fórmula habría sido la misma y el resultado el mismo. Da la casualidad que nuestro  vector \(\bf{û}\), es el único vector \(\bf{û}\) en \(L\) donde \(\bf{v-û}\) es ortogonal a \(L\) y también resulta que \(\bf{û}\) es el punto más cercano a \(\bf{v}\) sobre \(L\), es decir, que \(\|\bf{v-û}\|<\|\bf{v-x}\|\) para cualquier \(\bf{x}\) diferente a \(\bf{û}\) sobre \(L\).

Lo anterior es generalizable a subespacios de más dimensiones. Si en vez de \(L\) trabajaramos con un subespacio de dos dimensiones \(W\) del cuál tenemos una base ortogonal formada por dos vectores \(\bf{u_1}\) y \(\bf{u_2}\) cuyo plano está generado por \({span\{\bf{u_1,u_2}}\}\), la proyección ortogonal de \(\bf{v}\) en \(W\) sería la suma de la proyección de \(\bf{v}\) en \(\bf{u_1}\) más la suma de la proyección de \(\bf{v}\) en \(\bf{u_2}\), es decir, la suma de las proyecciones unidimensionales sobre cada uno de los componentes de la base ortogonal del subespacio:

\[\bf{û}=proj_u\bf{v}=\frac{\bf{v.u_1}}{\bf{u_1.u_1}}\bf{u_1}+\frac{\bf{v.u_2}}{\bf{u_2.u_2}}\bf{u_2}\]

Como se puede apreciar, la fórmula es la misma que la usada para la proyección de \(\bf{v}\) en \(L\) pero añadiendo las demás dimensiones que aporta cada uno de los componentes de la base. Igual que con la proyección de \(\bf{v}\) sobre \(L\), aquí se sigue cumpliendo que \(\bf{û}\) es el único vector donde \(\bf{v-û}\) es ortogonal a \(W\) y es el vector más cercano a \(\bf{v}\) en \(W\), es decir, \(\|\bf{v-û}\|<\|\bf{v-x}\|\) para cualquier \(\bf{x}\) en \(W\) diferente a \(\bf{û}\). En general, para \(n\) dimensiones, la proyección está dada por:

\[\bf{û}=proj_u\bf{v}=\frac{\bf{v.u_1}}{\bf{u_1.u_1}}\bf{u_1}+\frac{\bf{v.u_2}}{\bf{u_2.u_2}}\bf{u_2} +...+\frac{\bf{v.u_n}}{\bf{u_n.u_n}}\bf{u_n}\]

La descomposición ortogonal de un vector v se refiere a expresar el vector como la suma de dos vectores donde el primero es la proyección ortogonal de v en un subespacio W del cuál se tiene una base ortogonal y el segundo sería el componente ortogonal de v en W.

 

Mínimos cuadrados

La proyección ortogonal de un vector en un subespacio \(W\) es la idea principal del método de mínimos cuadrados. Cuando se tiene un sistema \(A{\bf{x=b}}\) que no tiene solución, lo más que se puede hacer es dar una solución \(\bf{\hat{x}}\) que de como resultado un vector \(\bf{\hat{b}}\) lo más cercano posible a \({\bf{b}}\). La solución obviamente debe estar dentro de \(Col A\) por lo que \(\|\bf{b-\hat{b}}\|<\|\bf{b-\hat{c}}\|\)  para todo \(\bf{\hat{c}}\) dentro de \(Col A\) diferente de \(\bf{\hat{b}}\). Para esto podemos utilizar la proyección ortogonal de \({\bf{b}}\) en \(Col A\) por lo que \(\bf{\hat{b}}=proj_{Col A}\bf{b}\).

 Como \(\bf{\hat{b}}\) está en \(Col A\), nuestro sistema \(A\bf{\hat{x}=\hat{b}}\) debe ser consistente y el vector \(\bf{b-\hat{b}}\) debe ser ortogonal a \(Col A\), incluyendo las columnas de \(A\) que forman la base para \(Col A\) por lo que el producto interno de \(\bf{b-\hat{b}}\) y cualquier vector de \(Col A\) debe ser cero. Si \(a_j\) es una columna de \(A\), entonces \(a_j.(\bf{b-\hat{b}})=0\). Como \(\bf{\hat{b}=A\hat{x}}\), entonces \(a_j.(\bf{b-A\hat{x}})=0\).

Lo anterior se puede expresar también como el producto de la multiplicación de dos matrices si en vez de usar el vector columna \(a_j\) usamos \(a_j^T\) ya que \(\bf{u.v=u^Tv}\) por lo que \(a_j^T(\bf{b-A\hat{x}})=0\). Podríamos incluso usar de una sola vez \(A^T\) y tendríamos \(A^T\bf{(b-A\hat{x})}=0\).

Manipulando la ecuación anterior tenemos que:

\[A^T\bf{(b-A\hat{x})}=0\]

\[A^T\bf{b-A^TA\hat{x}}=0\]

\[A^TA\bf{\hat{x}}=A^T\bf{b}\]

\[(A^TA)\hat{x}=A^T\bf{b}\]

 

 Ese es precisamente el sistema de ecuaciones que hay que resolver para poder dar una aproximación a \(\bf{b}\) y se llama sistema de ecuaciones normales de \(A\bf{x=b}\).

 Para ver cómo se relacionan todos los conceptos que hemos dado haremos un ejemplo sencillo en el cuál, en base a un sistema inconsistente del cuál contamos con \(A\) y \(\bf{b}\), resolveremos el sistema de ecuaciones normales con lo que tendremos la solución \(\bf{\hat{x}}\). Esta solución \(\bf{\hat{x}}\), aplicada a la matriz \(A\) debería darnos la proyección \(\bf{\hat{b}}\) de \(\bf{b}\) en \(Col A\) por lo que una vez obtenida \(\bf{\hat{x}}\), verificaremos obteniendo \(\bf{\hat{b}}\) mediante \(A\bf{\hat{x}=\hat{b}}\). Para verificar si es igual a \(proj_{Col A}\bf{b}\), proyectaremos \(\bf{b}\) en \(ColA\) mediante la fórmula usual. Para facilitar las cosas, desde un inicio \(A\) tendrá columnas ortogonales ya que si no fuera así, primero deberíamos ortogonalizarlas mediante el proceso de Gram-Schmidt por lo que nos ahorraremos ese paso si desde un inicio las definimos ortogonales. \(proj_{Col A}\bf{b}\) debería ser igual a \(A\bf{\hat{x}=\hat{b}}\). Para finalizar, verificaremos que \(\bf{b-\hat{b}}\) sea ortogonal a las columnas de \(A\), si es así, es ortogonal a \(Col A\). En resumen:

  1. Resolver el sistema de ecuaciones normales para obtener \(\bf{\hat{x}}\).
  2. Evaluar \(A\bf{\hat{x}}\) para obtener \(\bf{\hat{b}}\).
  3. Proyectar \(\bf{b}\) en \(Col A\) y verficar que \(proj_{Col A}\bf{b=\hat{b}}\).
  4. Verificar si \(\bf{b-\hat{b}}\) es ortogonal a las columnas de \(A\).

Ejemplo:

 \[{\bf{A = }}\left[ {\begin{array}{*{20}{c}}
{\bf{4}}&{\bf{0}}\\
{\bf{0}}&{\bf{2}}\\
{\bf{2}}&{\bf{0}}
\end{array}} \right]{\bf{b = }}\left[ {\begin{array}{*{20}{c}}
{\bf{2}}\\
{\bf{0}}\\
{{\bf{11}}}
\end{array}} \right]\]

 Para comprobar que es inconsistente, podemos transformar la matriz aumentada a su forma escalonada reducida (no se muestra aquí el procedimiento) lo cuál resulta en la siguiente forma:

\[\left[ {\begin{array}{*{20}{c}}
{\bf{1}}&{\bf{0}}&{\bf{0}}\\
{\bf{0}}&{\bf{1}}&{\bf{0}}\\
{\bf{0}}&{\bf{0}}&{\bf{1}}
\end{array}} \right]\]

 La última fila indica un sistema inconsistente por lo que a continuación procederemos con los pasos mencionados anteriormente:

1. Resolver el sistema de ecuaciones normales \(\bf{(A^TA)\hat{x}}=\bf{A^Tb}\) para obtener \(\bf{\hat{x}}\).

 \[{\bf{A^TA = }}\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
4&0
\end{array}}&1
\end{array}}\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
0&2
\end{array}}&0
\end{array}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
4&0\\
0&2\\
1&0
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{17}&0\\
0&4
\end{array}} \right]\]

  \[{\bf{A^Tb = }}\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
4&0
\end{array}}&1
\end{array}}\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
0&2
\end{array}}&0
\end{array}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
2\\
0\\
{11}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{19}\\
0
\end{array}} \right]\]

 

Resolviendo \(\bf{(A^TA)\hat{x}}=\bf{A^Tb}\) mediante la transformación a la forma escalonada reducida de la matriz aumentada:

\[\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{17}&0
\end{array}}&{19}
\end{array}}\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
0&4
\end{array}}&0
\end{array}}
\end{array}} \right] \~\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&0
\end{array}}&{1.1176}
\end{array}}\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
0&1
\end{array}}&0
\end{array}}
\end{array}} \right]\]

\[{\bf{\hat{x}}} = \left[ {\begin{array}{*{20}{c}}
{1.1176}\\
0
\end{array}} \right]\]

 

2. Evaluar \(\bf{A\hat{x}}\) para obtener \(\bf{\hat{b}}\).

\[{\bf{\hat{b}}} = {\bf{A\hat{x}}} = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
4\\
0
\end{array}}&{\begin{array}{*{20}{c}}
0\\
2
\end{array}}\\
1&0
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{1.1176}\\
0
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{4.4704}\\
{\begin{array}{*{20}{c}}
0\\
{1.1176}
\end{array}}
\end{array}} \right]\]

 

3. Proyectar \(\bf{b}\) en \(Col\bf{ A}\) y verficar que \(proj_{Col A}\bf{b=\hat{b}}\).

\[Col{\bf{A}} = span\left\{ {\left[ {\begin{array}{*{20}{c}}
4\\
0\\
1
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
0\\
2\\
0
\end{array}} \right]} \right\}\]

 

\[pro{j_{ColA}}{\bf{b}} = 1.1176\left[ {\begin{array}{*{20}{c}}
4\\
0\\
1
\end{array}} \right] + 0\left[ {\begin{array}{*{20}{c}}
0\\
2\\
0
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{4.4704}\\
{\begin{array}{*{20}{c}}
0\\
{1.1176}
\end{array}}
\end{array}} \right]\]

Como se puede ver, \(proj_{Col A}\bf{b=\hat{b}}\)

 

4. Verificar si \(\bf{b-\hat{b}}\) es ortogonal a las columnas de \(\bf{A}\).

\[{\bf{a_1}} = \left[ {\begin{array}{*{20}{c}}
4\\
0\\
1
\end{array}} \right]\]

\[{\bf{a}}2 = \left[ {\begin{array}{*{20}{c}}
0\\
2\\
0
\end{array}} \right]\]

 \[{\bf{b}} - {\bf{\hat{b}}} = \left[ {\begin{array}{*{20}{c}}
2\\
0\\
{11}
\end{array}} \right] - \left[ {\begin{array}{*{20}{c}}
{4.4704}\\
0\\
{1.1176}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{ - 2.4704}\\
0\\
{9.8824}
\end{array}} \right]\]

 

\[({\bf{b}} - {\bf{\hat{b}}}) \bullet {\bf{a1}} = \left[ {\begin{array}{*{20}{c}}
{ - 2.4704}\\
0\\
{9.8824}
\end{array}} \right] \bullet \left[ {\begin{array}{*{20}{c}}
4\\
0\\
1
\end{array}} \right] =  - 9.8816 + 9.8824 = 0.0008\]

\[({\bf{b}} - {\bf{\hat{b}}})\bullet{\bf{a_2}} = \left[ {\begin{array}{*{20}{c}}
{ - 2.4704}\\
0\\
{9.8824}
\end{array}} \right] \bullet \left[ {\begin{array}{*{20}{c}}
0\\
2\\
0
\end{array}} \right] = 0\]

Como se puede apreciar hay ahí un pequeño error por el número de cifras decimales que usé para el ejemplo por lo que en vez de cero tenemos 0.0008 para el primer cálculo. Quizá esto se resolvería si utilizaramos fracciones en vez de números reales pero bueno, existe un área llamada algebra lineal númerica que se encarga justo de esto y como se puede apreciar,  sí es ortogonal.

 

Aplicaciones a modelos lineales

El ejemplo anterior fue solo para ilustrar el proceso de resolución y verificar que los resultados correspondan con la explicación dada. A continuación daremos dos ejemplos prácticos usando dos variables donde a partir de un conjunto de datos, podamos aproximar una fórmula que modele el comportamiento de los mismos para poder entender su relación y hacer predicciones a futuro. En estadística, a esto se le conoce como regresión lineal. Suponiendo que tuvieramos un conjunto de datos \( (x_1,y_1),(x_2,y_2)... (x_n,y_n)\) y quisieramos una fórmula que nos permitiera predecir \(y\) en base a \(x\) y que en una gráfica pareciera que yacen a lo largo de una línea recta, podríamos intentar usar la ecuación de la recta \(y=mx+b\) para modelarlos. En estadística la notación utilizada es diferente. En vez de \(y=mx+b\) se utiliza \(y=\beta_0 + \beta_1x\). Lo que queremos entonces es encontrar los valores de \(\beta_0\) y \(\beta_1\) que permitan que una línea se ajuste lo mejor posible al conjunto de datos observado.

Nuestro objetivo entonces es poder crear nuestra matriz \(A\) y nuestro vector \({\bf{b}}\) para poder resolver el sistema de ecuaciones normales. Del mismo modo que la ecuación de la recta tiene otra notación, nuestro sistema de ecuaciones también tiene otra notación. En vez de usar \(A{\bf{x=b}}\), en estadística se utiliza \(X\beta=\bf{y}\) donde \(X\) es la matriz de diseño (equivalente a \(A\)), \(\beta\) es el vector parámetro (los pesos que hay que encontrar) y \(\bf{y}\) es el vector observado (sería nuestra \(\bf{b}\) en \(A\bf{x=b}\)).

La manera para crear el sistema de ecuaciones lineales y por ende, la matriz de diseño \(\beta\) y el vector observado \(\bf{y}\) sería la siguiente:

Por cada punto observado \((x_i,y_i\)), nosotros tendremos un punto en nuestra línea \((x_i,\beta_0 + \beta_1x\)). Suponiendo que todos los puntos observados se encuentran en realidad a lo largo de la misma línea se tendría que:

\[\begin{array}{*{20}{c}}
{\beta_0 + \beta_1x_1=y_1}\\
{\beta_0 + \beta_1x_2=y_2}\\
{...}\\
{\beta_0 + \beta_1x_n=y_n}
\end{array}\]

 

Nuestras incógnitas son \(\beta_0\) y \(\beta_1\) por lo que podemos escribir nuestro sistema de la siguiente manera:

\[X = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{1}\\
{1}\\
{...}\\
{1}
\end{array}}&{\begin{array}{*{20}{c}}
{x_1}\\
{x_2}\\
{...}\\
{x_n}
\end{array}}
\end{array}} \right],\beta = \left[ {\begin{array}{*{20}{c}}
{\beta_0}\\
{\beta_1}
\end{array}} \right],{\bf{y}} = \left[ {\begin{array}{*{20}{c}}
{y_1}\\
{y_2}\\
{...}\\
{y_n}
\end{array}} \right]\]

La primera columna contiene puro 1 ya que \(\beta_0+\beta_1x\) se puede ver como un polinomio de la forma \(\beta_0x^0+\beta_1x^1\) donde \(x^0=1\) por lo que \(\beta_0x^0=\beta_0\).

 Supongamos que tenemos los siguientes puntos: \((2,3),(5,6),(10,8),(12,10),(16,15)\). Siguiendo el razonamiento indicado tendríamos que:

\[X = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{1}\\
{1}\\
{1}\\
{1}\\
{1}
\end{array}}&{\begin{array}{*{20}{c}}
{2}\\
{5}\\
{10}\\
{12}\\
{16}
\end{array}}
\end{array}} \right],\beta = \left[ {\begin{array}{*{20}{c}}
{\beta_0}\\
{\beta_1}
\end{array}} \right],{\bf{y}} = \left[ {\begin{array}{*{20}{c}}
{3}\\
{6}\\
{8}\\
{10}\\
{15}
\end{array}} \right]\]

Obtenemos nuestra \(A\) en el sistema de ecuaciones normales que sería \(A=A^TA=X^TX\) y para obtener nuestra \(\bf{b}\) tendríamos que \(\bf{b}=A^T\bf{b}=X^T\bf{y}\).

 

\[A = X^TX = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&1
\end{array}}&1
\end{array}}&1
\end{array}}&1
\end{array}}\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
2&5
\end{array}}&{10}
\end{array}}&{12}
\end{array}}&{16}
\end{array}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
1&2\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1\\
1
\end{array}}\\
1
\end{array}}\\
1
\end{array}}&{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
5\\
{10}
\end{array}}\\
{12}
\end{array}}\\
{16}
\end{array}}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
5&{45}\\
{45}&{529}
\end{array}} \right]\]

 

\[{\bf{b}} = X^T{\bf{y}} = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&1
\end{array}}&1
\end{array}}&1
\end{array}}&1
\end{array}}\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
2&5
\end{array}}&{10}
\end{array}}&{12}
\end{array}}&{16}
\end{array}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
3\\
6
\end{array}}\\
8\\
{10}\\
{15}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{42}\\
{476}
\end{array}} \right]\]

Nuestra matriz aumentada \([A \bf{b}]\) sería:

\[\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&{45}
\end{array}}&{42}\\
{\begin{array}{*{20}{c}}
{45}&{529}
\end{array}}&{476}
\end{array}} \right]\]

Resolviendo el sistema tenemos que:

\[\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&0
\end{array}}&{1.2871}\\
{\begin{array}{*{20}{c}}
0&1
\end{array}}&{0.7903}
\end{array}} \right]\]

Por lo que \(\beta_0=1.2871\) y \(\beta_1=0.7903\). Nuestra ecuación de la recta es \(y=1.2871+0.7903x\). A continuación se deja un código en MatLab que realiza estos cálculos y la gráfica que genera de los puntos y de la línea que los aproxima:

 

 

 

 

El siguiente ejemplo considera una seria de puntos que gráficamente indican que se podrían modelar a través de la ecuación de una parábola. La ecuación de la parábola sería: \(y=\beta_0 + \beta_1x+\beta_2x^2=y_1\) Siguiendo el mismo razonamiento que en el ejemplo anterior, si todos los puntos estuvieran realmente a lo largo de la parábola tendríamos que:
\[\begin{array}{*{20}{c}}
{\beta_0 + \beta_1x_1+\beta_2x_1^2=y_1}\\
{\beta_0 + \beta_1x_2+\beta_2x_2^2=y_2}\\
{...}\\
{\beta_0 + \beta_1x_n+\beta_2x_n^2=y_n}
\end{array}\]

 

\[X = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{1}\\
{1}\\
{...}\\
{1}
\end{array}}&{\begin{array}{*{20}{c}}
{x_1}\\
{x_2}\\
{...}\\
{x_n}
\end{array}}&{\begin{array}{*{20}{c}}
{x_1^2}\\
{x_2^2}\\
{...}\\
{x_n^2}
\end{array}}
\end{array}} \right],\beta = \left[ {\begin{array}{*{20}{c}}
{\beta_0}\\
{\beta_1}\\
{\beta_2}
\end{array}} \right],{\bf{y}} = \left[ {\begin{array}{*{20}{c}}
{y_1}\\
{y_2}\\
{...}\\
{y_n}
\end{array}} \right]\]

Como se puede ver, aunque la \(x\) se está elevando al cuadrado, el sistema sigue siendo lineal en el sentido de que las incógnitas lo son.

 

 Supongamos que tenemos los siguientes puntos: \((-10,12),(-5,6),(-2,2),(5,5),(9,10)\). Siguiendo el razonamiento indicado tendríamos que:

\[X = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{1}\\
{1}\\
{1}\\
{1}\\
{1}
\end{array}}&{\begin{array}{*{20}{c}}
{-10}\\
{-5}\\
{-2}\\
{5}\\
{9}
\end{array}}&{\begin{array}{*{20}{c}}
{100}\\
{25}\\
{4}\\
{25}\\
{81}
\end{array}}
\end{array}} \right],\beta = \left[ {\begin{array}{*{20}{c}}
{\beta_0}\\
{\beta_1}\\
{\beta_2}
\end{array}} \right],{\bf{y}} = \left[ {\begin{array}{*{20}{c}}
{12}\\
{6}\\
{2}\\
{5}\\
{10}
\end{array}} \right]\]

Obtenemos nuestra \(A\) en el sistema de ecuaciones normales que sería \(A=A^TA=X^TX\) y para obtener nuestra \(\bf{b}\) tendríamos que \(\bf{b}=A^T\bf{b}=X^T\bf{y}\).

\[A = X^TX = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&1
\end{array}}&1
\end{array}}&1&1\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{ - 10}&{ - 5}
\end{array}}&{ - 2}
\end{array}}&5&9\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{100}&{25}
\end{array}}&4
\end{array}}&{25}&{81}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1\\
1
\end{array}}\\
1
\end{array}}&{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{ - 10}\\
{ - 5}
\end{array}}\\
{ - 2}
\end{array}}&{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{100}\\
{25}
\end{array}}\\
4
\end{array}}\\
1&5&{25}\\
1&9&{81}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
5&{ - 3}&{235}\\
{ - 3}&{235}&{ - 279}\\
{235}&{ - 279}&{17827}
\end{array}} \right]\]

 \[{\bf{b}} = X^T{\bf{y}} = \left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&1
\end{array}}&1
\end{array}}&1&1\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{ - 10}&{ - 5}
\end{array}}&{ - 2}
\end{array}}&5&9\\
{\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{100}&{25}
\end{array}}&4
\end{array}}&{25}&{81}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
{12}\\
6
\end{array}}\\
2\\
5\\
{10}
\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}
{35}\\
{ - 39}\\
{2293}
\end{array}} \right]\]

 Nuestra matriz aumentada \([A \bf{b}]\) sería:

^\[\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
5&{ - 3}
\end{array}}&{235}&{35}\\
{\begin{array}{*{20}{c}}
{ - 3}&{235}
\end{array}}&{ - 279}&{ - 39}\\
{\begin{array}{*{20}{c}}
{235}&{ - 279}
\end{array}}&{17827}&{2293}
\end{array}} \right]\]

Resolviendo el sistema tenemos que:

\[\left[ {\begin{array}{*{20}{c}}
{\begin{array}{*{20}{c}}
1&0
\end{array}}&0&{2.5167}\\
{\begin{array}{*{20}{c}}
0&1
\end{array}}&0&{ - 0.0209}\\
{\begin{array}{*{20}{c}}
0&0
\end{array}}&1&{0.0951}
\end{array}} \right]\]

 

Por lo que \(\beta_0=2.5167\), \(\beta_1=-0.0209\) y \(\beta_2=0.0951\). Nuestra ecuación de la parábola es \(y=2.5167-0.0209x+0.0951x^2\). A continuación se deja un código en MatLab que realiza estos cálculos y la gráfica que genera de los puntos y de la parábola que los aproxima:

 

 

 

En general, se puede aproximar cualquier curva cuya forma general sea \(y=\beta_0f_1(x)+\beta_1f_2(x)+...+\beta_nf_n(x)\), donde \(\beta_i\) son las incógnitas a encontrar y \(f_i(x)\) son funciones conocidas. Lo anterior quiere decir que se quiere utilizar una combinación lineal de \(n\) funciones base para encontrar \(y\). En el primer ejemplo \(f_1(x)=x^0\) mientras que \(f_2(x)=x\). En el segundo ejemplo tenemos tres funciones base conocidas: \(f_1(x)=x^0\),\(f_2(x)=x\) y \(f_3(x)=x^2\).

 

Add comment


Security code
Refresh

contacts Contactanos

 

bugs Reportar bugs

about Acerca de www.tecnohobby.net

Go to top