Closed AugustePaoli99 closed 4 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.
@jojal5 j'ai commencé à m'attaquer à ça. Voici comment j'imagine les choses :
Dans dependentscalingmodel.jl, une fonction initialize(pd::Type{<:DependentScalingModel}, data::IDFdata, d₀::Real)
. Cette fonction pourrait faire appel à initialize(pd::Type{<:MarginalScalingModel}, data::IDFdata, d₀::Real)
et initialize(pd::Type{<:CorrelationStructure}, data::IDFdata)
.
La fonction initialize(pd::Type{<:MarginalScalingModel}, data::IDFdata, d₀::Real)
concerne l'initialisation du modèle marginal. Comme mentionné plus haut, procéder par régression sur les paramètres Gumbel semble très bien.
La fonction initialize(pd::Type{<:CorrelationStructure}, data::IDFdata)
concerne l'initialisation de la structure de corrélation. Il est important de bien gérer cette initialisation. Je montre pourquoi par un exemple dans script.jl.
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 ?
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.
@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 ?
@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 ?
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