Transcript Regresíon

Regresión
Programación Numérica
Regresión Lineal
Se desea ajustar un serie de puntos (xi, yi) a una línea recta dada
por:
y = a0 + a1x + e
Donde a0 y a1 son coeficientes que representan la intersección
con el eje y la pendiente, y e es el error, o diferencia, entre el
modelo y las observaciones.
e = y – a0 – a1x
Criterio del mejor ajuste
En el método de mínimos cuadrados se desea minimizar la
suma de los cuadrados de los residuos.
S r   e    yi ,medida  yi ,modelo     yi  a0  a1 xi 
n
i 1
n
2
i
i 1
2
n
i 1
2
Ajuste por mínimos cuadrados
Derivando respecto a a0 y a1.
S r   e    yi ,medida  yi ,modelo     yi  a0  a1 xi 
n
n
i 1
Obtenemos
2
i
2
i 1
n
i 1
S r
 2  yi  a0  a1 xi 
a0
S r
 2  yi  a0  a1 xi xi 
a1
Igualando a 0
0   yi   a0   a1 xi
0   yi xi   a0 xi   a1 xi2
Resolviendo para a0 y a1
a1 
n xi yi   xi  yi
n xi2   xi 
a0  y  a1 x
2
2
Ejemplo
Ajustar con mínimos cuadrados los siguientes datos
X
Y
1
0.5
2
2.5
3
2.0
4
4.0
5
3.5
6
6.0
7
5.5
Tarea
Ajustar con mínimos cuadrados los siguientes datos
X
Y
0
5
2
6
4
7
6
6
9
9
11
8
12
7
15
10
17
12
19
12
Estadística básica
Promedio:
y
n
Desviación estándar
St
sy 
n 1
Varianza:
yi
St    yi  y 
2
2
y
  yi  / n

1
2
sy 
n 1
2
S
s  t
n 1
Coeficiente de variación:
Estimado normal estándar:
2
y
c.v. 
t
sy
y
100%
y
sy / n
Tarea
Escriba un archivo M para graficar la recta del mejor ajuste
utilizando mínimos cuadrados. Deberá aceptar como
parámetros los valores de X y Y. Grafique los puntos con
círculos y la línea de regresión con una recta.
Error en la regresión lineal
n
S r    yi  a0  a1 xi 
2
y
Medición
i 1
La desviación estándar de la línea de
regresión es:
Sy/ x 
Sr
n2
yi – a0 – a1x
a0 + a1x
La magnitud del error residual antes de la
regresión es:
St    yi  y 
x
2
El coeficiente de determinación es:
St  S r
r 
St
2
2
El coeficiente de correlación es: r  r 
En ajuste perfecto Sr = 0 y r = r2 = 1.
Si r = r2 = 0, Sr = St, el ajuste no representa
alguna mejora.
n xi yi   xi  yi 
n xi2   xi 
2
n yi2   yi 
2
Linealización de relaciones no
lineales
y
y
y  1e
1x
y  2 x
x
ln y
y
y  3
2
x
log y
x
3  x
x
1/y
Pendiente = 3/3
Pendiente = 1
Pendiente = 2
x
Intersección = ln 1
log x
Intersección = log 2
Intersección = 1/3
1/x
Ejemplo
Ajustar los siguientes datos a
x
y  2 x
y
1
2
3
4
5
0.5
1.7
3.4
5.7
8.4
2
ejemplo
Usar regresión de mínimos cuadrados para ajustar a una
ecuación de taza de crecimiento de saturación.
x
y  3
3  x
x
5
10
15
20
25
30
35
40
45
50
y
17
24
31
33
37
37
40
40
42
41
1 1 3  x 3 1 1



y 3 x
3 x 3
Tarea
Dados los datos siguientes use regresión por mínimos cuadrados
para ajustar a) una línea recta, b) una ecuación exponencial, c)
una ecuación de potencias.
x 5
10 15 20 25 30 35 40 45 50
y 17 24 31 33 37 37 40 40 42 41
Regresión Polinomial
Ajuste a un polinomio cuadrático
y = a0 + a1x + a2x2 + e
La suma de los cuadrados de los
n
2
residuos es:
S r   yi  a0  a1 xi  a2 xi2 
i 1
De aquí obtenemos:
S r
 2 yi  a0  a1 xi  a2 xi2
a0


S r
 2 xi yi  a0  a1 xi  a2 xi2
a1


S r
 2 xi2 yi  a0  a1 xi  a2 xi2
a2


Reordenando se obtiene
na0   xi a1   xi2 a2   yi
 x a
 x a
i
2
i
0
  xi2 a1   xi3 a2   yi xi
3
4
2





x
a

x
a

x



0
i
1
i
2
i yi
El error estándar es:
Sy/x 
Sr
n3
Ejemplo
Ajustar a un polinomio de segundo grado.
x 5
10 15 20 25 30 35 40 45 50
y 17 24 31 33 37 37 40 40 42 41
Tarea
Ajustar a un polinomio de segundo grado.
x 5
10 15 20 25 30 35 40 45 50
y 17 24 31 33 37 37 40 40 42 41
Escriba una función en C que calcule el polinomio de segundo
grado del mejor ajuste utilizando mínimos cuadrados.
Escriba un archivo M para graficar el polinomio de segundo
grado del mejor ajuste utilizando mínimos cuadrados.
Regresión polinomial en C
void regrePoly(double x[],double y[],int n,int m,double
a[][20])
{
int i,j,k,l;
double sum;
for(i = 0; i<m+1; i++){
for(j = 0; j<=i; j++){
k = i+j;
sum = 0;
for(l = 0; l<n; l++)
sum += pow(x[l],k);
a[i][j] = sum;
a[j][i] = sum;
}
sum = 0;
for(l = 0; l<n; l++)
sum += y[l]*pow(x[l],i);
a[i][m+1] = sum;
}
}
Ejemplo de corrida
main(){
int j;
double a[20],b[20][20];
double x[]={0,1,2,3,4,5};
double y[]={2.1,7.7,13.6,27.2,40.9,61.1};
int n=6;
regrePoly(x,y,6,2,b);
print(b,3);
6
15 55
gauss(b,3,a);
15 55 225
for(j=0; j<3; j++)
55 225 979
cout << a[j]<<"\n";
system("PAUSE");
}
2.47857
2.35929
1.86071
152.6
585.6
2488.8
Ajuste a polinomios de orden
superior
Sea el polinomio de ajuste dado por
p(x) = a0 + a1 x + a2 x2 +… + an xn
La desviación de la curva respecto a cada punto es
ri = yi – p(xi)
La suma de las desviaciones al cuadrado es
L
R   ri 2
i 1
Igualando a cero las derivadas parciales respecto ai.
L
 L 2 n  2 j  k 
n 1 k
x
a

x
yi , k  0,2,...,n





i
j
i
j 0  i 1
i 1

n