JuliaExtremes / IDFCurves.jl

MIT License
0 stars 0 forks source link

plotting IDF curves not based on data #61

Closed AugustePaoli99 closed 4 months ago

AugustePaoli99 commented 6 months ago

For now all the methods written in plots.jl for plotting IDF curves have an argument data::IDFdata. Confidence intervals are represented on the plot, based on the data. Should one be able to plot IDF curves based on a purely theoretical IDF scaling model ? Hence should the argument data be made optional ?

jojal5 commented 6 months ago

Bonne idée. Pourrait-on penser à une fonction idfplot(model::AbstractScalingModel) ?

AugustePaoli99 commented 6 months ago

Oui ! Remarque qu'il n'existe plus de type AbstractScalingModel qui a été remplacé par MarginalScalingModel. On peut en effet définir 2 méthodes : idfplot(model::MarginalScalingModel) et idfplot(model::DependentScalingModel), ou bien on peut définir seulement idfplot(model::DependentScalingModel) et dire qu'un MarginalScalingModel est un DependentScalingModel avec copule identité (cf. @issue 30)

AugustePaoli99 commented 5 months ago

@jojal5, comment imagines-tu le tracé des courbes IDF ? Quelque chose qui ressmble à ce que j'avais fait dans IDF.jl (cf figures de l'article) ? Dans le cas où on trace des courbes IDF provenant d'une estimation de paramètres :

jojal5 commented 5 months ago

Les figures du manuscrit sont parfaites. Ça devrait être la fonction par défaut.

Les fonctionnalités additionnelles concernant les intervalles de confiance pourraient être possibles mais optionnelles car elles surcharges les figures. Dans le cas où les intervalles de confiance sont tracés (à la demande de l'utilisateur), il devrait choisir les période de retour pour ne pas surcharger les figures.

AugustePaoli99 commented 4 months ago

J'ai fait les fonctions de base dans plots.jl et les ai ajoutées dans dev. Pour les fonctionnalités additionnelles (intervalles de confiance...) je vais créer une nouvelle branche.

AugustePaoli99 commented 4 months ago

J'ai une première version du code qui me semble satisfaisante. Les fonctionnalités que l'on désirait sont implémentées. Cependant je ne suis pas sûr de la structure, tu pourras me dire ce que tu en penses ?

En gros la fonction principale est plotIDFCurves(). Il y a deux méthodes, plotIDFCurves(model::DependentScalingModel; ...) et plotIDFCurves(model::DependentScalingModel, data::IDFdata; ...). Les arguments optionnels concernent les période de retour et les durées d'accumulation pour lesquelles on veut représenter la courbe. Pour la deuxième méthode, il y a également un argument optionnel show_confidence_intervals.

La première méthode fait appel à la fonction get_layers_IDFCurves(model::DependentScalingModel, T_values::Vector{<:Real}, durations_range::Vector{<:Real}) qui renvoie un vecteur de layers, chacun contenant la courbe relative à une des périodes de retour contenues dans T_values, sur l'intervalle de durées durations_range et calculée à partir du modèle model. La deuxième méthode fait appel à cette même fonction mais également à la fonction get_layers_pointwise_estimations(data::IDFdata, T_values::Vector{<:Real}, durations::Vector{<:Real}, show_confidence_intervals::Bool) qui qui renvoie un vecteur de layers dans lesquels figurent les estimations ponctuelles des niveaux de retour, calculés à l'aide de la bibliothèque Extremes.jl. Si show_confidence_intervals = true, on représente également ls intervalles de confiance à 95% associés à ces estimations ponctuelles.

jojal5 commented 4 months ago

C'est très astucieux ! J'approuve le tout :)

AugustePaoli99 commented 4 months ago

OK, dans ce cas je ferme cette issue et je merge dans dev. Cependant j'ajoute l'issue 128 pour le problème de l'absence de test unitaires pour les méthodes dans plots.jl.