实验数据的正态拟合

3

enter image description here

大家好,我想从实验结果中获取一组数据的正态拟合。由于我刚开始学习Python,不知道从哪里开始。这是我的实验数据,它是一个粒径分布。我想获得平均值和标准差。x表示大小,y表示频率。

非常感谢您提前的帮助!

import matplotlib.pyplot as plt
import numpy as np



x=([0.251839516,0.490440575,0.744647994,0.990643452,1.244142316,1.488611658,1.741274792,1.986416351,2.232538986,2.495993944,2.736393641,2.985059803,3.241792581,3.497435276,3.744829674,3.991788039,4.23860106])
y=([0.271164269,0.492366389,1.256781226,2.468772142,4.479769871,8.376708554,11.85803482,14.57231794,15.56056321,14.05547313,11.11227252,7.625604845,3.947070401,2.186355791,0.937144587,0.455061317,0.228687358])
plt.scatter(x,y,color='red',label='Experiment')


看看这个是否有帮助:https://stackoverflow.com/questions/42177007/how-to-calculate-mean-mode-variance-standard-deviation-etc-of-output-in-python - Joe Ferndz
4个回答

3

如果你想使用 SciPy,你可以使用 scipy.stats.norm

from scipy.stats import norm
mu, std = norm.fit(data)

norm.fit(data) 在我的情况下不起作用,因为我有两个数组。:( - NewtonianGuy

1
使用这段代码。
from scipy.stats import norm as normalDist
x=([0.251839516,0.490440575,0.744647994,0.990643452,1.244142316,1.488611658,1.741274792,1.986416351,2.232538986,2.495993944,2.736393641,2.985059803,3.241792581,3.497435276,3.744829674,3.991788039,4.23860106])
y=([0.271164269,0.492366389,1.256781226,2.468772142,4.479769871,8.376708554,11.85803482,14.57231794,15.56056321,14.05547313,11.11227252,7.625604845,3.947070401,2.186355791,0.937144587,0.455061317,0.228687358])
points = list(zip(*(x, y)))
mu, std = normalDist.fit(points)

0

使用高斯分布可以解决您的问题。

from sklearn.mixture import GaussianMixture
gmm.means_
gmm.covariances_

你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接