2013-09-24 65 views

回答

9

scipy.stats支持maxwell distribution


import scipy.stats as stats 
import matplotlib.pyplot as plt 
import numpy as np 

maxwell = stats.maxwell 
data = maxwell.rvs(loc=0, scale=5, size=10000) 

params = maxwell.fit(data, floc=0) 
print(params) 
# (0, 4.9808603062591041) 

plt.hist(data, bins=20, normed=True) 
x = np.linspace(0, 25, 100) 
plt.plot(x, maxwell.pdf(x, *params), lw=3) 
plt.show() 

enter image description here

的第一个参数是位置或从零移位远离。 第二个参数是缩放参数,在the wikipedia page上由a表示。

为了生成随机变元(随机数据)与该分布,使用其rvs方法:

newdata = maxwell.rvs(*params, size=100) 
+0

非常感谢。 – Michal

+0

看起来你通常只​​使用'loc = 0'和Maxwell-Boltzmann分布,所以你应该在适合数据时使用'floc = 0'选项;也就是使用'params = maxwell.fit(data,floc = 0)'。没有这一点,'fit'方法将该位置作为一个更多的自由参数来包含在拟合中。 –

+0

@WarrenWeckesser:非常感谢! – unutbu