Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Approximation par moindres carrés

θ=(HTH)−1HTy\theta = (H^TH)^{-1} H^Ty
# Normalisation des abscisses entre 0 et 1
debut = year[0]
fin   = year[-1]
x = (year-debut) / (fin-debut)

# Données sous forme de vecteur colonne
y = np.transpose(temp)

# Matrice H
H = np.transpose(np.array([ x**0, x**1, x**2 ]))

# Estimation des paramètres θ
HT     = np.transpose(H)
HTH    = np.dot(HT, H)
HTHinv = linalg.pinv(HTH)
HTy    = np.dot(HT, y)
theta  = np.dot(HTHinv, HTy)

print(theta)

# Calcul du polynôme z
z = np.dot(H,theta)
[-0.19123016 -0.780101    1.98398694]
<Figure size 1000x600 with 1 Axes>

Extrapolation

Pour extrapoler la courbe (c’est-à-dire calculer ses valeurs au délà des données), il suffit de calculer le polynôme sur une autre plage des abscisses, donc en redéfinissant HH.

year2 = np.arange(debut,2070)
x = (year2-debut)/(fin-debut)
H = np.transpose(np.array([ x**0, x**1, x**2 ]))
z = np.dot(H,theta)
<Figure size 1000x600 with 1 Axes>

Si vous avez le moral accroché, vous pouvez connaître les conséquences issues de cette extrapolation sur l’article Wikipedia Changement climatique... 😱