TP2 : Estimation des paramètres de Malkmus à partir de statistiques de k

Ce TP fait suite au TP1 où le modèle de Malkmus est ajusté aux données de transmissivité générées par le programme sln-slab. On va ici essayer d'estimer les paramètres du modèle de Malkmus directement à partir de statistiques sur les coefficients d'absorption k, à l'aide du programme sln-stat.

On suppose que l'on travaille dans un répertoire ${HOME}/mon_nom/tp_star-line/TP2 conformément aux instructions données dans la présentation générale du TP.

export LANG=en_US.UTF-8

Partie 1 : Générer des statistiques de k

Le programme sln-stat est livré avec la bibliothèque star-line. Il implémente un calcul par Monte Carlo de k_barre et k^2_barre, définies comme les moyennes de k_nu et de k_nu^2 sur une bande étroite. Ces moyennes peuvent être écrites comme les espérances de variables aléatoires E[K_nu] et E[K_nu^2] (les lettres capitales étant réservées aux variables aléatoires). On a donc que les K_nu sont dont distribuées. Les distributions de K, ou k-distributions, sont un concept au coeur de ce TP. Une façon standard d'étudier les distributions de la variable aléatoire K_nu est de commencer par calculer un spectre d'absorption, c'est à dire toutes les valeurs prises par k en fonction de la longueur d'onde, puis de faire des statistiques sur les valeurs de k. Ici, et suivant l'idée de l'échantillonnage des transitions développées notamment dans Galtier et al., 2017 et Nyffenegger-Pere et al., 2024, et rappelées dans le document disponible ici, on ne calcule pas le spectre d'absorption : puisque le coefficient d'absorption à une fréquence donnée est une somme sur les contributions de toutes les raies du spectre, on peut exprimer k comme l'espérance d'une variable aléatoire H qui représente la contribution d'une raie donnée. On peut alors emboiter les espérances (moyenne sur la bande étroite et somme sur les raies) et estimer k_barre ou k^2_barre sans jamais avoir calculer explicitement toutes les valeurs de k_nu. On pourra revenir aux fondamentaux présentés dans le TP Monte Carlo théorique voir ici pour travailler en profondeur cette idée d'emboitement des espérances.

Le programme sln-stat attend en entrée une plage de nombres d'onde, une structure hiérarchique permettant d'accélérer l'échantillonage des raies, et les fichiers HITRAN décrivant les paramètres des raies. Il est possible de réutiliser les fichiers produits au cours du TP1, dans le répertoire TP1/data/ : mixture_tree.bin, molparams.txt et mixture_lines.shtr. Alternativement, il est possible d'en générer de nouveaux en suivant la procédure décrite dans le TP1. Pour utiliser les données du TP1, on va copier le répertoire data/ du TP1 :

cp -r ../TP1/data/ .

Syntaxe :

sln-stat [-dhsv] [-n nrealisations] [-t threads] \
-S nu_min,nu_max -a accel_struct -m molparams \
-l lines


Comme pour le TP1, on va définir la plage spectrale et le nombre de réalisations sur lesquelles les statistiques de k seront calculées :

nu_range=100,125
samples_count=100000

Puis la commande ci-dessous va produire des estimations de E[K_nu] et E[K_nu^2] et les stocker dans les variables bash k et k_2.

read -r k k_2 <<<$(\
sln-stat -S $nu_range -n $samples_count -a data/mixture_tree.bin \
  -m data/molparams.txt -sl data/mixture_lines.shtr \
  | cut -d ":" -f2 | sed 's/+\/-.*$//' | tr -d '\n'\
)

Partie 2 : Estimation des paramètres de Malkmus.

Pour estimer les paramètres de Malkmus k_barre et phi, on va utiliser les résultats de Domoto (1974) et Dufresne et al. (1997) (voir le document sous ${TP_STAR_LINE}/Doc_spectral/dufresne_fournier_grandpeix_inverse_gaussian_kdistributions.pdf également disponible en ligne). Dans son papier de 1974, Domoto exprime la distribution de k des spectres sous-jacents au modèle de Malkmus comme une fonction analytique que Dufresne et al. reconnaissent comme étant la densité de probabilité d'une loi inverse-gaussienne. On peut ainsi faire le lien entre les paramètres de l'inverse-gaussienne, les premiers moments de la distribution et les paramètres du modèle de Malkmus.

Passer au tableau pour retrouver les expressions de l'espérance et variance de K en fonction des paramètres du modèle de Malkmus, puis les paramètres de Malkmus en fonction de E[K_nu] et E[K_nu^2].

On trouve :


E[k] = k_barre
var[k] = k_barre^2/phi


En utilisant l'identité var[k] = E[k^2] - E[k]^2, on obtient :


k_barre = E[K_nu]
phi = E[K_nu]^2/(E[K_nu^2]-E[K_nu]^2)


On peut donc obtenir le paramètre phi de Malkmus à l'aide de la commande suivante :

phi=$(awk -v k=$k -v k_2=$k_2 \
  'BEGIN { print k^2/(k_2-k^2) }')

Enfin, on peut comparer le modèle de Malkmus dont les paramètres ont été estimés aux données générées par sln-slab dans le TP précédent :

ln -sf ../TP1/results.dat .
gnuplot -p -e "k=$k" -e "phi=$phi" \
  gnuplot_scripts/slab_transmissivity.gp