前提・実現したいこと
980個の数値を持つ教師データyを用いて数理モデルのパラメータ推定を行いたいと考えています。
推定方法として尤度推定を行いたいのですが、想定と異なる推定値と警告が出力されました。
コードの間違いと改善方法をお教えいただきたいです。
発生している問題・エラーメッセージ
C:\ProgramData\Anaconda3\lib\site-packages\ipykernel_launcher.py:7: RuntimeWarning: overflow encountered in multiply import sys C:\ProgramData\Anaconda3\lib\site-packages\scipy\optimize\optimize.py:597: RuntimeWarning: invalid value encountered in subtract numpy.max(numpy.abs(fsim[0] - fsim[1:])) <= fatol):
該当のソースコード
python
1import numpy as np 2from scipy import optimize 3 4def garch_lik_func(params,y): 5 [z, m, a, b] = params 6 e = y - z 7 h = np.zeros((len(y),1)) 8 h[0] = np.mean(e**2) 9 for i in range(1,len(y)): 10 h[i] = m + b*h[i-1] + a*e[i-1]**2 11 return -np.sum(np.log(h)) 12 13a = [0.02, 0.02, 0.2, 0.7] 14optimize.fmin(garch_lik_func, x0=a, args=(data,))
Warning: Maximum number of function evaluations has been exceeded.
array([0.0052566 , 0.00607713, 0.43743075, 2.08267381])
試したこと
データの問題かと考えて別の1から9の整数列でも同様に行いましたが同様の警告が出力されました。
補足情報(FW/ツールのバージョンなど)
conda version : 4.8.3
Python 3.7.6
scipy 1.4.1
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。