Python 2.7 从KS测试结果中获得显著性水平α?

Python 2.7 从KS测试结果中获得显著性水平α?,python-2.7,scipy,statistics,kolmogorov-smirnov,Python 2.7,Scipy,Statistics,Kolmogorov Smirnov,我试图找到我的Kolmogorov-Smirnov测试结果的显著性水平/α水平(最终获得置信水平),我觉得我快疯了,因为这似乎在任何地方都解释得不够好(以我理解的方式) 我有样本数据,我想看看它是否来自四个概率分布函数中的一个:柯西函数、高斯函数、t函数和拉普拉斯函数。(我不是在做两个样本的测试。) 下面是Cauchy的示例代码: ### Cauchy Distribution Function data = [-1.058, 1.326, -4.045, 1.466, -3.069, 0.17

我试图找到我的Kolmogorov-Smirnov测试结果的显著性水平/α水平(最终获得置信水平),我觉得我快疯了,因为这似乎在任何地方都解释得不够好(以我理解的方式)

我有样本数据,我想看看它是否来自四个概率分布函数中的一个:柯西函数、高斯函数、t函数和拉普拉斯函数。(我不是在做两个样本的测试。)

下面是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
我正在尝试将此函数拟合到我的数据,并返回与柯西分布拟合的最高概率相对应的比例参数(gamma)。相应的ks统计量和p值也会返回。我认为这可以通过找到最小ks统计量来实现,该统计量是在任何给定数据点和分布曲线点之间产生最小距离的曲线。不过,我意识到我需要找到“alpha”,这样我就可以找到样本数据来自柯西分布的概率,以及我找到的特定比例/伽马值

我引用了很多资料试图解释如何找到“alpha”,但我不知道如何在我的代码中做到这一点


感谢您的帮助和见解

我认为这个问题实际上超出了SO的范围,因为它涉及统计数据。你最好回答交叉验证的问题。不过,让我说一两句话

K-S用于测试给定的数据集是否来自给定的、完全指定的分布函数。(即使是出于这个目的,它也可能不是最佳的。)据我所知,它并不是用来衡量备选方案之间的匹配程度的

要对概率进行推断,首先必须为数据建立一个可行的概率模型。在这种情况下,备选方案的空间是什么?在无效假设和备选假设下,概率是如何分配给它们的

现在,为了得到我提出的毫无帮助的评论。谢谢你这么机智!这就是我想要表达的

您可以尝试以单位步长从1缩放到100。我想指出,小于1的尺度会产生奇怪的结果。现在我看到了一些紧密的拟合,尤其是当考虑到p值时;对于比例=2,没有什么可以区别它们。这里有一个情节

每个三元组给出(刻度,K-S,p)


主要的问题可能是,你想从你的数据中得到什么?

对于0.1到1.0之间(包括0.1和1.0)的尺度值,K-S统计值增加,而p值减少:
对于[\u10]中的尺度。对于范围(1,11)]:尺度,kstest(数据,“cauchy”,args=(尺度,)
@BillBell:这确实帮助我找到了一种更好的方法,不仅可以对这段代码进行迭代,还可以对我拥有的其他代码进行迭代,谢谢。你能解释一下p值是如何告诉我数据拟合建议曲线的可能性的吗?谢谢你的耐心,我想我还是不理解,但不是因为你没有尽力帮助。从这张图中,我期望得到的结果是“绿色曲线最适合数据,因此分布来自具有该尺度的概率函数。”但p值太小了。。。我在阅读以下内容时左右为难:1)p值是你拒绝空值的最小显著性水平(例如,数据来自具有该标度值的函数),其中alpha通常为5%;2)如此小的p值(~e-15)意味着空值不太可能为真。我认为绿色曲线也可能是最佳拟合,取决于测量配合的方式。虽然我不认为你可以根据这些p值进行论证,但如果你假装这在统计学上是可以接受的,那么所有这些p值都很小,以至于表明这些分布中的一个产生样本数据的无效假设将被拒绝。如今,专业统计学家对使用p值进行判断非常谨慎,部分原因是这种逻辑困境必然会出现。