You are on page 1of 20

Regresin

Programacin Numrica
Regresin Lineal
Se desea ajustar un serie de puntos (x
i
, y
i
) a una lnea recta dada
por:
y = a
0
+ a
1
x + e
Donde a
0
y a
1
son coeficientes que representan la interseccin
con el eje y la pendiente, y e es el error, o diferencia, entre el
modelo y las observaciones.
e = y a
0
a
1
x

Criterio del mejor ajuste
En el mtodo de mnimos cuadrados se desea minimizar la
suma de los cuadrados de los residuos.
( ) ( )

= = =
= = =
n
i
i i
n
i
modelo i medida i
n
i
i r
x a a y y y e S
1
2
1 0
1
2
, ,
1
2
Ajuste por mnimos cuadrados
( ) ( )

= = =
= = =
n
i
i i
n
i
modelo i medida i
n
i
i r
x a a y y y e S
1
2
1 0
1
2
, ,
1
2
( )
( ) | |

=
c
c
=
c
c
i i i
r
i i
r
x x a a y
a
S
x a a y
a
S
1 0
1
1 0
0
2
2
Derivando respecto a a
0
y a
1
.
Obtenemos
Igualando a 0


=
=
2
1 0
1 0
0
0
i i i i
i i
x a x a x y
x a a y
Resolviendo para a
0
y a
1
( )
x a y a
x x n
y x y x n
a
i i
i i i i
1 0
2
2
1
=

=


Ejemplo
Ajustar con mnimos 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 mnimos 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
Estadstica bsica
Promedio:

Desviacin estndar

Varianza:

Coeficiente de variacin:

Estimado normal estndar:

( )
1
/
2
2
1 2

=

n
n y y
s
i
y
1
2

=
n
S
s
t
y
1
=
n
S
s
t
y
( )

=
2
y y S
i t
n
y
y
i
=
% 100 . .
y
s
v c
y
=
n s
y
t
y
/

=
Tarea
Escriba un archivo M para graficar la recta del mejor ajuste
utilizando mnimos cuadrados. Deber aceptar como
parmetros los valores de X y Y. Grafique los puntos con
crculos y la lnea de regresin con una recta.
Error en la regresin lineal
( )

=
=
n
i
i i r
x a a y S
1
2
1 0
Medicin
a
0
+ a
1
x
y
i
a
0
a
1
x
2
/

=
n
S
S
r
x y
La desviacin estndar de la lnea de
regresin es:
( )

=
2
y y S
i t
La magnitud del error residual antes de la
regresin es:
El coeficiente de determinacin es:
t
r t
S
S S
r

=
2
El coeficiente de correlacin es:
( )( )
( ) ( )
2
2
2
2
2




= =
i i i i
i i i i
y y n x x n
y x y x n
r r
En ajuste perfecto S
r
= 0 y r = r
2
= 1.
Si r = r
2
= 0, S
r
= S
t
, el ajuste no representa
alguna mejora.
x
y
Linealizacin de relaciones no
lineales
x
y
x
e y
1
1
|
o =
x
y
2
2
|
o x y =
x
y
x
x
y
+
=
3
3
|
o
x
ln y
log x
log y
1/x
1/y
Pendiente = |
1
Pendiente = |
2
Pendiente = |
3
/o
3
Interseccin = ln o
1
Interseccin = log o
2
Interseccin = 1/o
3
Ejemplo
2
2
|
o x y = Ajustar los siguientes datos a
x y
1 0.5
2 1.7
3 3.4
4 5.7
5 8.4
ejemplo
x
x
y
+
=
3
3
|
o
Usar regresin de mnimos cuadrados para ajustar a una
ecuacin de taza de crecimiento de saturacin.
x 5 10 15 20 25 30 35 40 45 50
y 17 24 31 33 37 37 40 40 42 41
3 3
3 3
3
1 1 1 1
o o
| |
o
+ =
+
=
x x
x
y
Tarea
Dados los datos siguientes use regresin por mnimos cuadrados
para ajustar a) una lnea recta, b) una ecuacin exponencial, c)
una ecuacin de potencias.
x 5 10 15 20 25 30 35 40 45 50
y 17 24 31 33 37 37 40 40 42 41
Regresin Polinomial
Ajuste a un polinomio cuadrtico
y = a
0
+ a
1
x + a
2
x
2
+ e
La suma de los cuadrados de los
residuos es:
( )

=
+ =
n
i
i i i r
x a x a a y S
1
2
2
2 1 0
De aqu obtenemos: ( )
( )
( )

+ =
c
c
+ =
c
c
+ =
c
c
2
2 1 0
2
2
2
2 1 0
1
2
2 1 0
0
2
2
2
i i i i
r
i i i i
r
i i i
r
x a x a a y x
a
S
x a x a a y x
a
S
x a x a a y
a
S
Reordenando se obtiene
( ) ( )
( ) ( ) ( )
( ) ( ) ( )



= + +
= + +
= + +
i i i i i
i i i i i
i i i
y x a x a x a x
x y a x a x a x
y a x a x na
2
2
4
1
3
0
2
2
3
1
2
0
2
2
1 0
3
/

=
n
S
S
r
x y
El error estndar es:
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 funcin en C que calcule el polinomio de segundo
grado del mejor ajuste utilizando mnimos cuadrados.
Escriba un archivo M para graficar el polinomio de segundo
grado del mejor ajuste utilizando mnimos cuadrados.
Regresin 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);
gauss(b,3,a);
for(j=0; j<3; j++)
cout << a[j]<<"\n";
system("PAUSE");
}
6 15 55 152.6
15 55 225 585.6
55 225 979 2488.8

2.47857
2.35929
1.86071
Ajuste a polinomios de orden
superior
Sea el polinomio de ajuste dado por
p(x) = a
0
+ a
1
x + a
2
x
2
+ + a
n
x
n

La desviacin de la curva respecto a cada punto es
r
i
= y
i
p(x
i
)
La suma de las desviaciones al cuadrado es

=
=
L
i
i
r R
1
2
Igualando a cero las derivadas parciales respecto a
i
.
n k y x a x
L
i
i
k n
i j
n
j
L
i
k j n
i
,..., 2 , 0 ,
1
1
0 1
2 2
= = |
.
|

\
|

=
+
= =
+

You might also like