-2

我对python世界很陌生。另外,我不是统计学家。我需要用计算机科学编程语言实现数学家开发的数学模型。经过一番研究,我选择了 python。我很喜欢这样的编程(PHP/HTML/javascript)。

我有一列从 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) 提供一些指示?我继续在网上查找,因为我期待听到专家的意见。

如果这个问题不完全有意义,请让我知道缺少哪些方面,以便我尝试获取相关信息。

我非常感谢这里的任何帮助。

4

2 回答 2

1

您的问题的某些部分不清楚。它可能有助于给出你想要达到的目标的背景,而不是你正在采取的具体步骤。

1) + 3) 在正态分布中——拟合分布,估计均值和标准差——基本上是一回事。均值和标准差完全决定了分布。

mu, std = norm.fit(data)

无异于说“找到最适合分布的均值和标准差”。

4) 计算 Z 分数 - 你必须解释你想要做什么。这通常意味着数据点高于(或低于)平均值多少,以标准差为单位。这是你在这里需要的吗?如果是这样,那么它只是

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

2)正态分布的混合——这完全不清楚。这通常意味着该分布实际上是由多个正态分布生成的。你这是什么意思?

于 2016-02-28T19:28:49.910 回答
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 库中实现。自己编写并不太复杂,但也许开始你可以使用现有的实现。

于 2016-02-28T21:02:17.457 回答