使用python statsmodels api绘制分位数-分位数图

6

我正在尝试确定具有特定参数的正态分布是否适合于数据集。但是,似乎 qqplot 的效果不如预期。以下是一个小例子:

import numpy as np
import statsmodels.api as sm
import pylab

test = np.random.normal(20,5, 1000)

sm.qqplot(test, loc = 20, scale = 5 ,  line='45')
pylab.show()

从图中可以看出,我期望的点应该在斜率为1的直线上,但实际上给出了以下图形:

q-q plot

有人能解释一下为什么会这样吗?

4个回答

4
您可以使用 line = '45',如果您的数据已进行了Z标准化,则会很好地工作,这意味着您的分布将具有平均值= 0和sd = 1。在其他情况下,您有几个选项,例如,如果您想要查看针对标准化线的拟合(预期顺序统计量按给定样本的标准偏差缩放,并将平均值添加到其中),或者针对四分位数拟合的线性拟合,我认为这是真正有意义的,并且让我们观察数据分布与正常分布之间的偏差。此外,您可以使用line ='r'来查看回归线的拟合。默认情况下,line设置为“None”。
只需像这样使用代码
import numpy as np
import statsmodels.api as sm
import pylab

test = np.random.normal(20, 5, 1000)

sm.qqplot(test, line='q')
pylab.show()

3
请添加"fit"作为:
sm.qqplot(aaa, line = "45", fit = True)

1
我注意到当我从你的代码中省略了line='45'参数时,会出现以下绘图结果。

q-q

我们可以看到,发生的情况是,在statsmodels绘制的Q-Q图中,理论分位数没有重新调整为原始伪样本的尺寸,这就是为什么蓝线被限制在您的图的左侧边缘的原因。
我不知道如何让statsmodels做你想要的事情; 但是,还有另一种方法 - 参见https://stackoverflow.com/a/47189575/131187

-2

你可以尝试将fit参数设置为True


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