Comment puis-je déterminer l'écart-type (écart type) d'un ensemble de valeurs?
J'ai besoin de savoir si un nombre par rapport à un ensemble de nombres est à l'extérieur de 1 écart type de la moyenne, etc..
- Ce qui semble manquer aux devoirs de la balise....
- veuillez veuillez veuillez veuillez ne présumez pas que l'OP pose une question pour les devoirs fins, plutôt que pour un "vrai" projet, ou pour l'auto-amélioration. Demandez-leur.
- en fait je ne te demande pas pour les devoirs raisons, mais si elle aide les gens qui sont en train de faire ses devoirs afin de trouver la réponse, merci d'ajouter la balise
- Les devoirs de la balise est progressivement éliminé et ne doit pas être utilisé plus (comme je l'ai appris moi-même) - meta.stackexchange.com/q/147100
Vous devez vous connecter pour publier un commentaire.
Tandis que la somme des carrés de l'algorithme fonctionne bien la plupart du temps, il peut causer de graves ennuis si vous êtes aux prises avec de très grands nombres. En gros, vous pourriez finir avec un écart négatif...
Plus, ne jamais, jamais, jamais, calculer a^2 comme pow(a,2), a * a est presque certainement plus rapide.
De loin la meilleure façon de calculer un écart-type est Welford de la méthode. Mes C est très rouillé, mais il pourrait ressembler à quelque chose comme:
Si vous avez la ensemble de la population (par opposition à une échantillon de la population), puis utilisez
return Math.Sqrt(S /(k-1));
.EDIT: j'ai mis à jour le code en fonction de Jason remarques...
EDIT: j'ai aussi mis à jour le code en fonction de Alex remarques...
10 fois plus rapide solution que Jaime, mais être conscient que,
Jaime a souligné:
Si vous pensez que vous avez affaire avec des nombres très grands ou très grande quantité de numéros, vous devez calculer en utilisant les deux méthodes, si les résultats sont les mêmes, vous savez pour sûr que vous pouvez utiliser "ma" méthode pour vous cas.
La accepté de répondre par Jaime est très bien, sauf que vous avez besoin de diviser par k-2 dans la dernière ligne (vous avez besoin de diviser par "number_of_elements-1").
Mieux encore, démarrer le k à 0:
L'Math.NET la bibliothèque offre ce pour vous de la boîte.
Voir PopulationStandardDeviation pour plus d'informations.
Extrait de Code:
Vous pouvez éviter de faire deux passes sur les données en accumulant la moyenne et la moyenne des carrés
et formant
Un facteur de
cnt/(cnt-1)
est souvent approprié ainsi.BTW-- Le premier passage sur les données de Demi et McWafflestix les réponses sont cachées dans les appels à
Average
. Ce genre de chose est certainement trivial sur une petite liste, mais si la liste dépasse la taille de la mémoire cache, ou même l'ensemble de travail, cela devient une offre promo.J'ai trouvé que Rob réponse utile n'a pas tout à fait correspondre à ce que je voyais à l'aide d'excel. Pour correspondre à excel, je suis passé à la Moyenne pour la liste de valeurs dans la StandardDeviation de calcul.
Voici mes deux cents... et clairement, vous pouvez calculer la moyenne mobile (ma) à partir de liste de valeurs à l'intérieur de la fonction, mais j'ai justement déjà avant d'avoir besoin de la standardDeviation.
Avec les méthodes d'Extension.
Le problème avec toutes les autres réponses, c'est qu'ils supposent que vous avez votre
de données dans un grand tableau. Si vos données sont à venir dans à la volée, ce serait
une meilleure approche. Cette classe fonctionne peu importe comment ou si vous stockez vos données. Il vous donne aussi le choix de la méthode Waldorf ou de la somme des carrés de la méthode. Les deux méthodes de travail à l'aide d'un seul passage.
Nous pouvons être en mesure d'utiliser les statistiques module en Python. Il a stedev() et pstdev() commandes pour calculer l'écart type de l'échantillon et de la population, respectivement.
plus de détails ici: https://www.geeksforgeeks.org/python-statistics-stdev/
statistiques sur les importations de st
print(st.ptdev(dataframe [colonne'nom']))
C'est l'écart type de Population
Pour l'écart-type d'Échantillon, il suffit de changer [valeurs.Count] à [valeurs.Comptez -1] dans le code ci-dessus.
Assurez-vous de ne pas avoir seulement 1 point de données dans votre ensemble.