Professional Documents
Culture Documents
Newton-Raphson. Implementaciones en
Maple, Mathematica, Gauss, Matlab y
Excel
Palabras clave: Funcin, Ecuacin algebraica, Mximo Global, Mximo Local, Derivada,
Matriz Jacobiana
1
joviedo@eco.unc.edu.ar
MODELOS NO LINEALES
La no linealidad es frecuente en los estudios de relaciones econmicas pero las
estimaciones de tales modelos por medio de del Mtodo de Mnimos Cuadrados suele
arrojar problemas de resolucin en virtud de que el sistema de ecuaciones normales es
por lo general no lineal en los parmetros.
Previamente conviene dividir a los modelos no lineales en intrnsecamente no lineales y
los no intrnsecamente lineales. Estos ltimos surgen cuando ante presencia de un
modelo no lineal en los parmetros existe alguna transformacin de los datos que
permita transformarlo en lineal. Cuando dicha transformacin no existe estamos ante la
presencia de un modelo intrnsecamente no lineal. En estos ltimos nos concentraremos
en este ejercicio.
La no linealidad del sistema de ecuaciones normales que arrojan tales modelos no
lineales suelen presentar problemas de resolucin cuando no existe una manera
algebraica de resolverlos. Ante tales circunstancias se hace necesario hallar mtodos
numricos que faciliten la resolucin de los mismos2.
Para el ejercicio en cuestin, se describirn y aplicarn dos mtodos de estimacin
basados en la minimizacin de la funcin de suma de cuadrados de los residuos: el
algoritmo de Gauss-Newton y el algoritmo de Newton-Raphson
ALGORITMO DE GAUSS-NEWTON
Caso de un Parmetro:
Considerando el siguiente modelo no lineal de un nico parmetro:
yt = f ( Xt , ) + et
S ( ) = et = yt f ( xt , )
2
t =1
d
t =1
No solamente la inexistencia de solucin algebraica exacta hace necesario recurrir a mtodos numricos
sino que a veces la solucin algebraica suele ser tan complicada de aplicar (como las frmulas de Cardano
y Tartaglia para los polinomios completos de grado tres y cuatro, caso del ejercicio) que el recurrir a un
mtodo numrico suele ser mas barato computacionalmente.
df (xt , )
d
f (xt , ) f (xt , 1 )
( 1 )
f (xt , ) f (xt , 1 )
( 1 )
df (xt , )
d
f(x,)
Secante
Tangente
f(xt,)
df ( xt , )
d
S ( ) = et = yt f ( xt , 1 ) zt ( 1 )( 1 )
2
t =1
= [ yt ( 1 ) zt ( 1 ) ]
t =1
donde yt = yt f ( xt , 1 ) zt ( 1 ) 1
Este modelo se lo suele denominar pseudomodelo lineal, el cual posee como estimador
mnimos cuadrados a:
T
[ yt ( 1 ) zt ( 1 )]
2 = t =1 T
[ zt ( 1 )]
t =1
En notacin matricial:
1
2 = [ z ( 1 ) ' z ( 1 )] z ( 1 ) ' y ( 1 )
Por lo tanto, hasta ahora lo que hemos hecho consiste en partiendo de un valor inicial de
(1), y aproximando la funcin f(xt,) a travs de una serie de Taylor de primer orden
alrededor de 1, obtuvimos un segundo valor estimado para (2) aplicando MCO al
pseudomodelo lineal (el cual es una aproximacin lineal del modelo general.
Repitiendo este proceso una vez ms (partiendo de 2 y aplicando MCO al
pseudomodelo), obtenemos un segundo valor estimado de :
Este proceso puede ser continuado para encontrar valores sucesivos de estimadores de
. Considerando el estimador (n+1):
1
n +1 = [ z ( n ) ' z ( n )] z ( n ) ' y ( n )
= [ z ( n ) ' z ( n )]
z ( n ) ' y f ( x, n ) z ( n ) n
1
= n + [ z ( n ) ' z ( n )]
z ( n ) ' y f ( x, n )
La condicin de primer orden (CPO) para un mnimo, puede ser escrita de forma
matricial como:
z ( n ) ' y f ( x, n ) = 0
Si se cumple la CPO anterior, debe darse que n+1=n. Por lo tanto, comenzando con un
valor inicial de =1 y se aplica repetidamente el procedimiento descrito anteriormente
(aplicar MCO al pseudomodelo) hasta que se da la convergencia entre los valores de los
estimadores obtenidos, se habr arribado a la solucin de la condicin de primer orden
para la minimizacin de la suma de cuadrados del modelo no lineal dada en (1).
Una vez alcanzado el valor notable por medio del proceso iterativo anteriormente
descrito, restar por determinarse si dicho valor corresponde realmente a un mnimo (o
si el valor es un mximo) y si es as, si este mnimo es de carcter global o local.
Para tratar de maximizar las posibilidades de que se trate de un mnimo absoluto y no
tan solo de un mnimo local, una de las prcticas habituales consiste en utilizar el
algoritmo para diferentes valores iniciales de . Para los distintos valores iniciales,
podemos obtener distintos mnimos de la funcin, el mnimo que se corresponde con la
menor suma de cuadrados de los residuos ser el estimador por mnimos cuadrados no
lineales.
Por otra parte, el propio procedimiento no puede conducir en direccin a un mximo.
Para demostrar ello, partiremos de la condicin de primer orden para minimizar la
suma de los cuadrados de los residuos, escrita en notacin matricial, era:
S ( )
= 2z ( n ) ' y f ( x, n ) = 0
n +1 = n + [ z ( n ) ' z ( n )]
S ( )
Sabiendo que [z()z()]-1 ser siempre positiva debido a que es una funcin cuadrtica,
si se comienza el procedimiento con un valor inicial de situado a la derecha de un
mnimo, la pendiente de la funcin a minimizar S() ser positiva, por lo cual el
algoritmo conducir en la direccin correcta y obtendremos valores de menores que
n. Por lo tanto nos estaremos moviendo hacia un mnimo (absoluto o local) y
asimismo, si se comienza con un valor inicial de situado a la izquierda de un mnimo,
la pendiente de S() ser negativa, por lo cual el cambio en ser positivo y
nuevamente nos moveremos hacia un mnimo.
Un problema adicional que puede ocurrir es que los sucesivos cambios
producidos en las estimaciones iterativas de sean demasiados grandes y no pueda
localizar el mnimo.
Puede ser conveniente introducir una variable de longitud del paso tn (step
length) de manera de disminuir la probabilidad de que el cambio en sea demasiado
grande y por ello se pase por alto el mnimo (es decir, se pase de un valor de a la
izquierda del que minimiza la funcin, a otro a la derecha, o viceversa), lo cual puede
conducir a que el nmero de iteraciones necesarias para arribar al valor crtico sea muy
grande. Considerando esta posibilidad, el algoritmo se transforma en:
n +1 = n + tn [ z ( n ) ' z ( n )] z ( n ) ' y f ( x, n )
1
S ( )
T 1
; E [e ] = 0 E [ee '] = 2 I
Donde las K condiciones de primer orden para encontrar el mnimo de esta funcin,
representadas matricialmente son:
f ( X, ) '
S ()
= 2
y f ( X, ) = 0
donde
f (X , )'
Por lo que la condicin de primer orden anterior puede ser escrita como:
z () yt f ( xt , ) = 0
f ( xt , ) f ( xt , 1 ) + [
df ( xt , )
d
df ( xt , )
d
]( - 1 )
f ( X , ) f ( X , 1 ) + Z (1 )( - 1 )
Sustituyendo esta aproximacin en obtenemos:
y f ( X , 1 ) + Z (1 )( - 1 ) + e
y ( 1 ) = y f ( X , 1 ) + Z ( 1 ) 1
Estimando (4) por mnimos cuadrados ordinarios, ya que el modelo es lineal, se obtiene
un segundo valor de :
1
2 = [ Z (1 ) ' Z (1 )] Z (1 ) ' y (1 )
= n + [ Z (n ) ' Z (n ) ] Z (n ) ' y f ( X , n )
S()
TK
Algoritmo de Newton-Raphson:
El caso de un parmetro:
En este caso en vez de aproximar la funcin f (X,) por un desarrollo en serie de Taylor
de primer orden, se aproximar la funcin S() por un desarrollo en serie de Taylor de
segundo orden alrededor de un punto inicial de (1):
S ( ) S ( 1 ) +
dS ( )
d
( 1 ) +
1 d 2 S ( )
( 1 ) 2
2 d2
1
S ( ) dS ( )
+ h( 1 )( 1 ) = 0
2 = 1 h1 ( 1 )
dS ( )
d
n +1 = n h 1 ( n )
dS ( )
d
Al igual que en el caso del algoritmo de Gauss-Newton, el algoritmo de NewtonRaphson continuar hasta que se logre convergencia entre las estimaciones, donde dos
estimaciones de iteraciones sucesivas n y n+1 sean iguales. Si esto sucede, entonces se
cumple la CPO de la minimizacin de S().
Surgen en este caso los mismos interrogantes que se discutieron cuando se present el
algoritmo de Gauss-Newton sobre si el valor encontrado es un mnimo y, de ser as,
sobre si ste es local o global. Debido a que en el entorno de un mnimo el trmino h(n)
ser positivo, el procedimiento conducir a un mnimo si el valor inicial de est lo
suficientemente cerca del mnimo. Sin embargo, si 1 no se encuentra cercano a un
mnimo sino a un mximo (por ej., a la derecha de un mximo), la derivada de la
funcin ser negativa y h(1) ser tambin negativo, por lo cual el procedimiento
conducir en direccin a un mximo. La cuestin es que los puntos notables pueden ser
tanto mximos como mnimos (e incluso pueden darse situaciones extraas, como
puntos de silla en casos en que la derivada segunda tambin sea 0).
Esta caracterstica del algoritmo de Newton-Raphson hace necesario ser cuidadoso a la
hora de aplicar el mtodo y no tomar un nico valor del estimador como definitivo, por
lo que es muy recomendable realizar la estimacin para varios valores iniciales de 1.
Adems, en el caso en que realmente se haya arribado a un mnimo, esto contribuye a
determinar si el mismo es local o global.
Por ltimo, como en el procedimiento de Gauss-Newton, existe la posibilidad de que se
pase por alto el valor del mnimo, por lo cual se recomienda, como se hizo antes, la
utilizacin de una variable de longitud de paso (tn) para disminuir la probabilidad de que
esto ocurra. La forma ms general del algoritmo queda entonces establecida como:
n +1 = n tn h1 ( n )
dS ( )
d
; E [e ] = 0
; E [ee '] = 2 I
n+1 = n tn H n1
dS ()
d
n
Aclarando que:
dS ()
d
n
=[
dS ( ) dS ( )
d 1
d 2
,L
dS ( )
d k
]
n
K
12
S ( )
Hn =
M
O
=
'
n
2
S () L
k 1
2 S ()
1 k
M
2 S ()
k2
n
( ) = 2
S ( )
[
]
'
donde: =
S ( )
T K
dS ()
d
n
Ambos algoritmos son solo dos de un amplio conjunto posible que responde a esta
forma general.
La matriz Pn es una matriz definida positiva denominada matriz de direccin. Los
algoritmos alternativos se diferencian en cmo definen la matriz de direccin.
Para el caso del algoritmo Gauss-Newton, se da que:
Pn =
1
[ Z( n ) ' Z( n )]1
2
Pn =
1
[ Z( n ) ' Z( n )]1
2
Mientras tambin se incluye una variable tn que es un nmero positivo denominado step
lenght o longitud de paso (el cual ya fue explicado cuando corresponda).
Finalmente, entre los dos mtodos estudiados, el algoritmo de Newton-Raphson es el
ms eficiente en el sentido que converge ms rpidamente al mnimo que GaussNewton. Sin embargo, debe tenerse en cuenta que este ltimo asegura que siempre el
valor del estimador corresponder a un mnimo de la funcin S(), mientras que el
algoritmo de Newton-Raphson puede llegar a un mximo si el punto inicial 1 se
encuentra lo suficientemente cerca de un mximo. Por ltimo, la varianza del estimador
obtenido por este ltimo mtodo ser un poco mayor que la del estimador por GaussNewton.
x1
0,286
0,973
0,384
0,276
0,973
0,543
0,957
0,948
0,543
0,797
0,936
0,889
0,006
0,828
0,399
0,617
0,939
0,784
0,072
x2
0,645
0,585
0,310
0,058
0,455
0,779
0,259
0,202
0,028
0,099
0,142
0,296
0,175
0,180
0,842
0,039
0,103
0,620
0,158
1,152
0,889
0,704
El objetivo del ejercicio es obtener el valor de b que minimice la suma de los cuadrados
de los desvos (es decir el estimador mnimo cuadrtico no lineal). Ntese que este caso
la funcin suma de los cuadrados de los desvis es un polinomio de grado 3 y en
consecuencia para hallar los candidatos a extremos relativos se debe resolver una
condicin de primer orden que resulta ser un polinomio de grado tres. Algebraicamente
existen formulas exactas para obtener estas races por medio de las famosas expresiones
de Cardano y Tartaglia. A continuacin se ofrece la representacin grfica de la
funcin Suma de los cuadrados de los residuos para el rango de valores de b
comprendidos entre -2 y 3.5. Se expone tambin la grafica de su derivada y las
expresiones exactas de los puntos en donde se encuentran los valores extremos junto a
expresiones numricas con 70 dgitos de precisin.
with(linalg):
Da:=[[3284, 0286, 0645],[
3149, 0973, 0585],[
2877, 0384, 0310],[
-0467, 0276, 0058],[
1211, 0973, 0455],[
1389, 0543, 0779],[
1145, 0957, 0259],[
2321, 0948, 0202],[
0998, 0543, 0028],[
0379, 0797, 0099],[
1106, 0936, 0142],[
0428, 0889, 0296],[
0011, 0006, 0175],[
1179, 0828, 0180],[
1858, 0399, 0842],[
0388, 0617, 0039],[
0651, 0939, 0103],[
0593, 0784, 0620],[
0046, 0072, 0158],[
1152, 0889, 0704]]:
y1:=[seq(Da[i,1],i=1..nops(Da))]:
d1:=[seq([Da[i,2],Da[i,3]],i=1..nops(Da))]:
y:=1/1000*y1:
d:=1/1000*d1:
g:=b*x1+b^2*x2:
dd:=[x1,x2]:f:=sum((y[i]-eval(b*x1+b^2*x2,[seq(dd[j]=d[i][j],j=1..nops(dd))]))^2,
i=1..nops(y)):
plot(f,b=-3.5..2.5);
EnvExplicit := true:
exact:=solve(diff(f,b)=0,b);
aprox_digit:=evalf(r,70);
plot(diff(f,b),b=-3.5..2.5);
{bn,z}=GaussNewton(b0,&fnb,y);
?;"__________________________________________________________";
b0=-1.05;
{bn,z}=GaussNewton(b0,&fnb,y);
?;"__________________________________________________________";
b0=-0.9;
{bn,z}=GaussNewton(b0,&fnb,y);
?;"__________________________________________________________";
========================================================
Estimacin de beta, a partir de cuatro valores iniciales
========================================================
valor inicial:
1.0000000
Nro Iter
S(b)
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
1.0000000
1.1633106
1.1612626
1.1612081
1.1612067
17.475884
16.308187
16.307970
16.307970
16.307970
Resultados Finales:
Coeficientes :
1.1612066
Desviacin estndar: 0.13066609
sighat : 0.85831421
__________________________________________________________
valor inicial:
-2.0000000
Nro Iter
S(b)
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
-2.0000000
-2.0210412
-2.0270802
-2.0288056
-2.0292979
58.543856
58.525137
58.523569
58.523440
58.523430
6.0000000
7.0000000
8.0000000
9.0000000
10.000000
11.000000
-2.0294384
-2.0294784
-2.0294898
-2.0294931
-2.0294940
-2.0294943
58.523429
58.523429
58.523429
58.523429
58.523429
58.523429
Resultados Finales:
Coeficientes : -2.0294944
Desviacin estndar: 0.30239316
sighat :
3.0801805
__________________________________________________________
valor inicial:
0.10000000
Nro Iter
S(b)
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
6.0000000
7.0000000
0.10000000
1.5167318
1.1953980
1.1623622
1.1612371
1.1612074
1.1612066
45.529003
23.698761
16.366227
16.308035
16.307970
16.307970
16.307970
Resultados Finales:
Coeficientes :
1.1612066
Desviacin estndar: 0.13066609
sighat : 0.85831421
__________________________________________________________
valor inicial:
Nro Iter
1.0000000
-0.90000000
b
S(b)
-0.90000000
65.840064
2.0000000
3.0000000
4.0000000
5.0000000
6.0000000
7.0000000
8.0000000
9.0000000
-0.68930728
0.32268818
1.3672489
1.1754547
1.1616250
1.1612176
1.1612069
1.1612066
64.498203
37.475993
18.615783
16.317983
16.307979
16.307970
16.307970
16.307970
Resultados Finales:
Coeficientes :
1.1612066
Desviacin estndar: 0.13066609
sighat : 0.85831421
__________________________________________________________
Con respecto a los resultados obtenidos, ellos son los mismos que los
reproducidos en el libro de Judge en la pgina 507. Por lo tanto, el objetivo del
problema planteado se verifica.
El programa tambin calcula la desviacin estndar del estimador y el valor
estimado (sighat) de:
2
S ( )
T K
valor inicial:
Nro Iter
1.0000000
2.0000000
1.0000000
b
S(b)
1.0000000
1.1863055
17.475884
16.339215
3.0000000
4.0000000
5.0000000
1.1616846
1.1612068
1.1612066
16.307981
16.307970
16.307970
Resultados Finales:
Coeficientes :
1.1612066
Desviacin estndar: 0.093626478
sighat : 0.85831421
valor inicial:
-2.0000000
Nro Iter
1.0000000
2.0000000
3.0000000
4.0000000
S(b)
-2.0000000
-2.0306642
-2.0294962
-2.0294944
58.543856
58.523462
58.523429
58.523429
Resultados Finales:
Coeficientes : -2.0294944
Desviacin estndar: 0.25290953
sighat :
3.0801805
valor inicial:
0.10000000
Nro Iter
1.0000000
2.0000000
3.0000000
4.0000000
5.0000000
b
0.10000000
-2.0962680
-2.0344532
-2.0295253
-2.0294944
S(b)
45.529003
58.636893
58.524023
58.523429
58.523429
Resultados Finales:
Coeficientes : -2.0294944
Desviacin estndar: 0.25290953
sighat :
3.0801805
valor inicial:
-0.90000000
Nro Iter
1.0000000
2.0000000
3.0000000
4.0000000
S(b)
-0.90000000
-0.97528541
-0.97761903
-0.97762146
65.840064
65.939519
65.939607
65.939607
Resultados Finales:
Coeficientes : -0.97762146
Desviacin estndar:
.
sighat :
3.4705057
0= 1
Iteraciones
Coeficientes
()
2(e)
0= -2
Iteraciones
Coeficientes
()
2(e)
0= 0.1
Iteraciones
Coeficientes
()
2(e)
0= -0.9
Iteraciones
Coeficientes
()
2(e)
Gauss-Newton
Newton-Raphson
5
1.1612066
0.13066609
0.85831421
5
1.1612066
0.13066610
0.85831421
11
-2.0294944
0.30239316
3.0801805
4
-2.0294944
0.30239314
3.0801805
7
1.1612066
0.13066609
0.85831421
5
-2.0294944
0.30239314
3.0801805
9
1.1612066
0.13066609
0.85831421
1
-0.90000000
0.75045196
3.4652665
MATHEMATICA 4.0
Se exponen a continuacin las distintas programaciones que se realizaros en
Mathematica 4.0 en donde previamente se definieron dos nuevas funciones. Los
programas se presentan a continuacin:
Inicializaciones
@
D
@
D
@
D
@
@
@
@
@
D
D
8
@
D
<
D
@
D
D
8
@
D
<
D
@
D
@
@
@
D
D
8
@
D
<
D
@
D
@@
@
@
D@
D
D
8 @
D
<8 @
D
<D
@
D@@
@
8
<
8
@
D
<
D
@8<@@
@
D@
D
@
D8 @
D
<D@
8@
8<D
<D
D
@
D
@
D
A
8
<
H
@
D
@
@
@
D
@
D
@
D
8
@
D
<
D
L
@D
E
@
D
@
8
<
@
@
@
@
D
@
D
@
D
8
@
D
<
D
8@@
D
<D@
@
D
8<D
@
@
@
@
@
D
@
D
@
D
8
@
D
<
D
D
@
@
@
D
@
D
@
D
8
@
D
<
D
D
@
@@
@
@
D@
@
D
@
D8 @
D
<D
D
H@
@
8
<
D
8
<
D
@
D@
D
@
D8 @
D
<D
L@
8@
8<D
<D
D
;Print i, N xo , m
Module f , f=
y i - ReplaceAll g, Table x j X i
j , j,1, Length x
i=1
Newton f, b, bo,n, m ;
MCO NO LINEALES
@@ D D
@
8
@
@
@
D
D8<D
<
D
<D
@
8
@
@
@
D
8
<
D
@
D
@
@D8 <D
8
<
88<
<
! ! datos2.txt
<< LinearAlgebra`MatrixManipulation`
Clear t, y, x, X, f, g, B ;
A = ReadList "datos2.txt", Number ;
X1 = Transpose 1 100 Table A 3 i - 1 , i, 1, 20
;
X2 = Transpose 1 100 Table A 3 i , i, 1, 20
;
X = AppendRows X1, X2 ;
Y = 1 100 Table A 3 i - 2 , i, 1, 20 ;
g = b x + b^2 y;
t = x, y ;
B= b ;
xo = 1 ;
ALGORITMO GAUSS-NEWTON
^2 ;
@
D
8
<
8<@
8
8
<
8
8
8
8
8
8
8
8
8
8
8
8
8
88
88
8
@
D
8
<
8<@
8
8
<
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
888
Clear xo ;
xo = 1 ;
1, xo
GaussNewton g, Y, X, t, B, xo, 7, 20
D
<
<
<
<
<
<
<
<
<
<<
<
1, 1
1,
1.1633105572659611586
2,
1.1612626396343619205
3,
1.1612080935918722895
4,
1.1612066667736527145
5,
1.1612066294689959553
6,
1.1612066284936651763
ALGORITMO NEWTON-RAPHSON
Clear xo ;
xo = 1 ;
1, xo
MCONewton g, Y, X, t, B, xo, 7, 20
D
<
<
<
<
<
<
<
<
<
<
<<
1, 1
1,
1.1863074163686491837
2,
1.1616844395112967282
3,
1.1612068066614652103
4,
1.1612066284675053483
5,
1.1612066284674805505
6,
1.1612066284674805505
Por cuestiones de espacio solo se muestran las programaciones y los resultados para un
solo punto inicial ya que los resultados son idnticos a los obtenidos por Gauss Light
solo que con mas precisin.
MAPLE 6
Se exponen a continuacin las programaciones efectuadas en este programa
MTODO DE NEWTON
JORGE M. OVIEDO
Agosto 2002
INICIALIZACIONES
> restart;
with(linalg):
OPTIMIZACIN NO LINEAL
Resultados Exactos del Algoritmo
Sintaxis:
Procedimiento
> Newton := proc(f,x,xo,n)
#f=funcion a optimizar
#x=listado de variables
#xo=listado de valores iniciales de las variables
#n= numero de iteraciones
local i,h,t,Sol,xx,xxo;
xx := [seq(x[i]=xo[i], i=1..nops(x) )];
xxo := xo;
for t from 1 to n do
Sol:=evalm(xxo-eval(multiply(grad(f, x),inverse(hessian(f,x))),xx)):
xxo := Sol:
xx:=[seq(x[h]=Sol[h],h=1..nops(x))]:
print(Sol);
od;
end;
Ejem plo
Resultados Numericos
MCO NO LINEALES
Algoritmo Newton-Raphson
Sintaxis
Ejemplo
> Da:=[[3284, 0286, 0645],[
3149, 0973, 0585],[
2877, 0384, 0310],[
-0467, 0276, 0058],[
1211, 0973, 0455],[
1389, 0543, 0779],[
1145, 0957, 0259],[
2321, 0948, 0202],[
0998, 0543, 0028],[
0379, 0797, 0099],[
1106, 0936, 0142],[
0428, 0889, 0296],[
0011, 0006, 0175],[
1179, 0828, 0180],[
1858, 0399, 0842],[
0388, 0617, 0039],[
0651, 0939, 0103],[
0593, 0784, 0620],[
0046, 0072, 0158],[
1152, 0889, 0704]]:
> y1:=[seq(Da[i,1],i=1..nops(Da))]:
d1:=[seq([Da[i,2],Da[i,3]],i=1..nops(Da))]:
> y:=1/1000*y1;d:=1/1000*d1:
> g:=b*x1+b^2*x2:
dd:=[x1,x2]:
> MCO_Newton(b*x1+b^2*x2,y,d,[x1,x2],[b],[1.],10,30);
>
Algoritmo Gauss-Newton
Sintaxis
Procedimiento
> GaussNewton := proc(g,y,d,dd,x,xo,n,m)
Ejemplo
> y:=[2,4];d:=[[1,3],[5,7]];dd:=[P,M];
> GaussNewton(b*x1+b^2*x2,y,d,[x1,x2],[b],[1.],10,30);
MATLAB 5.3
A raz de que este software no cuenta con comandos predeterminados para calcular
gradientes ni hessianos se debi proceder a crearlos usando derivadas numricas.
En este software solo se expondrn las programaciones y no las salidas a los efectos de
no ser redundante:
GAUSS NEWTON
digits(30);
f=inline('b*x1+b.^2*x2','x1','x2','b')
h=0.01
bo=5;
y=[1,9];
x1=[1,3];
x2=[4,9];
for j=1:15
for i = 1:2
F(i)=f(x1(i),x2(i),bo);
z1(i)=f(x1(i),x2(i),bo+h);
z2(i)=f(x1(i),x2(i),bo-h);
end
Z=(z1-z2)*(1/(2*h));
bn=bo+inv(Z*Z')*Z*(y-F)';
bo=bn;
vpa([j,bo])
end
NEWTON-RAPSHON
digits(30);
z=inline('b*x1+b.^2*x2','x1','x2','b')
h=0.01
bo=5;
y=[1,9];
%CARGAR DATOS%
x1=[1,3];
x2=[4,9];
for j=1:15
for i = 1:2
s1(i)=(y(i)-z(x1(i),x2(i),bo)).^2;
s2(i)=(y(i)-z(x1(i),x2(i),bo+h)).^2;
s3(i)=(y(i)-z(x1(i),x2(i),bo-h)).^2;
end
so=sum(s1);
somash=sum(s2);
somenosh=sum(s3);
der=(somash-somenosh)/(2*h);
hes=(somash-2*so+somenosh)/(h.^2);
bn=bo-(der/hes);
bo=bn;
vpa([j,bo])
end
EXCEL 2002
Por medio de una Macro se cre un programa capaz de estimar n parmetros de un
modelo no lineal con k variables independientes y t observaciones. Los comandos de
Visual Basic se muestran a continuacin. Para mayor detalle explorar el archivo .xls que
se adjunta en este trabajo.
Sub Volver()
'
'
' Macro escrita el 20/08/2002 por JORGE MAURICIO OVIEDO
'
'
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
Cells(1,
4).FormulaR1C1 = "b1"
5).FormulaR1C1 = "b2"
6).FormulaR1C1 = "b3"
7).FormulaR1C1 = "b4"
8).FormulaR1C1 = "b5"
9).FormulaR1C1 = "b6"
10).FormulaR1C1 = "b7"
11).FormulaR1C1 = "b8"
12).FormulaR1C1 = "b9"
13).FormulaR1C1 = "b10"
14).FormulaR1C1 = "b11"
15).FormulaR1C1 = "b12"
16).FormulaR1C1 = "b13"
17).FormulaR1C1 = "b14"
18).FormulaR1C1 = "b15"
19).FormulaR1C1 = "b16"
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
5).FormulaR1C1 = "x1"
6).FormulaR1C1 = "x2"
7).FormulaR1C1 = "x3"
8).FormulaR1C1 = "x4"
9).FormulaR1C1 = "x5"
10).FormulaR1C1 = "x6"
11).FormulaR1C1 = "x7"
12).FormulaR1C1 = "x8"
13).FormulaR1C1 = "x9"
14).FormulaR1C1 = "x10"
15).FormulaR1C1 = "x11"
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
16).FormulaR1C1
17).FormulaR1C1
18).FormulaR1C1
19).FormulaR1C1
20).FormulaR1C1
21).FormulaR1C1
22).FormulaR1C1
23).FormulaR1C1
24).FormulaR1C1
25).FormulaR1C1
26).FormulaR1C1
27).FormulaR1C1
28).FormulaR1C1
29).FormulaR1C1
30).FormulaR1C1
31).FormulaR1C1
32).FormulaR1C1
33).FormulaR1C1
34).FormulaR1C1
35).FormulaR1C1
36).FormulaR1C1
37).FormulaR1C1
38).FormulaR1C1
39).FormulaR1C1
40).FormulaR1C1
41).FormulaR1C1
42).FormulaR1C1
43).FormulaR1C1
44).FormulaR1C1
45).FormulaR1C1
46).FormulaR1C1
47).FormulaR1C1
48).FormulaR1C1
49).FormulaR1C1
50).FormulaR1C1
51).FormulaR1C1
52).FormulaR1C1
53).FormulaR1C1
54).FormulaR1C1
55).FormulaR1C1
56).FormulaR1C1
57).FormulaR1C1
58).FormulaR1C1
59).FormulaR1C1
60).FormulaR1C1
61).FormulaR1C1
62).FormulaR1C1
63).FormulaR1C1
64).FormulaR1C1
65).FormulaR1C1
66).FormulaR1C1
67).FormulaR1C1
68).FormulaR1C1
69).FormulaR1C1
70).FormulaR1C1
71).FormulaR1C1
72).FormulaR1C1
73).FormulaR1C1
74).FormulaR1C1
75).FormulaR1C1
76).FormulaR1C1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
"x12"
"x13"
"x14"
"x15"
"x16"
"x17"
"x18"
"x19"
"x20"
"x21"
"x22"
"x23"
"x24"
"x25"
"x26"
"x27"
"x28"
"x29"
"x30"
"x31"
"x32"
"x33"
"x34"
"x35"
"x36"
"x37"
"x38"
"x39"
"x40"
"x41"
"x42"
"x43"
"x44"
"x45"
"x46"
"x47"
"x48"
"x49"
"x50"
"x51"
"x52"
"x53"
"x54"
"x55"
"x56"
"x57"
"x58"
"x59"
"x60"
"x61"
"x62"
"x63"
"x64"
"x65"
"x66"
"x67"
"x68"
"x69"
"x70"
"x71"
"x72"
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
Cells(8,
77).FormulaR1C1 = "x73"
78).FormulaR1C1 = "x74"
79).FormulaR1C1 = "x75"
80).FormulaR1C1 = "x76"
81).FormulaR1C1 = "x77"
82).FormulaR1C1 = "x78"
83).FormulaR1C1 = "x79"
84).FormulaR1C1 = "x80"
85).FormulaR1C1 = "x81"
86).FormulaR1C1 = "x82"
87).FormulaR1C1 = "x83"
88).FormulaR1C1 = "x84"
89).FormulaR1C1 = "x85"
90).FormulaR1C1 = "x86"
91).FormulaR1C1 = "x87"
92).FormulaR1C1 = "x88"
93).FormulaR1C1 = "x89"
94).FormulaR1C1 = "x90"
95).FormulaR1C1 = "x91"
96).FormulaR1C1 = "x92"
97).FormulaR1C1 = "x93"
98).FormulaR1C1 = "x94"
99).FormulaR1C1 = "x95"
100).FormulaR1C1 = "x96"
101).FormulaR1C1 = "x97"
102).FormulaR1C1 = "x98"
103).FormulaR1C1 = "x99"
104).FormulaR1C1 = "x100"
Sheets("Hoja1").Select
End Sub
Sub defx()
'
'
' Macro escrita el 20/08/2002 por JORGE MAURICIO OVIEDO
'
'
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
Name:="x_1", RefersToR1C1:="=Hoja2!RC5"
Name:="x_2", RefersToR1C1:="=Hoja2!RC6"
Name:="x_3", RefersToR1C1:="=Hoja2!RC7"
Name:="x_4", RefersToR1C1:="=Hoja2!RC8"
Name:="x_5", RefersToR1C1:="=Hoja2!RC9"
Name:="x_6", RefersToR1C1:="=Hoja2!RC10"
Name:="x_7", RefersToR1C1:="=Hoja2!RC11"
Name:="x_8", RefersToR1C1:="=Hoja2!RC12"
Name:="x_9", RefersToR1C1:="=Hoja2!RC13"
Name:="x_10", RefersToR1C1:="=Hoja2!R14"
Name:="x_11", RefersToR1C1:="=Hoja2!RC15"
Name:="x_12", RefersToR1C1:="=Hoja2!RC16"
Name:="x_13", RefersToR1C1:="=Hoja2!RC17"
Name:="x_14", RefersToR1C1:="=Hoja2!RC18"
Name:="x_15", RefersToR1C1:="=Hoja2!RC19"
Name:="x_16", RefersToR1C1:="=Hoja2!RC20"
Name:="x_17", RefersToR1C1:="=Hoja2!RC21"
Name:="x_18", RefersToR1C1:="=Hoja2!RC22"
Name:="x_19", RefersToR1C1:="=Hoja2!RC23"
Name:="x_20", RefersToR1C1:="=Hoja2!RC24"
Name:="x_21", RefersToR1C1:="=Hoja2!RC25"
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
Name:="x_22",
Name:="x_23",
Name:="x_24",
Name:="x_25",
Name:="x_26",
Name:="x_27",
Name:="x_28",
Name:="x_29",
Name:="x_30",
Name:="x_31",
Name:="x_32",
Name:="x_33",
Name:="x_34",
Name:="x_35",
Name:="x_36",
Name:="x_37",
Name:="x_38",
Name:="x_39",
Name:="x_40",
Name:="x_41",
Name:="x_42",
Name:="x_43",
Name:="x_44",
Name:="x_45",
Name:="x_46",
Name:="x_47",
Name:="x_48",
Name:="x_49",
Name:="x_50",
Name:="x_51",
Name:="x_52",
Name:="x_53",
Name:="x_54",
Name:="x_55",
Name:="x_56",
Name:="x_57",
Name:="x_58",
Name:="x_59",
Name:="x_60",
Name:="x_61",
Name:="x_62",
Name:="x_63",
Name:="x_64",
Name:="x_65",
Name:="x_66",
Name:="x_67",
Name:="x_68",
Name:="x_69",
Name:="x_70",
Name:="x_71",
Name:="x_72",
Name:="x_73",
Name:="x_74",
Name:="x_75",
Name:="x_76",
Name:="x_77",
Name:="x_78",
Name:="x_79",
Name:="x_80",
Name:="x_81",
Name:="x_82",
RefersToR1C1:="=Hoja2!RC26"
RefersToR1C1:="=Hoja2!RC27"
RefersToR1C1:="=Hoja2!RC28"
RefersToR1C1:="=Hoja2!RC29"
RefersToR1C1:="=Hoja2!RC30"
RefersToR1C1:="=Hoja2!RC31"
RefersToR1C1:="=Hoja2!RC32"
RefersToR1C1:="=Hoja2!RC33"
RefersToR1C1:="=Hoja2!RC34"
RefersToR1C1:="=Hoja2!RC35"
RefersToR1C1:="=Hoja2!RC36"
RefersToR1C1:="=Hoja2!RC37"
RefersToR1C1:="=Hoja2!RC38"
RefersToR1C1:="=Hoja2!RC39"
RefersToR1C1:="=Hoja2!RC40"
RefersToR1C1:="=Hoja2!RC41"
RefersToR1C1:="=Hoja2!RC42"
RefersToR1C1:="=Hoja2!RC43"
RefersToR1C1:="=Hoja2!RC44"
RefersToR1C1:="=Hoja2!RC45"
RefersToR1C1:="=Hoja2!RC46"
RefersToR1C1:="=Hoja2!RC47"
RefersToR1C1:="=Hoja2!RC48"
RefersToR1C1:="=Hoja2!RC49"
RefersToR1C1:="=Hoja2!RC50"
RefersToR1C1:="=Hoja2!RC51"
RefersToR1C1:="=Hoja2!RC52"
RefersToR1C1:="=Hoja2!RC53"
RefersToR1C1:="=Hoja2!RC54"
RefersToR1C1:="=Hoja2!RC55"
RefersToR1C1:="=Hoja2!RC56"
RefersToR1C1:="=Hoja2!RC57"
RefersToR1C1:="=Hoja2!RC58"
RefersToR1C1:="=Hoja2!RC59"
RefersToR1C1:="=Hoja2!RC60"
RefersToR1C1:="=Hoja2!RC61"
RefersToR1C1:="=Hoja2!RC62"
RefersToR1C1:="=Hoja2!RC63"
RefersToR1C1:="=Hoja2!RC64"
RefersToR1C1:="=Hoja2!RC65"
RefersToR1C1:="=Hoja2!RC66"
RefersToR1C1:="=Hoja2!RC67"
RefersToR1C1:="=Hoja2!RC68"
RefersToR1C1:="=Hoja2!RC69"
RefersToR1C1:="=Hoja2!RC70"
RefersToR1C1:="=Hoja2!RC71"
RefersToR1C1:="=Hoja2!RC72"
RefersToR1C1:="=Hoja2!RC73"
RefersToR1C1:="=Hoja2!RC74"
RefersToR1C1:="=Hoja2!RC75"
RefersToR1C1:="=Hoja2!RC76"
RefersToR1C1:="=Hoja2!RC77"
RefersToR1C1:="=Hoja2!RC78"
RefersToR1C1:="=Hoja2!RC79"
RefersToR1C1:="=Hoja2!RC80"
RefersToR1C1:="=Hoja2!RC81"
RefersToR1C1:="=Hoja2!RC82"
RefersToR1C1:="=Hoja2!RC83"
RefersToR1C1:="=Hoja2!RC84"
RefersToR1C1:="=Hoja2!RC85"
RefersToR1C1:="=Hoja2!RC86"
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C13"
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C14"
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C15"
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C16"
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C17"
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C18"
ActiveWorkbook.Names.Add
RefersToR1C1:="=Hoja2!R2C19"
Name:="b_1", RefersToR1C1:="=Hoja2!R2C4"
Name:="b_2", RefersToR1C1:="=Hoja2!R2C5"
Name:="b_3", RefersToR1C1:="=Hoja2!R2C6"
Name:="b_4", RefersToR1C1:="=Hoja2!R2C7"
Name:="b_5", RefersToR1C1:="=Hoja2!R2C8"
Name:="b_6", RefersToR1C1:="=Hoja2!R2C9"
Name:="b_7", RefersToR1C1:="=Hoja2!R2C10"
Name:="b_8", RefersToR1C1:="=Hoja2!R2C11"
Name:="b_9", RefersToR1C1:="=Hoja2!R2C12"
Name:="b_10",
Name:="b_11",
Name:="b_12",
Name:="b_13",
Name:="b_14",
Name:="b_15",
Name:="b_16",
End Sub
Sub MCO_n_VAR()
'
' MCO_n_VAR Macro
' Macro escrita el 20/08/2002 por JORGE MAURICIO OVIEDO
'
'
n = Cells(4, 4).Value
k = Cells(5, 4).Value
m = Cells(6, 4).Value
Cells(10, 3).Select
Selection.AutoFill Destination:=Range(Cells(10, 3), Cells(10 + m 1, 3)), Type:=xlFillDefault
Range(Cells(11, 1), Cells(11, 2)).Select
Selection.AutoFill Destination:=Range(Cells(11, 1), Cells(11 + m 2, 2)), Type:=xlFillDefault
Cells(1, 1).Select
SolverReset
SolverOk SetCell:=Cells(10 + m - 1, 1), MaxMinVal:=2,
ValueOf:="0", ByChange:=Range(Cells(2, 4), Cells(2, 4 + n - 1))
SolverSolve
End Sub
Sub ir()
'
' ir Macro
' Macro escrita el 20/08/2002 por JORGE MAURICIO OVIEDO
'
'
Sheets("Hoja2").Select
t = Cells(4, 4).Value
q = Cells(5, 4).Value
Range(Cells(1, 4 + t), Cells(2, 21)).Select
Selection.ClearContents
Range(Cells(8, 5 + q), Cells(65000, 105)).Select
Selection.ClearContents
Cells(1, 3).Select
End Sub
EVIEW-S
A continuacin vamos a utilizar el programa E-views para estimar los
parmetros de un modelo utilizando MCNL. ste permite aplicar MCNL a cualquier
ecuacin (un tipo de objeto que reconoce E-views, junto con series, muestras, grficos,
grupos, etc.) que sea no lineal con respecto a sus parmetros, de forma automtica
simplemente al pedirle al programa que utilice mnimos cuadrados ordinarios..
Los valores iniciales de que E-views utiliza para comenzar el proceso
iterativo estn dados por los valores de los parmetros que se encuentran en el vector de
coeficientes (otro tipo de objeto que reconoce el programa) en el momento de comenzar
la estimacin. Por lo tanto, si se utiliza el vector de coeficientes por defecto (C) que Eviews crea siempre que un nuevo workfile es generado, los valores iniciales para todos
los parmetros es "0".
En nuestro caso, una vez creada la ecuacin con las especificaciones del modelo, E-views
lleva a cabo una estimacin por MCNL, donde el valor inicial del parmetro es "0". El output
obtenido es:
Dependent Variable: Y
Method: Least Squares
Date: 08/11/02 Time: 21:53
Sample: 1 20
Included observations: 20
Convergence achieved after 5 iterations
Y=C(1)*X1+(C(1)^2)*X2
Coefficient
C(1)
R-squared
Adjusted R-squared
S.E. of regression
Sum squared resid
Log likelihood
1.161211
0.217987
0.217987
0.926452
16.30797
-26.33799
Std. Error
t-Statistic
0.130655
8.887632
Prob.
0.0000
1.184900
1.047650
2.733799
2.783585
1.005021
Como vemos, no hemos llegado al mnimo absoluto de nuestra funcin, sino a un mnimo
local. Al aplicar Gauss-Newton, llegbamos a dos valores mnimos, donde 1,1612066 era un
mnimo local, pero no absoluto (dado por 2,2.0294944). Se debe ser cuidadoso en este
aspecto al estimar un modelo no lineal, ya que dependiendo del valor de partida ser el
mnimo (local o absoluto) al que llegaremos.
0=1
Dependent Variable: Y
Method: Least Squares
Date: 12/11/02 Time: 23:12
Sample: 1 20
Included observations: 20
Coefficient
Std. Error
t-Statistic
Prob.
1.161208
0.130662
8.887105
0.0000
0.217987
0.217987
0.926452
16.30797
-26.33799
1.184900
1.047650
2.733799
2.783585
1.005021
0= -2
Dependent Variable: Y
Method: Least Squares
Date: 12/11/02 Time: 23:17
Sample: 1 20
Included observations: 20
Convergence achieved after 8 iterations
Y=C(1)*X1+(C(1)^2)*X2
C(1)
R-squared
Adjusted R-squared
S.E. of regression
Sum squared resid
Log likelihood
Coefficient
Std. Error
t-Statistic
Prob.
-2.029462
0.302417
-6.710797
0.0000
-1.806364
-1.806364
1.755044
58.52343
-39.11572
1.184900
1.047650
4.011572
4.061359
1.039450
0= 0.1
Dependent Variable: Y
Method: Least Squares
Date: 12/11/02 Time: 23:20
Sample: 1 20
Included observations: 20
Convergence achieved after 8 iterations
Y=C(1)*X1+(C(1)^2*X2)
C(1)
R-squared
Adjusted R-squared
S.E. of regression
Sum squared resid
Log likelihood
Coefficient
Std. Error
t-Statistic
Prob.
1.161208
0.130662
8.887105
0.0000
0.217987
0.217987
0.926452
16.30797
-26.33799
1.184900
1.047650
2.733799
2.783585
1.005021
0= -0.9
Dependent Variable: Y
Method: Least Squares
Date: 0
Included observations: 20
Convergence achieved after 7 iterations
Y=C(1)*X1+(C(1)^2)*X2
C(1)
R-squared
Adjusted R-squared
S.E. of regression
Sum squared resid
Log likelihood
Coefficient
Std. Error
t-Statistic
Prob.
1.161209
0.130660
8.887264
0.0000
0.217987
0.217987
0.926452
16.30797
-26.33799
1.184900
1.047650
2.733799
2.783585
1.005021
El contenido de esta seccin surge de trabajos conjuntos realizados con Paulo Jos Regis en agostosetiembre del presente ao en el tema de caos y fractales.
En smbolos:
1
2
n +1 = n
S '()
S ''()
f ( z) f ( z 0 ) + f '( z) z
(z z0 )
=0
Dado que establecimos que S()=f(z) claramente los dos algoritmos son los
mismos. Esta segundo enfoque del problema nos sirve para ganar intuicin a la hora de
plantear las dificultades que posee Newton-Rahpson en cuanto a sus propiedades de
convergencia global.
f(z)
una raz (de echo ha alcanzado una raz pero es imaginaria!!, ver siguiente seccin), la
raz que estamos buscando, pero solo ha alcanzado un mximo. En el problema de
minimizar una funcin, el algoritmo nos llevara a un punto de inflexin y no hacia un
mnimo. Vemos que este problema no es el que ya habamos visto. Ya habamos tratado
el caso en que Newton-Raphson nos llevara a un mximo en vez de un mnimo (despus
de todo una raz para y=f(z) equivale tanto a una CPO par un mximo como un
mnimo), pero ste es distinto.
En la siguiente seccin mostramos una funcin que presenta estos problemas.
Para ciertos valores iniciales, el algoritmo nos llevara a un mnimo, para otros valores
iniciales, nos llevara a un mximo y para otros valores iniciales nos llevara a otro tipo
de punto notable.
2.5.1. NEWTON-RAPHSON Y FRACTALES
Una forma interesante de analizar las propiedades de convergencia global
impredecible del algoritmo de Newton-Raphson es investigar para ciertas ecuaciones
especiales los valores iniciales para los cuales el mtodo converge y no converge a sus
diferentes races. Consideremos la ecuacin
z3 1 = 0
La cual posee una sola raz real z=1, pero que tambin posee otras dos races
imaginarias z=(-0,5+0,833i) y z=(-0,5-0,833i). Dichas races imaginarias tambin son
puntos notables, por lo que pueden ser candidatos a races. Las races corresponden a
mximos.
Cabe aclarar que este problema es equivalente a encontrar el mnimo de la
funcin S(z)=z4/4+z (para el caso de MCNL, digamos que esta funcin es la suma de
cuadrados de los residuos de un modelo intrnsecamente no lineal).
Aplicando el algoritmo de Newton-Raphson para encontrar las races en
nuestra ecuacin particular, tenemos:
z t +1
z 3t 1
= zt
3z 2t
(2.51
.)
Hasta ahora, solo hemos aplicado dicho iterador solo para valores iniciales (z0)
reales, pero ello es demasiado restrictivo, Newton-Raphson se puede aplicar a casos
ms generales. En realidad, se puede aplicar el algoritmo tanto para valores iniciales
reales como imaginarios y puede converger, como demostraremos a continuacin,
tanto a valores reales como imaginarios.
Lo que haremos a continuacin es centrar nuestra atencin en el plano imaginario.
Utilizaremos 2.5.1 para valores iniciales que pertenezcan al plano complejo y
veremos que ocurre. Sin duda que el algoritmo nos llevar a la convergencia de
alguna de las tres races.
Lo esperable sera que hubiera zonas de influencia de cada raz bien delimitadas, con
fronteras entre dichas zonas suaves.
El siguiente programa en Matlab 5.3 examina los valores iniciales en el plano
imaginario con componentes reales en el rango [-3/2,3/2] e imaginarios en el rango
[-2,3/2]. Nos grafica los puntos de dicho plano que corresponden a valores iniciales
de z (z0)que nos llevan, a travs de un proceso iterativo, a la no convergencia de zt+1
hacia z=1 (o dicho de otra forma, que convergen a las otras dos races).
clear all
figure
axis([-1.5 1.5 -2 1.5])
n=100
hold on
s=0;
for j=1:n
t = -1.5 + (3/n)*j;
for k = 1:n
z = t + (-2+(3.5/n)*k)*i;
y=z;
for h=1:45
w=(y.^3-1)/(2*y.^2);
x=y-w;
y=x;
end
if abs(imag(y))<0.0000001
plot(real(z),imag(z));
end
end
end
BIBLIOGRAFA:
APSTOL, Tom: Calculus. Ed. Revert. 1976. Segunda Edicin
CHIANG, Alpha: Economa Matemtica. Ed. McGraw-Hill. 1998
GUJARATI, Damodar : Econometra Bsica. Ed. McGraw-Hill. 1991
JOHNSTON, J. :
Tercera Edicin.
Mtodos Economtricos.