估计曲线与高斯分布的相似性(Python中)

估计曲线与高斯分布的相似性(Python中),python,curve-fitting,gaussian,Python,Curve Fitting,Gaussian,我想用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来估计描述数据的正常总体的参数。有无限多个估计器可供选择,但如果您要寻找的是最大似然估

我想用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)
第二个问题相当模糊,但足够具体,答案在于确定正常模型的“”,或者更一般地说,为您的数据找到合适的“”。维基百科的文章列出了统计测试,一旦你知道你想要检查什么,就可以应用这些测试,但是如果没有进一步的假设,就没有什么灵丹妙药了。像a这样的定性工具可能会告诉你想要知道的东西;对于给定的示例,有点难以判断,但我假设您的实际数据与此处提供的数据不同

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

对于第一个问题,您要问的是是否可以使用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)
第二个问题相当模糊,但足够具体,答案在于确定正常模型的“”,或者更一般地说,为您的数据找到合适的“”。维基百科的文章列出了统计测试,一旦你知道你想要检查什么,就可以应用这些测试,但是如果没有进一步的假设,就没有什么灵丹妙药了。像a这样的定性工具可能会告诉你想要知道的东西;对于给定的示例,有点难以判断,但我假设您的实际数据与此处提供的数据不同

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

因为您特别要求Python代码,这里有一个图形化的Python曲线拟合器,使用您的数据拟合高斯峰值方程。RMSE和R平方值应该是有用的相似性度量,因为它们一起描述了数据的高斯拟合质量


因为您特别需要Python代码,所以这里有一个图形化的Python曲线拟合器,它使用您的数据拟合高斯峰值方程。RMSE和R平方值应该是有用的相似性度量,因为它们一起描述了数据的高斯拟合质量


这似乎更像是一个数学问题,而不是一个编程问题。你能精确地说明某条曲线与另一条曲线“相似”意味着什么吗?你能写出一个数学公式,给你一个合适的衡量标准吗?我投票把这个问题作为离题题来结束,因为它似乎是一个数学问题,而不是一个编程问题。我也希望这个问题能清楚地表达出来,但至少它足够具体,可以给出相当精确的答案,你可以说它的“Python中有没有一种方法”部分把它变成了一个编程问题,你也可以说这把它放到了“框架建议”中“非主题类别。我很抱歉不够精确。这个问题是从我的一些科学工作中提出来的。我没有一个具体的公式来衡量相似性,但詹姆斯·菲利普斯提出的计算RMSE和R平方值的方法似乎是合理的。感谢您没有关闭线程。我已经在一个数学论坛上问过同样的问题,但到目前为止,没有人能帮我。这似乎更像是一个数学问题,而不是一个编程问题。你能精确地说明某条曲线与另一条曲线“相似”意味着什么吗?你能写出一个数学公式,给你一个合适的衡量标准吗?我投票把这个问题作为离题题来结束,因为它似乎是一个数学问题,而不是一个编程问题。我也希望这个问题能清楚地表达出来,但至少它足够具体,可以给出相当精确的答案,你可以说它的“Python中有没有一种方法”部分把它变成了一个编程问题,你也可以说这把它放到了“框架建议”中“非主题类别。我很抱歉不够精确。这个问题是从我的一些科学工作中提出来的。我没有一个具体的公式来衡量相似性,但詹姆斯·菲利普斯提出的计算RMSE和R平方值的方法似乎是合理的。感谢您没有关闭线程。我在一个数学论坛上也问过同样的问题,但到目前为止没有人能帮我。从统计/概率理论的角度来看,这个过程实现了什么,以及你在计算什么样的估计(当然它们不是最大似然估计)@fuglede此过程可将发布的数据曲线拟合为高斯峰值方程,且单个估计器是误差平方和的最小值。非常感谢。我将用我的真实数据尝试这个过程,并与我的主管讨论结果