QQ离散分布图

问题描述 投票:0回答:2

我有一个样本是离散值的集合(尤其是随时间变化的队列大小)。现在,我想找到它们所属的分布。为了实现此目标,我将采取与其他数量相同的操作,即绘制一个qqplot,启动

import statsmodels.api as sm 
sm.qqplot(df, dist = 'geom', sparams = (.5,), line ='s', alpha = 0.3, marker ='.')

[如果dist不是离散的随机变量(例如'exp'或'norm'),并且确实我曾经获得一些结果,但是当分布是离散的(例如'geom')时,我得到] >

AttributeError: 'geom_gen' object has no attribute 'fit'

我在互联网上搜索了如何制作一个qqplot(或类似的东西)以发现我的样本属于什么分布,但我什么都没发现

我有一个样本是离散值的集合(尤其是随时间变化的队列大小)。现在,我想找到它们所属的分布。为了实现这个目标,我将以与...相同的方式采取行动...

python python-3.x distribution quantile
2个回答
0
投票
def discreteQQ(x_sample):

    p_test = np.array([])
    for i in range(0, 1001):
        p_test = np.append(p_test, i/1000)
        i = i + 1

    x_sample = np.sort(x_sample)
    x_theor = stats.geom.rvs(.5, size=len(x_sample))
    ecdf_sample = np.arange(1, len(x_sample) + 1)/(len(x_sample)+1)

    x_theor = stats.geom.ppf(ecdf_sample, p=0.5)

    for p in p_test:
        plt.scatter(np.quantile(x_theor, p), np.quantile(x_sample, p), c = 'blue')

    plt.xlabel('Theoretical quantiles')
    plt.ylabel('Sample quantiles')
    plt.show()

0
投票

您可以使用以下步骤创建自己的Q-Q图:1)以升序对数据进行排序; 2)生成与数据相同大小的理论分布并对其进行排序。这里的另一种方法是使用逆ecdf函数将样本的ecdf转换为理论分布的分位数。 3)相对于自身绘制理论分布-这会沿对角线给出一条直线; 4)相对于理论分布(x轴)绘制样本数据(y轴)。

© www.soinside.com 2019 - 2024. All rights reserved.