2016-10-06 1 views
1

Ich habe einen Datensatz, der ein numpy Array ist sagen a = [a1, a2, .....] und auch die Gewichte der Daten w = [w1, w2, w3 ...]. Ich habe das Histogramm mit dem numpy-Histogramm-Paket berechnet, das mir das Hist-Array gibt. Nun möchte ich den Median dieser Wahrscheinlichkeitsverteilungsfunktion und auch die 68% Kontur um den Median berechnen. Denken Sie daran, dass mein Datensatz nicht Gauß ist.Wie berechnet man den Median und das 68% Konfidenzintervall um den Median der nicht-Gaußschen Verteilung in Python?

Kann jemand helfen? Ich benutze Python.

+1

Blick auf [diese Frage] (http://stats.stackexchange.com/questions/112829/how-do-i-calculate-Konfidenzintervalle für eine Nicht-Normalverteilung. – sascha

+1

Nur zur Bestätigung, für Ihren Datensatz gibt w1 an, wie wahrscheinlich der Wert a1 ist, usw.? –

+0

Mir ist aufgefallen, dass Sie keine Antworten auf Ihre Fragen aufwerten müssen, selbst wenn die Antworten "gut für mich" aussahen. Sie werden Menschen finden, die eher bereit sind zu helfen, wenn Sie solche Antworten erkennen! Immerhin hast du ** kostenlose ** Hilfe, oft von Experten! –

Antwort

3

Hier ist eine Lösung mit scipy.stats.rv_discrete:

import numpy as np, scipy.stats as st 

# example data set 
a = np.arange(20) 
w = a + 1 

# create custom discrete random variable from data set 
rv = st.rv_discrete(values=(a, w/float(w.sum()))) 

# scipy.stats.rv_discrete has methods for median, confidence interval, etc. 
print("median:", rv.median()) 
print("68% CI:", rv.interval(0.68)) 

Ausgang der unebenen Gewicht in den Beispieldaten reflektiert gesetzt:

median: 13.0 
68% CI: (7.0, 18.0) 
+0

Vielen Dank. Dies ist wirklich nützlich und sauberer Weg zu tun, was genau ich brauchte. –

Verwandte Themen