为Anderson Darling测试Octave forge Statistics包功能创建CDF

时间:2010-01-31 18:43:59

标签: statistics octave

我正在使用Octave,我想使用Octave forge Statistics包中的anderson_darling_test来测试是否从同一统计分布中提取了两个数据向量。此外,参考分布不太可能是“正常的”。此参考分布将是已知分布,并取自上述函数的帮助“'如果您从已知分布中进行选择,请将值转换为分布的CDF值并使用”uniform“。 “

因此,我的问题是:如何将数据值转换为参考分布的CDF值?

问题的一些背景信息:我有一个原始数据值向量,我从中提取循环组件(这将是参考分布);然后,我希望将此循环组件与原始数据本身进行比较,以查看原始数据本质上是否基本上是循环的。如果两个相同的零假设可以被拒绝,那么我将知道原始数据中的大部分运动不是由于周期性影响,而是由于趋势或仅是噪声。

2 个答案:

答案 0 :(得分:0)

如果您的数据具有特定分布,例如beta(3,3)

p = betacdf(x, 3, 3)
通过CDF的定义,

将是统一的。如果要将其转换为法线,则可以调用反向CDF函数

x=norminv(p,0,1)

在制服p上。转换后,使用您最喜欢的测试。我不确定我是否理解您的数据,但您可能会考虑使用Kolmogorov-Smirnov test代替,这是对分布式平等的非参数测试。

答案 1 :(得分:0)

您的方法在多方面受到误导。几点:

  • 在Octave forge中实施的Anderson-Darling测试是单样本测试:它需要一个数据向量和参考分布。应该知道分布 - 不是来自数据。当您正确引用有关使用CDF的帮助文件和未内置的分发的“统一”选项时,您忽略了同一帮助文件的下一句话:
  

如果从数据本身估计分布参数,则不要使用“统一”,因为这会使A ^ 2统计量偏向较小的值。

所以,不要这样做。

  • 即使您找到或编写了一个实现正确的双样本Anderson-Darling或Kolmogorov-Smirnov测试的函数,您仍然会遇到一些问题:

    1. 您的样本(数据和从数据估计的循环部分)不是独立的,这些测试假定独立。

    2. 根据您的描述,我假设涉及某种时间预测器。因此,即使分布一致,这并不意味着它们在相同的时间点重合,因为比较分布会随着时间的推移而崩溃。

    3. 循环趋势+误差的分布预计不会仅与循环趋势的分布相同。假设趋势是sin(t)。然后它永远不会超过1.现在添加一个正态分布的随机误差项,标准差为0.1(小,因此趋势占优势)。显然,你可以获得远高于1的价值。

我们没有足够的信息来确定正确的事情,而且无论如何它并不是一个真正的编程问题。查找时间序列理论 - 分离循环组件是那里的一个主要话题。但许多合理的分析可能基于残差:(观测值 - 从循环分量预测)。你仍然需要注意自相关和其他复杂性,但至少它会朝着正确的方向前进。