Python - calcul des courbes de tendance avec des erreurs
Donc j'ai quelques données stockées dans deux listes, et tracées à l'aide de
plot(datasetx, datasety)
Puis-je définir une courbe de tendance
trend = polyfit(datasetx, datasety)
trendx = []
trendy = []
for a in range(datasetx[0], (datasetx[-1]+1)):
trendx.append(a)
trendy.append(trend[0]*a**2 + trend[1]*a + trend[2])
plot(trendx, trendy)
Mais j'ai une troisième liste de données, ce qui est l'erreur dans l'original datasety. Je suis très bien avec le tracé de la errorbars, mais ce que je ne sais pas qui est à l'aide de ceci, comment trouver l'erreur dans l'estimation des coefficients du polynôme courbe de tendance.
Donc dire que ma courbe de tendance est sorti à 5x^2 + 3x + 4 = y, il doit y avoir une sorte d'erreur sur les 5, 3 et 4 les valeurs.
Est-il un outil à l'aide de NumPy qui va calculer ce pour moi?
source d'informationauteur Aaron Powell | 2011-08-24
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez utiliser la fonction
curve_fit
descipy.optimize
(la documentation). Un exemple de base de l'utilisation:La suite de la documentation, de la pcov donne:
Donc, de cette façon, vous pouvez calculer une erreur d'estimation sur les coefficients. Pour avoir l'écart-type, vous pouvez prendre la racine carrée de la variance.
Maintenant vous avez une erreur sur les coefficients, mais il est seulement basé sur l'écart entre le ydata et l'ajustement. Dans le cas où vous souhaitez également compte d'une erreur sur le ydata lui-même, le
curve_fit
fonction fournit lasigma
argument:Un exemple complet:
Puis quelque chose d'autresur l'utilisation des tableaux numpy. L'un des principaux avantages de l'utilisation de numpy est que vous pouvez éviter de boucles parce que les opérations sur les tableaux s'appliquent elementwise. De sorte que la boucle for dans votre exemple peut également être effectué comme suit:
Où j'utilise
arange
au lieu de fourchette, elle retourne un tableau numpy au lieu d'une liste.Dans ce cas, vous pouvez également utiliser la fonction numpy
polyval
:Je n'ai pas été en mesure de trouver un moyen d'obtenir les erreurs dans l'estimation des coefficients qui est intégré dans numpy ou python. J'ai un simple outil que j'ai écrit basé sur la Section 8.5 et 8.6 de John Taylor Une Introduction à l'Analyse des Erreurs. Peut-être que ce sera suffisant pour votre tâche (à noter le retour par défaut est la variance, pas l'écart-type). Vous pouvez obtenir de grosses erreurs (comme dans l'exemple fourni) en raison de covariance significative.