2016-02-28 3 views
-2

Я довольно новичок в мире python. Кроме того, я не статистик. Я нуждаюсь в реализации математических моделей, разработанных математиками на компьютерном языке программирования. После некоторых исследований я выбрал python. Мне нравится программирование как таковое (PHP/HTML/javascript).Python - Статистическое распределение

У меня есть столбец значений, которые я извлек из базы данных MySQL & в необходимости расчета ниже -

1) Normal distribution of it. (I don't have the sigma & mu values. These need to be calculated too apparently). 
2) Mixture of normal distribution 
3) Estimate density of normal distribution 
4) Calculate 'Z' score 

Массив значений похож на картинке ниже (я заселена образца данные) -

d1 = [3,3,3,3,3,3,3,9,12,6,3,3,3,3,9,21,3,12,3,6,3,30,12,6,3,3,24,30,3,3,3] 


mu1, std1 = norm.fit(d1) 

нормальное распределение, я понимаю, можно рассчитать, как показано ниже -

import numpy as np 
from scipy.stats import norm 

mu, std = norm.fit(data) 

Могу ли я получить некоторые указания о том, как начать работу с (2), (3) & (4) в этом, пожалуйста? Я продолжаю искать онлайн, как я надеюсь услышать от экспертов.

Если вопрос не имеет полного смысла, пожалуйста, дайте мне знать, какой аспект отсутствует, поэтому я попробую & получить информацию об этом.

Я бы очень признателен за любую помощь здесь, пожалуйста.

ответ

1

Некоторые части вашего вопроса неясны. Это может помочь дать контекст того, чего вы пытаетесь достичь, а не какие конкретные шаги вы предпринимаете.

1) + 3) В нормальном распределении - установка распределения и оценка среднего и стандартного отклонения - это в основном одно и то же. Среднее и стандартное отклонение полностью определяют распределение.

mu, std = norm.fit(data) 

равнозначно «найти среднее и стандартное отклонение, которое наилучшим образом соответствует распределению».

4) Вычисление счета Z - вам придется объяснить, что вы пытаетесь сделать. Это usually means, сколько выше (или ниже) означает, что точка данных находится в единицах стандартного отклонения. Это то, что вам нужно здесь? Если это так, то это просто

(np.array(data) - mu)/std 

2) Смесь нормального распределения - это совершенно неясно. Обычно это означает, что распределение фактически генерируется более чем одним нормальным распределением. Что ты хочешь этим сказать?

+0

Спасибо Ами. Мне нужно вернуться к математике и получить ясность. Кинда застряла между миром и миром компьютеров. Фу! : D – usert4jju7

+0

Привет Ами. Пока я жду, чтобы обсудить с математиками, я подумал, что я обновлю вопрос с моим пониманием. Для распределения смеси, поскольку вы предположили, что может быть несколько нормальных распределений, я обновил вопрос несколькими нормальными дистрибутивами. Поможет ли это сейчас рассчитать распределение смеси? :-) – usert4jju7

+0

@ usert4jju7 Я не совсем понимаю обновление. Распределение смеси представляет собой единое распределение, состоящее из нескольких базовых. Ваше обновление использует несколько дистрибутивов - я просто не вижу, куда входит смесь. Извините, я просто не понимаю. –

1

О (2), поиск в Интернете «смеси гауссианских питонов» должен появиться в большом количестве хитов.

Смесь гауссианцев - довольно простая идея - вместо одного гауссова ударная плотность содержит несколько ударов. Плотность представляет собой взвешенную сумму $ \ sum_k \ alpha_k g (x, \ mu_k, \ sigma_k^2) $, где веса $ \ alpha_k $ положительны и суммируются до 1, а $ g (x, \ mu, \ sigma^2) $ - единственный гауссовый удар.

Для определения параметров $ \ alpha_k $, $ \ mu_k $ и $ \ sigma_k^2 $ обычно используется так называемый алгоритм максимизации ожиданий (EM). Снова веб-поиск должен найти много обращений. Алгоритм ЭМ для смеси Гаусса реализован в некоторых библиотеках Python.Это не слишком сложно написать сами, но, возможно, для начала вы можете использовать существующую реализацию.

+0

Большое спасибо Роберту. Цените свое время и помощь. Я отдам это. – usert4jju7

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