2012-05-23 28 views
10

Die Harmonic Mean-Funktion in Python (scipy.stats.hmean) erfordert, dass die Eingabe positive Zahlen sind.harmonischer Mittelwert in Python

Zum Beispiel:

from scipy import stats 
print stats.hmean([ -50.2 , 100.5 ]) 

Ergebnisse in:

ValueError: Harmonic mean only defined if all elements greater than zero 

Ich sehe nicht, mathematisch, warum dies der Fall sein sollte, mit Ausnahme des seltenen Fall, wo Sie würde Division durch Null am Ende . Anstatt nach einer Division durch Null zu suchen, gibt hmean() einen Fehler aus, wenn eine positive Zahl eingegeben wird, ob ein harmonischer Mittelwert gefunden werden kann oder nicht.

Fehle ich hier etwas in der Mathematik? Oder ist das wirklich eine Einschränkung in SciPy?

Wie würden Sie das harmonische Mittel einer Menge von Zahlen finden, die in Python positiv oder negativ sein könnten?

+3

"Ich verstehe nicht mathematisch, warum das der Fall sein sollte ...", also haben Sie grundsätzlich eine mathematische Frage, keine Programmierfrage. –

+0

.. und eine mathematische Frage, die klar beantwortet wird, da harmonisches Mittel nur für positive Zahlen sinnvoll ist. –

Antwort

21

Das harmonische Mittel ist nur definiert für Sätze positiver reeller Zahlen. Wenn Sie versuchen, es für Sätze mit Negativen zu berechnen, erhalten Sie alle Arten von seltsamen und nutzlosen Ergebnissen, selbst wenn Sie div nicht mit 0 treffen. Zum Beispiel ergibt die Anwendung der Formel auf die Menge (3, -3, 4) einen Mittelwert von 12!

+0

+1 Gute Antwort. Negative Zahlen verringern den Nenner, wodurch das Ergebnis aufgebläht wird. – Akavall

+1

Gute Erklärung, warum harmonisches Mittel für negative Zahlen absolut keinen Sinn macht. –

+0

Fakultät (12) ??? ;-) – dpb

1

Die mathematische Definition des harmonischen Mittelwerts selbst verbietet Anwendungen nicht für negative Zahlen (obwohl Sie den harmonischen Mittelwert von +1 und -1 nicht berechnen wollen), ist jedoch dafür ausgelegt, den Mittelwert für Größen wie Verhältnisse zu berechnen so dass es jedem Datenpunkt gleiches Gewicht geben würde, während in arithmetischen Mitteln oder dergleichen das Verhältnis extremer Datenpunkte ein hohes Gewicht erlangen würde und somit unerwünscht ist.

So könnten Sie entweder versuchen, die Definition selbst zu codieren, wie @HYRY vorgeschlagen, oder das harmonische Mittel im falschen Kontext angewendet haben.

1

Es gibt eine Statistik-Bibliothek, wenn Sie Python verwenden> = 3.6:

https://docs.python.org/3/library/statistics.html

Sie können seine mittlere Methode wie folgt verwenden. Angenommen, Sie haben eine Liste von Zahlen, von denen Sie wollen Mittel finden:

list = [11, 13, 12, 15, 17] 
import statistics as s 
s.harmonic_mean(list) 

Es andere Methoden auch wie STDEV hat, Varianz, Modus, Mittelwert, Median usw., die auch nützlich sind.

Verwandte Themen