Approche d’un catalogue d’étoiles avec un outil statistique

Utilisation du logiciel libre R

Pourquoi R ? Parce que c’est l’outil statistique à la mode.

Mais on pourrait tout aussi bien utiliser Python (et Pandas). Tout outil pour “faire dire tout et n’importe quoi” des data sera approprié.

Ceci est un “notebook”, c’est à dire un document qui fait apparaître les traitements appliqués sur les données en parallèle avec les commentaires, avisés ou pas, du rédacteur.

Premier fichier de données

Un extrait du catalogue Hipparcos, contenant une liste de 9999 étoiles. Seuls les champs suivants ont été retenus :

  • SpType : type spectral
  • Fe-H : quantification du fer dans la composition de l’atmosphère.
  • B-V : indice de couleur.
  • VMag : magnitude absolue.

Certaines lignes sont incomplètes.

Ouverture du fichier et listage des champs

  • La première ligne de code ouvre le fichier et charge les données dans la variable cata1.
  • La seconde liste les noms des colonnes. (Dans l’ordre croissant : Type spectral, part du fer dans l’atmosphère de l’étoile, indice de couleur et magnitude absolue.)
cata1 <-read.csv2("hip9999.csv")
names(cata1)
## [1] "SpType" "Fe_H"   "B_V"    "VMag"

Informations complémentaire sur le contenu du fichier.

Listons maintenant les types des données (chaînes de caractères, nombres, autres…)

str(cata1)
## 'data.frame':    9999 obs. of  4 variables:
##  $ SpType: Factor w/ 1521 levels "                          ",..: 608 1269 448 526 999 1355 1150 1484 895 694 ...
##  $ Fe_H  : Factor w/ 184 levels "     "," 0.00",..: 1 1 1 92 1 1 1 1 1 1 ...
##  $ B_V   : Factor w/ 1859 levels "      "," 0.000",..: 481 990 1744 369 894 1318 739 1091 1056 488 ...
##  $ VMag  : Factor w/ 1018 levels ""," 0.00"," 0.01",..: 1 584 961 247 1 1 582 1 1 381 ...

Quelque chose d’ennuyeux ici : les champs Fe_H, B_V, Vmag sont considérés comme des factor (pas des nombres flottants). Il va falloir effectuer une conversion.

Conversion de factor en flottant

Exemple ici : convertir les indices de couleur en nombres flottants. Les valeurs converties sont stockées dans la variable BV.

BV<-as.numeric(as.character(cata1$B_V))

Les valeurs B-V initiales (cinq premières valeurs) :

cata1$B_V[0:5]
## [1]  0.482  0.999 -0.019  0.370  0.902
## 1859 Levels:         0.000  0.001  0.002  0.003  0.004  0.005 ... -0.359

Les mêmes, converties en nombres flottants.

BV[1:5]
## [1]  0.482  0.999 -0.019  0.370  0.902

C’est bon : les valeurs numériques décimales sont listées comme les valeurs textuelles dont elles découlent.

Utilisation d’une fonction statistique

La fonction summary de R est particulièrement instructive.

summary(BV)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
## -0.3590  0.4228  0.6500  0.7456  1.0840  2.8350      83

Voici la liste des informations listées dans chaque colonne :

  • Min : valeur la plus faible.
  • Max : valeur la plus élevée.
  • 1st Qu. : premier quartile. Autrement dit : borne supérieure limitant les premiers 25% des données.
  • Median. : médiane, c’est à dire valeur placée entre les 50% inférieurs et les 50% supérieurs.
  • 3rd Qu. : troisième quartile. Autrement dit : borne des 75%. (entre 1st Qu. et il y a 50% des étoiles, en principe).
  • NA’s : nombre de lignes pour lesquelles il n’y a pas d’indice B-V.

Représentation graphique équivalente

On appelle ce genre de représentation une “boîte à moustache”.

Voici comment la tracer avec R.

boxplot(BV, xlab = "B-V")

Remarques :

  • Remarquer les petits cercles au-dessus du graphique. Ils symbolisent les quelques enregistrement ayant des valeurs extrêmes qui ne sont pas considérés comme significatifs par le logiciel.
  • Le langage Python permet également de réaliser ce genre de représentation. Lors d’un prochain support on montrera ce que l’on peut faire avec lui.
  • R permet de coder en quelques lignes… Il est utilisé par des statisticiens qui ne sont pas programmeurs par goût. Python est plus polyvalent, mais nécessite un peu plus de code… on verra bien.