首页 > 解决方案 > 估计曲线与高斯分布的相似性(在 Python 中)

问题描述

我想用 Python 量化测量值曲线与高斯分布的相似性。

给出了两个值数组:

H=(0,5,10,15,20,25,30,35,40,50,70)是以米为单位的高度

C(H)=(0,1,1,2,4,6,7,5,3,1,0)是测量量(例如浓度)

Python中有没有办法

a) 将高斯曲线拟合到C(H)?

b)获得某种相似系数,描述曲线与高斯曲线的相似程度?

提前致谢

标签: pythoncurve-fittinggaussian

解决方案


对于第一个问题,您要问的是是否可以使用 Python 来估计描述您的数据的正常人群的参数。有无限多的估计量可供选择,但如果您要寻找的是最大似然估计,那么这些只是样本均值和样本标准差,您可以使用 vanilla Python 或 NumPy 之类的工具轻松找到:

In [22]: H = [0,5,10,15,20,25,30,35,40,50,70]

In [23]: C = [0,1,1,2,4,6,7,5,3,1,0]

In [24]: a = np.repeat(H, C)

In [25]: a
Out[25]:
array([ 5, 10, 15, 15, 20, 20, 20, 20, 25, 25, 25, 25, 25, 25, 30, 30, 30,
       30, 30, 30, 30, 35, 35, 35, 35, 35, 40, 40, 40, 50])

In [26]: a.mean(), a.std()
Out[26]: (27.666666666666668, 9.46337971105226)

SciPy 中提供了许多常见分布的参数估计,也可以在这里使用:

In [27]: scipy.stats.norm.fit(a)
Out[27]: (27.666666666666668, 9.46337971105226)

第二个问题相当模糊,但足够具体,答案在于确定正态模型的“拟合优度”,或者更一般地说,为您的数据找到合适的“正态性检验”。维基百科文章列出了一旦您知道要检查的内容就适用的统计测试,但如果没有进一步的假设,就没有灵丹妙药。像Q-Q 图这样的定性工具可能会告诉您您想知道什么;对于您给定的样本,这有点难以分辨,但我认为您的实际数据与您在此处提供的数据不同。

import matplotlib.pyplot as plt
import scipy.stats as st
st.probplot(a, dist=st.norm, plot=plt)
plt.show()

在此处输入图像描述


推荐阅读