通过 MLE 收敛的 GEV

问题描述

如果这是一个愚蠢的问题,我很抱歉,但我想通过 MLE 调整 GEV。然而,在最后一部分,我需要使用方程 dLL / da、dLL / db 和 dLL / dk 来收敛 alpha、beta 和 kappa 参数。如果 dLL 值不接近零,则 alpha = alpha + d_a ... 等等。不幸的是,循环无法以正确的方式工作,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_db,dLL_dk)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)