Entrada destacada

Distancia media de dos puntos en un cuadrado unitario

viernes, 7 de octubre de 2016

Regresión Lineal y Cuadrática por Mínimos Cuadrados



Creamos la función regresion que tiene dos parámetros, el primero es el número de puntos que vamos a ingresar y el segundo parámetro es: 1 si es lineal y 2 si es cuadrática.

Clear["Global`*"]
regresion[numero_Integer, tipo_Integer] := 
 Module[{xx, xi, xf, t, i, j},
  li = Table[{Input[x[i]], Input[y[i]]}, {i, 1, numero, 1}];
  xx = Sort@Table[li[[i, 1]], {i, 1, numero, 1}];
  xi = First[xx]; xf = Last[xx];
  Which[tipo == 1,
   ca = Minimize[
     Sum[(a li[[j, 1]] + b - li[[j, 2]])^2, {j, 1, numero}], {a, b}];
   cp = Plot[(a /. ca[[2, 1]]) t + (b /. ca[[2, 2]]), {t, xi, xf}];, 
   tipo == 2, 
   ca = Minimize[
     Sum[(a li[[j, 1]]^2 + b li[[j, 1]] + c - li[[j, 2]])^2, {j, 1, 
       numero}], {a, b, c}];
   cp = Plot[(a /. ca[[2, 1]]) t^2 + (b /. ca[[2, 2]]) t + (c /. 
        ca[[2, 3]]), {t, xi, xf}]];
  Grid[{{li}, {ca}, {Show[ListPlot[li, PlotStyle -> Red], cp, 
      PlotLabel -> 
       Which[tipo == 1, y == (a /. ca[[2, 1]]) x + (b /. ca[[2, 2]]), 
        tipo == 2, 
        y == (a /. ca[[2, 1]]) x^2 + (b /. ca[[2, 2]]) x + (c /. 
            ca[[2, 3]])]]}}]]

Después de cargar el código anterior, si vamos a ingresar 4 puntos y es lineal, entonces :

regresion[4, 1]


si vamos a ingresar 4 puntos y es cuadrática:

regresion[4, 2]



Vemos que en el caso lineal el mínimo es 61/13 y en el caso cuadrático es 9/13, obviamente mejora el ajuste de la curva a los puntos en el caso cuadrático.

No hay comentarios.:

Publicar un comentario