CommencerCommencer gratuitement

Modèle linéaire en cosmologie

Il y a moins de 100 ans, l’univers semblait se résumer à une seule galaxie statique, contenant peut-être un million d’étoiles. Aujourd’hui, nous observons des centaines de milliards de galaxies, chacune abritant des centaines de milliards d’étoiles, toutes en mouvement.

Les débuts de la science moderne de la cosmologie remontent à la publication d’Edwin Hubble en 1929, qui s’appuyait notamment sur un modèle linéaire.

Dans cet exercice, vous allez construire un modèle dont la pente fournira la constante de Hubble, qui décrit la vitesse des galaxies comme une fonction linéaire de leur distance à la Terre.

Diagramme de Hubble

Cet exercice fait partie du cours

Introduction à la modélisation linéaire en Python

Afficher le cours

Instructions

  • Utilisez le DataFrame préchargé avec les colonnes names, distances et velocities.
  • Créez et ajustez un modèle avec ols().fit() en utilisant formula="velocities ~ distances" et data=df.
  • Extrayez les estimations des paramètres pour l’ordonnée à l’origine et la pente via model_fit.params, à affecter respectivement à a0 et a1.
  • Répétez l’opération pour les valeurs d’incertitude correspondantes, cette fois avec model_fit.bse.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Fit the model, based on the form of the formula
model_fit = ols(formula="velocities ~ ____", data=df).fit()

# Extract the model parameters and associated "errors" or uncertainties
a0 = model_fit.params['Intercept']
a1 = model_fit.params['____']
e0 = model_fit.bse['____']
e1 = model_fit.bse['distances']

# Print the results
print('For slope a1={:.02f}, the uncertainty in a1 is {:.02f}'.format(a1, e1))
print('For intercept a0={:.02f}, the uncertainty in a0 is {:.02f}'.format(a0, e0))
Modifier et exécuter le code