lunes, 10 de octubre de 2011

Regresión Lineal.



Autor: Gabriel Pereira

Competencia: Desarrollo de Software (N1), Trabajo en Equipo (N1).
Palabras Clave: Regresión Lineal,Mysql,Base de datos.

Descripción:
El objetivo principal que busca este taller, es que nosotros logremos aprender el modelado de eventos, como lo son las trayectorias rectilíneas de objetos móviles, todo esto gracias al uso de funciones sobre el plano euclidiano (El que se rige por los postulados de Euclides como que dos paralelas que se prolongan hasta el infinito, jamás se juntan) donde una curva se representa en función a los puntos la cual esta se compone. Los cálculos de regresión serán usados para.

1.1.- Determinar los coeficientes a y b mediante el método de los mínimos cuadrados.
1.2.- Establecer tres rectas alternativas a la establecida mediante mínimos cuadrados a partir
         de inspección visual de la nube y la selección de dos puntos.
1.3.- Establecer para todas las rectas la calidad del ajuste mediante r2.
1.4.- Generar las conclusiones con respecto a la calidad del ajuste para cada recta.



Para la solución usamos el software Tracker el cual nos da una trayectoria, observen el vídeo a continuación.




El diseño de la base de datos es básico con una tabla llamada datos en la cual ahí dos columnas X e Y las que fueron pobladas por distintos puntos. Antes de poblar la Base de datos, usamos un pequeño programa en java que traspasa los datos a columnas para ingresarlas directamente con una transacción, estas quedando así.

START TRANSACTION;
INSERT INTO datos (X,Y) VALUES ( 130.4 , 161.4);
INSERT INTO datos (X,Y) VALUES ( 144.0 , 172.0);
INSERT INTO datos (X,Y) VALUES ( 155.4 , 180.5);
INSERT INTO datos (X,Y) VALUES ( 191.7 , 207.7);
INSERT INTO datos (X,Y) VALUES ( 205.7 , 217.5);
INSERT INTO datos (X,Y) VALUES ( 256.3 , 255.9);
INSERT INTO datos (X,Y) VALUES ( 270.0 , 265.5);
INSERT INTO datos (X,Y) VALUES ( 295.0 , 283.0);
INSERT INTO datos (X,Y) VALUES ( 309.3 , 293.1);
INSERT INTO datos (X,Y) VALUES ( 321.6 , 302.9);
INSERT INTO datos (X,Y) VALUES ( 333.0 , 311.6);
INSERT INTO datos (X,Y) VALUES ( 395.5 , 355.1);
INSERT INTO datos (X,Y) VALUES ( 408.2 , 363.4);
INSERT INTO datos (X,Y) VALUES ( 420.2 , 372.7);
INSERT INTO datos (X,Y) VALUES ( 433.0 , 381.1);
INSERT INTO datos (X,Y) VALUES ( 444.5 , 388.5);
INSERT INTO datos (X,Y) VALUES ( 456.4 , 397.3);
INSERT INTO datos (X,Y) VALUES ( 477.8 , 411.5);
INSERT INTO datos (X,Y) VALUES ( 489.6 , 420.0);
INSERT INTO datos (X,Y) VALUES ( 500.9 , 427.9);
INSERT INTO datos (X,Y) VALUES ( 546.8 , 460.2);
COMMIT;


A la vez los dato son traspasados a una hoja de calculo en la cual podemos calcular varios puntos 
a través de un gráfico como:

- Valor de coeficientes de a y b.
- El valor de r2.
- La recta de mejor ajuste.


Los coeficientes a y b tienen los siguientes valores.
a = 70.6206705595036
b = 0.7161518589202247

El valor de r2 es el siguiente
r2 = 0.9997482043067983

La mejor recta de ajuste es
Y = a + bX
Y = 38.63064447845318 + 0.8091810347877719 X


Continuando con la actividad debimos crear vistas en la base de datos, para que estas mostraran los mismos datos de la hoja de calculo.

La primera vista calcula valores que usamos como son el promedio de x(px) y el promedio de y(py).
CREATE VIEW valores AS
SELECT AVG(X) AS px,AVG(Y) py FROM datos;

Esta vista calcula el valor de “b”
CREATE VIEW b AS
SELECT ((SUM((X-px)*(Y-py))) / (SUM(POWER((X-px),2)))) AS b FROM valores,datos;

Esta calcula el valor de “a”.
CREATE VIEW a AS
SELECT (py - (b * px))AS a FROM valores,b;

Otra vista la que calcula el valor de “r2”
CREATE VIEW r AS
SELECT POWER(((SUM((X-px)*(Y-py))) / SQRT((SUM(POWER((X-px),2))) * (SUM(POWER((Y-py),2))))),2) AS r2 FROM valores,datos;

El punto 1.1 se desarrolló de acuerdo a la fórmula correspondiente se usó una vista en SQL con las distintas funciones que nos sirven para hacer distintos cálculos a los datos como es SUM, AVG, POWER, SQRT, etc.
Ya en el punto 1.2 se sacó el valor de dos puntos y se hicieron dos líneas más alternativas de acuerdo al gráfico, ya en el 1.3 se calculó el r2 a través de otra vista aplicada en SQL la cual salió a la perfección y finalmente en el 1.4 se concluye con la línea más adecuada de acuerdo a los puntos obtenidos y el valor de r2.

Reflexión:
Esta actividad la realice con tres compañeros, los cuales tuvimos que dividir tareas, como a la vez apoyarnos entre nosotros. A mi personalmente me pareció interesante trabajar con estas distintas herramientas y así poder optimizar a través de una base de datos, utilizando vistas los distintos cálculos necesarios para trabajar. 

No hay comentarios:

Publicar un comentario