2016-10-06 1 views
1

У меня есть набор данных, который представляет собой массив numpy, скажем a = [a1, a2, .....], а также веса данных w = [w1, w2, w3 ...]. Я вычислил гистограмму, используя пакет гистограмм numpy, который дает мне массив hist. Теперь я хочу вычислить медиану этой функции распределения вероятности, а также 68% -ный контур вокруг медианы. Помните, что мой набор данных не является гауссовым.Как вычислить средний и 68% доверительный интервал вокруг медианы негауссовского распределения в Python?

Может ли кто-нибудь помочь? Я использую python.

+1

Посмотрите на [этот вопрос] (http://stats.stackexchange.com/вопросы/112829/как-Do-I-Calculate-доверительные интервалы-в-а-ненормального-распределение). – sascha

+1

Просто для подтверждения, для вашего набора данных, w1 дает, насколько вероятно значение a1 и т. Д.? –

+0

Я заметил, что вам не удалось поддержать и принять ответы на ваши вопросы даже в тех случаях, когда ответы «выглядели хорошо для меня». Вы обнаружите, что люди готовы помочь, если вы узнаете такие ответы! В конце концов, вы получили ** бесплатную ** помощь, часто от экспертов! –

ответ

3

Здесь решение с использованием 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)) 

Выход отражает неровные веса в примерах набора данных:

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

Большое спасибо. Это действительно полезный и более чистый способ делать то, что мне нужно. –

Смежные вопросы