• Q-Q 图


    Q-Q(Quantile-Quantile)图是用来判断两个数据集是否来自相同的分布,比如正态分布、均匀分布。如下图:

    Q-Q 图

    from sklearn.datasets import load_iris
    import matplotlib.pyplot as plt
    import seaborn as sns
    from scipy import stats
    
    iris = load_iris()
    X = iris.data
    y = iris.target
    
    plt.figure(figsize=(16, 8))
    plt.subplot(1, 2, 1)
    # 变量分布
    sns.distplot(X[:, 1], fit=stats.norm)
    plt.subplot(1, 2, 2)
    # 变量 Q-Q 图
    stats.probplot(X[:, 1], plot=plt)  # 默认 dist='norm',可以为其它分布
    plt.show()
    

    上面左图是变量的分布情况,右图是变量的 Q-Q 图,点基本都落在同一条直线上,说明此变量满足正态分布。其中,x 轴为标准正态分布的分位坐标,y 轴为变量对应的分位坐标。

    其实,如果两个数据集来自相同的分布,它们的 Q-Q 图分位点位于一条直线上,例如,我们有两个正态分布数据集,x 为标准正态分布,y 为标准差为 3,均值为 2 的正态分布。如下:

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 来自标准正态分布的数据集
    x = np.random.randn(1000)
    # 来自标准差为 3,均值为 2 的正态分布
    y = 3*np.random.randn(10000) + 2
    # 分别找到它们的 20 个分位点
    x_p = np.percentile(x, np.arange(0, 101, 5))
    y_p = np.percentile(y, np.arange(0, 101, 5))
    
    plt.figure()
    plt.plot(x_p, y_p, "bo")
    plt.xlabel("x quantiles")
    plt.ylabel("y quantiles")
    plt.title("Q-Q Plot")
    plt.show()
    

    在上面代码可以看到,x 和 y 都属于正态分布,而从点的产生方式看到,y 点和 x 点呈线性关系。

    正态性假设在很多统计检验中非常重要,Q-Q 图是评价正态性的一种方式。但是正态性并不是你评价数据的唯一方式,你也可以用一个连续分布作为对比数据(例如均匀分布),只要能计算出数据的分位数。事实上,通常会将我们的数据同不同的分布作 Q-Q 图,看其具体符合哪种分布。

    参考资料

    Q Q Plots: Simple Definition & Example

  • 相关阅读:
    Solaris+Oracle安装(详细图解)
    linux卸载和安装jdk
    UTF8, Unicode, GB2312格式串转换之C语言版
    linux安装ant
    在 Linux 平台下使用 JNI
    华为C/C++笔试题(1)
    c面试
    mongodb数据库
    YARN
    NPM(包管理器)
  • 原文地址:https://www.cnblogs.com/shaocf/p/14411934.html
Copyright © 2020-2023  润新知