Documente Academic
Documente Profesional
Documente Cultură
Regresiones
La regresión es el ajuste de los datos experiementales a una función que describe el
modelo particular. Sin embargo, no necesariamente el modelo comprende la totalidad de
los puntos obtenidos experimentalmente.
Existen diferentes métodos numéricos para regresiones, entre ellos podemos mencionar:
Regresión por mínimos cuadrados
Se realiza cuando los datos tienene errores sustanciales, ya que una regresión polinomial
resultaría inadecuada (en su mayoría con datos experimentales). Un ejemplo de lo que
queremos decir, puede observarse en el siguiente gráfico.
Donde apreciamos una clara
dispersión de los datos, pero
que tambien denota una
importante relación lineal entre
los mismos. De hecho un 95%
de los datos están dispersados
entre las rectas paralelas
cortadas.
Regresión lineal
Un modelo básico de regresión
lineal, puede obtenerse de:
Δy
m = Δx
Δy = Δx (m) = y2 − y1
Al tomar como referencia x1 = 0
y2 = mx2 + y1 que es lo mismo que decir: y = ax + c
Por tanto:
y = ax + c = mx2 + y1 → y = mx + c
Al insertar la notacion del error, que conlleva el alejamiento de cada dato, se tiene:
y = mx + c + ε
El error puede expresarse entonces, como:
ε = y − mx − c
De esta forma, puede deducirse una expresión para un “mejor ajuste”, que se logrará
cuando la suma del valor absoluto del error sea mínima.
n n
∑ εi = ∑ (y − mx − c)
i=1 i=1
Donde ‘n’ es el numero total de puntos.
estadísticos
En base al análisis anteriormente expuesto, y haciendo uso de criterios se
puede obtener:
ε2(c, m) = ∑ ( yi − mxi − c)2
mínimos cuadrados
La cual es la expresión del método de .
Se tiene que:
SxxSy−SxSy
c = NS xx−SxSx
NS −S S
m = NSxyxx−SxxSyx
Determinamos ‘R’, el cual es muy importante en materia estadistica pues indica la
representacion o inclusion optima de la mayoria de datos.
N
NS xy − S x S y
r= con Syy = ∑ yi2
√NS yy − S y S y√NS xx − S x S x i=1
Donde N=n (numero de incidencias o puntos del experimento)
Lo que se lograra con esto, es que si bien la recta no puede pasar por todos los puntos,
el alejamiento o la distancia entre los mismos y la recta será mínimo, de esta forma se
obtiene una línea óptima.
Nota: no se incluye la cuantificacion del error (desviacin de m y c)
Regresión polinomial
Basicamente consiste en ajustar polinomios a los datos de trabajo. Se construye en base
al metodo de minimos cuadrados, que puede extender su ajuste facilmente a polinomios
de grado superior.
De esta forma, un polinomio del tipo: y = a 0 + a1x + a2 x2 + ε
Sr = ∑ (yi − a0 − a1xi − a2 x 2 )2
i
Con esto, al diferencer la ecuacion respecto a cada uno de los coeficientes se tiene:
Que forman un conjunto de relaciones lineales que pueden ser solucianadas, para asi
solve
determinar el valor de a0, a1, a2 mediante simultaneo
o (como el visto en el ejemplo
de balance en un reactor). Se deduce que por lo tanto, que para un polinomio de grado ‘n’
se tendra un numero de ecuaciones n + 1 que podra ser solucionado.
Es interesante notar, que este tipo de analisis tiene una implicacion importante: cuando
nosotros derivamos parcialmente a la funcion respecto a los coeficientes, estamos
haciendo un cambio de variables, donde la nuevas variables seran los coeficientes de la
expresion, y, que al derivar reducimos su grado a n − 1 que para una ecuacion cuadratica
equivaldria a hacer rectas tangentes a la curva, y asi sucesivamente.
Linealizacion para la regresion exponencial
Como se ha mencionado, los metodos numericos tienen su fundamento en el analisis
combinado de algebra, geometria analitica y algunas veces el calculo. Tal es el caso
presente, donde aplicamos una regla algebraica simple. supongamos una relacion
exponencial del tipo:
y = aecx
El analisis algebraico indica que aplicando Log a ambos lados (base e
) tendremos:
Loge(y) = cx + Loge(a)
Obteniendo asi una recta con una
pendiente ‘c’ y con un intercepto
Log(a)
Nota: Este tipo de analisis, puede
ser aplicado a otras funciones no
lineales. Pueden consultarse otro
tipo de relaciones exponenciales en
un libro de texto de matematicas.
para aplicar este tipo de arreglo a los
datos, se pueden plotear, y luego,
con diferentes modelos de tratar de
acoplar el array a la forma lineal, y
aplicar minimos cuadrados.
Interpolación
De manera simple, la interpolación permite predecir oprecisar la localización de un punto
no conocido comprendido entre el rango de valores experimentales conocidos, aunque
tambien en ingeniería es frecuente disponer de un cierto número de puntos obtenidos por
muestreo y pretender construir una función que los ajuste.En la interpolación, a diferencia
de la regresión, la función pasa por todos los puntos.
Interpolaciones
Interpolación lineal
Es un caso particular del metodo de interpolacion general de Newton. Se expresa asi:
Donde a y b, equivalen a puntos cuales quiera de la linea. Por conveccion se usa b>a
Notese que la regresion anterior solo logra unir con lineas rectas dos puntos. La
aproximacion resulta mas preceisa cuando el intervalo entre los datos es pequeño, o lo
que es lo mismo, pertenece a un diferencial de segmento, una cantidad infinitesimal.
polinomios de interpolación de Newton
En la formula general de interpolación de Newton, se considera que para evaluar un
polinomio de ‘n’ grados se requieren n + 1 puntos.La forma general será:
f n(x) = b0 + b1(x − x0) + ... + bn(x − x0)(x − x1)...(x − xn−1)
donde:
b0 = f (x0)
b1 = f [x1, x0]
b2 = f [x2, x1, x0] …
bn = f [xn, xn−1, ..., x1, x0]
Donde, las evaluaciones entre corchete significa diferencias divididas finitas:
f(xi)−f(xj)
f [xi, xj] = xi−xj
f[x ,x ]−f[x ,x ]
f [xi, xj, xk] = i xj −x j k
i k
El analisis del siguiente recuadro nos dara una idea mas clara al respecto:
Nota: el estudio de error presente en este método excede los alcances de este curso. se
recomienda referenciarse un poco al respecto.
Polinomios de interpolación de Lagrange
Es una mejora al método de interpolación de Newton, se representa como:
n
f n(x) = ∑ Li(x)f(xi)
i=0
Donde:
n x−x
Li(x) = Π j=0, j ≠i ( x j )
i−xj
Al ser expandido se tiene:
donde el signo pi, denota el producto de las fracciones. Para el caso de n=1 tendriamos
Y asi sucesivamente para polinomios de mayor grado.
Regresiones en Matlab/Octave
p = polyfit (x, y, n)
polifyt es una mezcla del análisis de regresión e interpolación, pues si bien cubre la
mayoria de puntos, su algoritmo identifica aquellos valores atipicos o demasiado alejados
para ser ignorados dentro de la interpolación. Pruebe el algortimo siguiente:
x = [1 3 6 10 20];
y = [2.5 7.5 15.5 24 45];
p = polyfit(x, y, 1); %el tercer argumento indica el grado del polinomio
Observaremos la impresion en pantalla de un vector con dos elementos, que
corresponden a los parametros que polyfit() retorna. Parar un formato de salida más claro,
hacemos:
polyout(p, "x");
%el comando polyval lee un vector y construye una funcion a partir de él
plot(x, y, "*", x, polyval(p, x), "");
xlabel("x");
ylabel("y");
legend("puntos", "ajuste")
text(0.5,45,polyout(p, "x")) %uso: text (x,y,mensaje)
grid()
NOTA: pruebe el comando con las opciones de 2do y 3er grado. puede obtener la
desviacion usando:
desviacion = sqrt(mean((y polyval(p, x)).^2))
leasqr()
El uso del comando, es como sigue:
[f, p, cvg, iter] = leasqr(x, y, pin, F
)
Donde:
x : vector o matriz de variables independientes
y : vector o matriz de variables dependientes
pin : vector de parametros iniciales para ser ajustado con leasqr()
F : Funcion a tratar
f: set de y ajustados. f = F(x,p)
p : vector con parametros finales de la solucion
cvg : escalar=1 si hay convergencia, 0 de cualquier otra forma
iter : numero de iteraciones usadas
Aclaracion : para aquellos comandos que devuelven un vector F(x), el proceso para
obtener una función es bastante simple: primero conseguimos hacer una regresión a la
disperción de datos a través del vector que estos devuelven. luego podemos usar el
comando polyfit(), para obtener una ecuación. El uso de dicho comando se mencionará
adelante.
Ejemplo:
%creamos un set de datos x
x=linspace(0, 5);
%creamos un set de ‘y’ al azar a partir de x y visualizamos
y = 1./(1 + 1.2*x.^1.8) + randn(1,100)*0.03;
plot(x,y,"g o")
%creamos una funcion llamada ‘ffun’ dada la tendencia de la funcion
function y = ffun(x, p)
y = 1./(1+p(1)*x.^p(2));
endfunction
p = [0.5 0.0];
[yfit pfit cvg iter] = leasqr(x, y, p, "ffun");
cvg, iter
pfit
plot(x,y,"o",x,yfit,"r")
Interpolaciones en Matlab/Octave
spline()
Ejemplo aplicado spline()
x = 0:10;
y = sin(x);
xx = 0:.25:10;
yy = spline(x,y,xx);
plot(x,y,"o",xx,yy)
Sin embargo, el uso de spline, puede presentar tambien ciertos inconvenientes para
cuando el set de datos es significativamente mas grande:
x =10*pi^2* rand(1,25);
y = sin(x) rand(1,25)+rand(1,25);
xx = 0:.25:80;
yy = spline(x,y,xx);
plot(x,y,"o",xx,yy)
Puede observarse que la curva llega hasta los valores definidos para xx, y que toma todos
y cada uno de los puntos de la dispersion.
yi =
interp1
(x, y, xi,”tipo”)
Es un método bastante práctico, ya que el algoritmo de la función interp1 nos permite
especificar el tipo de interpolación deseada (linear, cuadrática, cúbica, etc). Para resumir
su uso crearemos un set de datos:
xp = [0:10];
yp = sin (2*pi*xp/5);
Procedemos a construit un nuevo par de vectores, esto debido a que ademas de valores
de “xp”, precisamos de un nuevo vector “xf” con la mayor cantidad de puntos posibles, en
el rango de las “xp” dadas. Para conocer el rango de x podemos usar range():
xf = [0:0.05:range(xp)];
yf = sin (2*pi*xf/5);
Supongamos una interpolación lineal
lin = interp1 (xp, yp, xf);
para una función del tipo cúbica
cub = interp1 (xp, yp, xf, "cubic");
Para una interpolación polinomial
pln = interp1 (xp, yp, xf, "spline");
Al plotear en conjunto:
plot (xf, yf, "r", xf, lin, "g", xf, pln, "b", xf, cub, "c", xp, yp, "r*");
grid()
legend ("original", "linear", "polinomial", "cubica");
Como hemos podido obserbar, entodos los casos interp1() lo que nos devuelve es de
hecho un vector “y” en base a la relación que hemos ordenado al comando. es decir: el
interprete diseña una fórmula general y forza a los datos a “entrar” a esa ecuación.
NOTA: “x” debe de estar igualmente espaciada.
Sii deseamos conocer la ecuación que genera la curva de datos, debemos a recurrir a
polyfit(), y obtener así la ecuación mediante el uso combinado de comandos.
Preguntas:
¿Qué hacer si deseamos una regresion de un set de datos que evidencia una tendencia
exponencial?
¿Cuál es el problema que representa el uso de spline cuando hay dispersión de datos?
Ejemplo aplicado: torre de secado
La figura de introducción a este capítulo muestra un proceso de secado, donde se grafica
masa total vs tiempo. Los datos de masa (m) en kg y tiempo (t) en horas, son
respectivamente:
m=[40,32.9,25.8,18.7,16.4,14.3,13.4,13,13]
t=[0,0.2,.4,.6,.7,.9,1.1,1.3,1.4]
Suponga que, a fin de poder analizar estos datos, se requiere una función que describa el
proceso de masa evaporada, respecto al tiempo. Encuentre por tanto una expresión que
nos permita describir cuanta masa se habrá evaporado luego de 0.3 y 1.1 horas.
sugerencia: Debido al comportamiento de la gráfica podría ser útil seccionarla y obtener
dos expresiones que describan las dos regiones.
Ejemplo demostrativo: interpolación de datos termodinámicos
Un problema usual en la lectura de tablas de vapor es la dificultad para leer datos cercanos al
punto crítico. Esto también sucede en algoritmos de datos termodinámicos programados en
calculadoras portátiles las cuales son dispositivos menos potentes que una computadora, por
tanto, como un truco de programación, se recurre a usar menos puntos o menos datos
termodinámicos que los que se usarían en una Computadora Personal; a fin de no saturar la
memoria volátil del dispositivo portátil. A continuación se demuestra en base a la interpolación,
porque pueden presentarse esta serie de dificultades en los puntos cercanos al punto crítico.
Supongamos primeramente que el diagrama PV de una sustancia (la sustancia ‘x’) está
representado mediante la ecuación V = P Cos(P ) para una presión que va desde los 5 a 8 MPa.
Generamos un set de datos con 100 elementos y los ploteamos
x=linspace(5,8,100);
y=x.^cos(x);
plot(x,y,'b')
hold('on')
title('diagrama PV')
xlabel('P')
ylabel('V')
Ahora suponga que, deseamos programar dichos datos en una calculadora portátil, para tales
efectos asumimos que desconocemos la relación V=f(P) con la cual hemos modelado los datos; y
en su lugar tenemos un set de 100 datos de V y P respectivamente.
Para poder representar el comportamiento extraemos un nuevo vector en base a los conocidos:
a=x(1:10:100);
b=y(1:10:100);
Ploteamos los datos que recopilamos de los vectores originales, sobre el gráfico original
plot(a,b,'r o')
grid('on')
legend('datos originales','interpolacion lineal')
Observe la región superior del domo:
¿Cómo explicaría esto la problemática de leer datos de tablas de vapor cercanos al punto crítico?
Haga scroll sobre el área crítica y observe la “región de incertidumbre”.
¿Qué sugeriría para minimizar este error?
referencias y recursos
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/interpolacion.h
tml
http://www.unioviedo.es/compnum/laboratorios_web/laborat05_Interpol_y_aprox/laborat05
_Interpolacion.html
http://www.sc.ehu.es/sbweb/energiasrenovables/MATLAB/numerico/datos/datos.html
https://www.scribd.com/doc/106671667/LinealizaciondeFuncionesNoLineales
http://sysplay.in/blog/tag/polynomialcurvefitting/
http://www.krizka.net/2010/11/01/nonlinearfittingusinggnuoctaveandleasqr/
http://www.mathworks.com/help/matlab/ref/spline.html
https://www.packtpub.com/books/content/gnuoctavedataanalysisexamples
http://octave.sourceforge.net/octave/function/splinefit.html
http://www.uv.es/ceaces/base/regresion/exponenci.htm