Joh*_*ohn 73 python statistics scipy
你会如何使用Python创建一个qq-plot?
假设您有大量测量并且正在使用一些以XY值作为输入的绘图功能.该函数应绘制测量的分位数与某些分布的相应分位数(正态,均匀......).
得到的图表让我们在测量中评估是否遵循假定的分布.
http://en.wikipedia.org/wiki/Quantile-quantile_plot
R和Matlab都为此提供了现成的函数,但我想知道在Python中实现最干净的方法是什么.
Geo*_*off 91
我想这scipy.stats.probplot会做你想要的.有关详细信息,请参阅文档.
import numpy as np
import pylab
import scipy.stats as stats
measurements = np.random.normal(loc = 20, scale = 5, size=100)
stats.probplot(measurements, dist="norm", plot=pylab)
pylab.show()
Run Code Online (Sandbox Code Playgroud)
结果

Aka*_*all 36
使用qqplot的statsmodels.api是另一种选择:
非常基本的例子:
import numpy as np
import statsmodels.api as sm
import pylab
test = np.random.normal(0,1, 1000)
sm.qqplot(test, line='45')
pylab.show()
Run Code Online (Sandbox Code Playgroud)
结果:

文档和更多示例在这里
小智 17
如果你需要做一个样本与另一个样本的QQ图,statsmodels包括qqplot_2samples().和Ricky Robinson在上面的评论中一样,这就是我认为的QQ情节与概率图,这是一个反对理论分布的样本.
我想出了这个。也许你可以改进它。特别是生成分布的分位数的方法对我来说似乎很麻烦。
您可以np.random.normal用任何其他分布替换fromnp.random以将数据与其他分布进行比较。
#!/bin/python
import numpy as np
measurements = np.random.normal(loc = 20, scale = 5, size=100000)
def qq_plot(data, sample_size):
qq = np.ones([sample_size, 2])
np.random.shuffle(data)
qq[:, 0] = np.sort(data[0:sample_size])
qq[:, 1] = np.sort(np.random.normal(size = sample_size))
return qq
print qq_plot(measurements, 1000)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83738 次 |
| 最近记录: |