Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于MLE收敛的GEV_Python_Loops_Math_Optimization_Boolean Operations - Fatal编程技术网

Python 基于MLE收敛的GEV

Python 基于MLE收敛的GEV,python,loops,math,optimization,boolean-operations,Python,Loops,Math,Optimization,Boolean Operations,如果这是一个愚蠢的问题,我很抱歉,但我想通过MLE调整GEV。然而,在最后一部分中,我需要使用方程dLL/da、dLL/db和dLL/dk来收敛alpha、beta和kappa参数。如果dLL值不接近零,那么alpha=alpha+da…,等等。不幸的是,循环没有以正确的方式工作,alpha、beta和kappa没有改变 我希望你能帮助我。谢谢 import numpy as np x = np.random.rand(51) in_val = [98.8693, -0.1901, 113.0

如果这是一个愚蠢的问题,我很抱歉,但我想通过MLE调整GEV。然而,在最后一部分中,我需要使用方程dLL/da、dLL/db和dLL/dk来收敛alpha、beta和kappa参数。如果dLL值不接近零,那么alpha=alpha+da…,等等。不幸的是,循环没有以正确的方式工作,alpha、beta和kappa没有改变

我希望你能帮助我。谢谢

import numpy as np
x = np.random.rand(51)

in_val = [98.8693, -0.1901, 113.0353]

alpha = in_val[0]
beta = in_val[1]
kappa = in_val[2]


Y_1 = [((-1/beta) * np.log(1 - (( i - kappa ) / alpha) * beta)) for i in x ]
SY_1 = np.array(Y_1)
SSY_1 = SY_1.sum()
e_1 = [np.exp(-i) for i in Y_1]
Se_1 = np.array(e_1)
SSe_1 = Se_1.sum()
e_2 = [np.exp((beta - 1) * i) for i in Y_1]
Se_2 = np.array(e_2)
SSe_2 = Se_2.sum()
e_3 = [np.exp(beta * i) for i in Y_1]
Se_3 = np.array(e_3)
SSe_3 = Se_3.sum()
e_4 = [i * np.exp(-i) for i in Y_1]
Se_4 = np.array(e_4)
SSe_4 = Se_4.sum()
P = N - SSe_1
Q = SSe_2 - (1 - beta) * SSe_3
R = N - SSY_1 + SSe_4
    
a = 0.661437 - 0.562798*beta + 0.985803*beta**2 - 0.059011*beta**3
b = 1.235356 - 0.162161*beta - 0.115137*beta**2 + 0.009577*beta**3
c = 0.4711 - 0.77627*beta + 0.295825*beta**2 - 0.009645*beta**3
f = 0.244435 - 0.10287*beta - 0.19583*beta**2 - 0.016837*beta**3
gs = 0.15373 - 0.411923*beta - 0.479209*beta**2 - 0.075004*beta**3
h = 0.338937 - 1.209555*beta - 0.109822*beta**2 - 0.019801*beta**3
    
d_a = -(alpha / N) * ((h*Q) + ((a*(P+Q))/beta) + (gs/beta)*(R - ((P+Q)/beta)))
d_b = -(1 / N) * ((f*Q) + ((gs*(P+Q))/beta) + (c/beta)*(R - ((P+Q)/beta)))
d_k = -(alpha / N) * ((b*Q) + ((h*(P+Q))/beta) + (f/beta)*(R - ((P+Q)/beta)))

dLL_da = (1 / alpha) * (P + Q) / beta
dLL_db = (1 / beta) * (R - (P + Q) / beta)
dLL_dk = (Q / alpha)

print(alpha, dLL_da, d_a)

for i in range(100):
    if dLL_da < 1e-3:
        print(alpha, dLL_da)
        alpha += d_a
    else:
        print(alpha)
for i in in_val:
    if dLL_db < 1e-3:
        print(beta, dLL_db)
        beta = beta + d_b
    else:
        print(beta)
for i in in_val:
    if dLL_dk < 1e-2:
        print(kappa, dLL_dk)
        kappa = kappa + d_k
    else:
        print("end")
        
print(alpha, beta, kappa, dLL_da, dLL_db, dLL_dk)
将numpy导入为np
x=np.rand.rand(51)
in_val=[98.8693,-0.1901113.0353]
α=单位值[0]
β=单位值[1]
kappa=单位[2]
Y_1=[(-1/beta)*np.log(1-((i-kappa)/alpha)*beta))表示x中的i]
SY_1=np.数组(Y_1)
SSY_1=SY_1.sum()
e_1=[np.exp(-i)表示Y_1中的i]
Se_1=np.数组(e_1)
SSe_1=Se_1.sum()
e_2=[np.exp((β-1)*i)表示Y_1中的i]
Se_2=np.数组(e_2)
SSe_2=Se_2.sum()
e_3=[Y_1中i的np.exp(beta*i)]
Se_3=np.数组(e_3)
SSe_3=Se_3.sum()
e_4=[i*np.exp(-i)表示Y_1中的i]
Se_4=np.数组(e_4)
SSe_4=Se_4.sum()
P=N-SSe_1
Q=SSe_2-(1-β)*SSe_3
R=N-SSY_1+SSe_4
a=0.661437-0.562798*β+0.985803*β**2-0.059011*β**3
b=1.235356-0.162161*β-0.115137*β**2+0.009577*β**3
c=0.4711-0.77627*β+0.295825*β**2-0.009645*β**3
f=0.244435-0.10287*β-0.19583*β**2-0.016837*β**3
gs=0.15373-0.411923*β-0.479209*β**2-0.075004*β**3
h=0.338937-1.209555*β-0.109822*β**2-0.019801*β**3
d_a=-(alpha/N)*((h*Q)+(a*(P+Q))/beta)+(gs/beta)*(R-((P+Q)/beta)))
d_b=-(1/N)*((f*Q)+(gs*(P+Q))/beta)+(c/beta)*(R-((P+Q)/beta)))
d_k=-(alpha/N)*((b*Q)+(h*(P+Q))/beta)+(f/beta)*(R-((P+Q)/beta)))
dLL_da=(1/α)*(P+Q)/β
dLL_db=(1/β)*(R-(P+Q)/β)
dLL_dk=(Q/alpha)
打印(alpha、dLL\u da、d\u a)
对于范围(100)内的i:
如果dLL_da<1e-3:
打印(alpha、dLL\u da)
alpha+=d_a
其他:
打印(alpha)
对于i in_val:
如果dLL_db<1e-3:
打印(测试版、dLL\U db)
β=β+d_b
其他:
打印(测试版)
对于i in_val:
如果dLL_dk<1e-2:
打印(卡帕,dLL\U dk)
卡帕=卡帕+杜克
其他:
打印(“结束”)
打印(alpha、beta、kappa、dLL_da、dLL_db、dLL_dk)