从KS测试结果中获得显着性水平α?

时间:2016-12-01 20:52:50

标签: python-2.7 scipy statistics kolmogorov-smirnov

我试图找到我的Kolmogorov-Smirnov测试结果的显着性水平/ alpha水平(最终得到置信水平),我觉得我发疯了,因为这似乎并没有得到很好的解释足够的任何地方(以我理解的方式。)

我有样本数据,我想看看它是否来自四个概率分布函数之一:Cauchy,Gaussian,Students t和Laplace。 (我不是在进行双样本测试。)

以下是Cauchy的示例代码:

### Cauchy Distribution Function
data = [-1.058, 1.326, -4.045, 1.466, -3.069, 0.1747, 0.6305, 5.194, 0.1024, 1.376, -5.989, 1.024, 2.252, -1.451, -5.041, 1.542, -3.224, 1.389, -2.339, 4.073, -1.336, 1.081, -2.573, 3.788, 2.26, -0.6905, 0.9064, -0.7214, -0.3471, -1.152, 1.904, 2.082, -2.471, 0.6434, -1.709, -1.125, -1.607, -1.059, -1.238, 6.042, 0.08664, 2.69, 1.013, -0.7654, 2.552, 0.7851, 0.5365, 4.351, 0.9444, -2.056, 0.9638, -2.64, 1.165, -1.103, -1.624, -1.082, 3.615, 1.709, 2.945, -5.029, -3.57, 0.6126, -2.88, 0.4868, 0.4222, -0.2062, -1.337, -0.326, -2.784, 6.724, -0.1316, 4.681, 6.839, -1.987, -5.372, 1.522, -2.347, 0.4531, -1.154, -3.631, 0.426, -4.271, 1.687, -1.612, -1.438, 0.8777, 0.06759, 0.6114, -1.296, 0.07865, -1.104, -1.454, -1.62, -1.755, 0.7868, -3.312, 1.054, -2.183, -7.066, -0.04661, 1.612, 1.441, -1.768, -0.2443, -0.7033, -1.16, 0.2529, 0.2441, -1.962, 0.568, 1.568, 8.385, 0.7192, -1.084, 0.9035, 3.376, -0.7172, -0.1221, 3.267, 0.4064, -0.4894, -2.001, 1.63, -2.891, 0.6244, 2.381, -1.037, -1.705, -0.5223, -0.2912, 1.77, -3.792, 0.1716, 4.121, -0.9119, -0.1166, 5.694, -5.904, 0.5485, -2.788, 2.582, -1.553, 1.95, 3.886, 1.066, -0.475, 0.5701, -0.9367, -2.728, 4.588, -5.544, 1.373, 1.807, 2.919, 0.8946, 0.6329, -1.34, -0.6154, 4.005, 0.204, -1.201, -4.912, -4.766, 0.0554, 3.484, -2.819, -5.131, 2.108, -1.037, 1.603, 2.027, 0.3066, -0.3446, -1.833, -2.54, 2.828, 4.763, 0.9926, 2.504, -1.258, 0.4298, 2.536, -1.214, -3.932, 1.536, 0.03379, -3.839, 4.788, 0.04021, -0.2701, -2.139, 0.1339, 1.795, -2.12, 5.558, 0.8838, 1.895, 0.1073, 2.011, -1.267, -1.08, -1.12, -1.916, 1.524, -1.883, 5.348, 0.115, -1.059, -0.4772, 1.02, -0.4057, 1.822, 4.011, -3.246, -7.868, 2.445, 2.271, 0.5377, 0.2612, 0.7397, -1.059, 1.177, 2.706, -4.805, -0.7552, -4.43, -0.4607, 1.536, -4.653, -0.5952, 0.8115, -0.4434, 1.042, 1.179, -0.1524, 0.2753, -1.986, -2.377, -1.21, 2.543, -2.632, -2.037, 4.011, 1.98, -2.589, -4.9, 1.671, -0.2153, -6.109, 2.497]
def C(data):
    stuff = []
    # vary gamma
    for scale in xrange(1, 101, 1):
        ks_statistic, pvalue = ss.kstest(data, "cauchy", args=(scale,))
        stuff.append((ks_statistic, pvalue, scale))
    bestks = min(c[0] for c in stuff)
    bestrow = [row for row in stuff if row[0] == bestks]
    return bestrow

尝试 以使此功能适合我的数据,并返回与Cauchy分布拟合的最高概率相对应的比例参数(gamma) 。返回相应的ks-statistic和p值。我 想到 这可以通过找到最小ks-statistic来完成,这将是产生任何给定数据点和分布曲线点之间的最小距离的曲线。但我意识到我需要找到" alpha"这样我就可以找到样本数据来自Cauchy分布的概率,并且找到了我指定的比例/伽马值。

我已经引用了许多来源,试图解释如何找到" alpha",但我不知道如何在我的代码中执行此操作。

感谢您的帮助和见解!

1 个答案:

答案 0 :(得分:1)

我认为这个问题实际上超出了SO的范围,因为它涉及统计数据。你可能会更好地回答,比如,交叉验证。但是,让我提出一两个评论。

K-S用于测试给定的一组数据是否来自给定的,完全指定的分布函数。 (即使是出于这个目的,它也可能不是最佳的。)据我所知,它并不打算作为替代品之间的适合度量。

为了推断概率,首先必须有一个可行的数据概率模型。在这种情况下,替代方案的空间是什么,以及在零和替代假设下如何分配给它们的概率?

现在,要获得我提供的无益评论。谢谢你这么委婉!这就是我想表达的。

您尝试按单位步长从1到100进行缩放。我想指出,小于一的尺度会产生奇怪的结果。现在我看到一些紧密配合,当考虑p值时尤其如此;对于scale = 2,没有什么可以告诉他们的。这是一个情节。

various fits

每个三元组给出(比例,K-S,p)。

主要的事情可能,您想从数据中得到什么?