CommencezCommencez gratuitement

Modèle linéaire en cosmologie

Il y a moins de 100 ans, on croyait que l'univers était composé d'une seule galaxie statique, contenant peut‑être un million d'étoiles. Aujourd'hui, nous observons des centaines de milliards de galaxies, chacune avec des centaines de milliards d'étoiles, toutes en mouvement.

Les débuts de la science physique moderne de la cosmologie remontent à la publication d'Edwin Hubble en 1929, qui faisait appel à un modèle linéaire.

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

Hubble's Plot

Cette activité fait partie du cours

Introduction aux modèles linéaires en Python

Voir le cours

Instructions de l’exercice

  • 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 à l'aide de model_fit.params, et affectez‑les 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 ce code d’exemple.

# 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