Closed AugustePaoli99 closed 4 months ago
Bonne idée. Pourrait-on penser à une fonction idfplot(model::AbstractScalingModel) ?
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)
@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 :
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.
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.
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.
C'est très astucieux ! J'approuve le tout :)
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.
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 argumentdata
be made optional ?