python - 估计曲线与高斯分布的相似性(在 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)获得某种相似系数,描述曲线与高斯曲线的相似程度?
提前致谢
解决方案
对于第一个问题,您要问的是是否可以使用 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()
推荐阅读
- html - 将选择器转换为 CSS 中的样式
- c# - 将文件写入.NET Core中的临时文件夹后无法读取文件
- javascript - 当我使用 d3.json 访问 json 数据时,图表不再出现
- r - 在 R 中使用大维矩阵进行操作
- seaborn - 在带有图例的 for 循环中使用 Seaborn 绘图
- amazon-web-services - 仅当通过cli不存在时如何创建dynamodb表
- typescript - VSCode 扩展:如何调试“激活扩展 'undefined_publisher.extension-name' 失败:意外的令牌 {。”
- html - 电子邮件中的嵌套表格
- php - PHP 脚本不能使用自动加载的类
- r - How to easily merge a table to unique elements of itself?