【发布时间】:2020-08-26 06:18:45
【问题描述】:
我有一组服从正态分布的数据,我可以在其中拟合直方图并获得均值和 sigma。
为了举例,我将通过生成随机正态分布来近似它,如下所示:
from scipy.stats import maxwell
import math
import random
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.optimize import curve_fit
from IPython import embed # put embed() where you want to stop
import matplotlib.ticker as ticker
data = random.gauss(307, 16)
N, bins, patches = plt.hist(data, bins=40, density=True, alpha=0.5, histtype='bar', ec='black')
mu, std = norm.fit(data)
xmin, xmax = plt.xlim()
x = np.linspace(xmin, xmax, 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2, label= r'$\mu$ = '+'{:0.1f}'.format(mu)+r' $\pm$ '+'{:0.1f}'.format(std))
接下来我想做的是从这个“正态”分布生成麦克斯韦分布并能够拟合
我已阅读scipy.stats.maxwell 网页和其他几个相关问题,但无法从“高斯分布”生成这样的分布并拟合它。任何帮助将不胜感激。
【问题讨论】:
-
您能否添加运行代码所需的所有相关
import语句?我们可能可以很好地猜测它们是什么,但我们不应该这样做。 :) -
"... 但无法从“高斯分布”生成这样的分布并对其进行拟合。“ 您到底尝试了什么,结果如何错误的?您是否得到了错误,或者只是意外的结果?
-
感谢您的建议,我已经添加了导入的包。我试过做 ax.plot(data, maxwell.pdf(data),'r-', lw=5, alpha=0.6, label='maxwell pdf') 和 ax.plot(data, maxwell.pdf(x) ,'r-', lw=5, alpha=0.6, label='maxwell pdf') 其中 x 应该是高斯输出。在第一种情况下,它根本不适合,在第二种情况下,它给了我一个错误。仍然不确定什么是正确的方法!
-
random.gauss(307, 16)生成 一个 样本。我看不到将正态分布(或麦克斯韦分布)拟合到单个点的意义。norm.fit(data)将准确地返回该点作为平均值(即位置)和 0 作为标准偏差(即比例)。这真的是您使用的完整代码吗?
标签: python python-3.x numpy random scipy