he definido la siguiente función:Modificación de una variable global dentro de una función
def GMM(s1, s2, s3, s4, s5, a):
"""The GMM objective function.
Arguments
---------
si: float
standard deviations of preference distribution
a: float
marginal utility of residutal income
Paramters
---------
Px: array (1,ns)
projector onto nonprice characteristic space
xk, z: arrays (J, 5) and (J, 12)
nonprice char. and instruments
invW: array (12, 12)
GMM weight matrix
Returns
-------
float."""
delta = invert(s1, s2, s3, s4, s5, a, delta0) # Invert market shares to get mean utility
bmean = np.dot(Px, delta) # Project delta onto charancteristic space
xihat = delta - np.dot(xk, bmean) # Compute implied unobservable prod. quality
temp1 = np.dot(xihat.T, z)
if np.any(np.isnan(delta)) == True:
value = 1e+10
else:
value = np.dot(np.dot(temp1, invW), temp1.T)
return np.sqrt(value)
Mi pregunta se refiere a la variable delta
con destino dentro de la función. Fuera de la función, estableceré el valor inicial de delta0
. Ahora, en última instancia, minimizaré esta función. Lo que me gustaría que sucediera es que cada vez que se evalúa la función GMM
, delta
de la evaluación anterior se usa como el nuevo delta0
. Traté de definir delta0
como una variable global, pero no pareció funcionar ... probablemente este fue mi error. Aunque, he leído aquí que generalmente este es un mal enfoque. ¿Alguna sugerencia?
+1. Hubiera sido mejor haber formulado el código de ejemplo en términos de GMM, delta y delta0 –