我对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)请在这?我期待收到专家的意见,我将继续在线查询。
如果问题没有充分理解,请告诉我哪些方面缺失,以便我试试&获取有关的信息。
我非常感谢你们的任何帮助。
答案 0 :(得分:1)
您问题的某些部分尚不清楚。它可能有助于提供您尝试实现的内容,而不是您正在采取的具体步骤。
1)+ 3)在正态分布中 - 拟合分布,估计均值和标准差 - 基本相同。平均值和标准差完全确定分布。
mu, std = norm.fit(data)
无异于说"找到最适合分布的均值和标准差"。
4)计算Z分数 - 您必须解释您尝试做的事情。这个usually means数据点的平均值高于(或低于)多少,以标准差为单位。这是你需要的吗?如果是这样,那么它只是
(np.array(data) - mu) / std
2)正态分布的混合 - 这是完全不清楚的。它通常意味着分布实际上是由多个正态分布生成的。这是什么意思?
答案 1 :(得分: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)算法。再次网络搜索应该找到很多点击。用于高斯混合的EM算法在一些Python库中实现。自己编写它并不太复杂,但也许要开始使用现有的实现。