JuliaExtremes / IDFCurves.jl

MIT License
0 stars 0 forks source link

Add auto-initialization of parameters #27

Closed AugustePaoli99 closed 4 months ago

AugustePaoli99 commented 7 months ago

For now, when fitting both simple scaling and dGEV models, parameter initialization has to be done by hand. Having a good initialization is essential. Should I add, for both models, a method providing a good-enough initialization ? This could also be re-used when estimating a DependentScalingModel

jojal5 commented 6 months ago

Yes this is a good idea. A robust initializing method would be useful. For example, using the Gumbel distribution for each duration and then a regression on Gumbel parameters.

AugustePaoli99 commented 4 months ago

@jojal5 j'ai commencé à m'attaquer à ça. Voici comment j'imagine les choses :

Que penses-tu de cette manière de fonctionner ? As-tu des idées pour l'initialisation de la structure de corrélation ? Comment faisiez-vous avec Paul ?

jojal5 commented 4 months ago

C'est l'idéal. Pour l'initiation de la structure de covariance, on peut procéder comme en géostats et trouver la courbe en minimisant la somme des erreurs au carré. On ajuste un variogramme aux variances en fonction de la distance.

AugustePaoli99 commented 4 months ago

@jojal5 pour le General Scaling, je me suis dit qu'initialiser δ à 0 était suffisant dans un premier temps. Mais δ ne peut pas être exactement 0 car sinon par exemple la méthode map_to_real_space() renvoierait une erreur. Donc j'initialise δ à 0.01. Je conviens que ce n'est pas très élégant ! Qu'en penses-tu ?

AugustePaoli99 commented 4 months ago

@jojal5, c'est fait et ça fonctionne. on peut maintenant appeler la fonction fit_mle() sans fournir de vecteur initial pour les paramètres. Il y a cependant quelque chose qui m'embête : le code des méthodes initialize(Type{<:ExponentialCorrelationStructure}) et initialize(Type{<:MaternCorrelationStructure}) est assez lourd car on y fait une optimisation. Ce n'est pas très élégant. Est-ce que c'est gênant ? Vois-tu un moyen de faire quelque chose de plus joli ? Peut-être pourrait-on cacher la procédure d'optimisation dans une fonction dans utils.jl ?