2016-02-28 51 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

Hello Ami - 当我等待与数学家们讨论时,我想我会用我的理解来更新这个问题。对于混合分布,正如你所说的那样,可能存在几个正态分布,我用几个正态分布更新了这个问题。现在这会帮助计算混合分布吗? :-) – usert4jju7

+0

@ usert4jju7我不太了解更新。混合分布是由许多基础分布组成的单一分布。您的更新使用多个发行版 - 我只是不知道混合版的位置。对不起 - 我只是不明白。 –

1

关于(2),搜索“混合高斯Python”的网页应该会出现很多点击。

高斯混合是一个非常简单的想法 - 而不是一个单一的高斯凹凸,密度包含多个颠簸。密度是加权总和$ \ 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)算法。再次,网络搜索应该找到很多点击。用于高斯混合的EM算法在一些Python库中实现。自己编写它并不复杂,但也许要开始使用现有的实现。

+0

非常感谢罗伯特。感谢您的时间和帮助。我会放弃这一点。 – usert4jju7