Создать CDF для теста Андерсона Дарлинга для функции пакета Octave forge Statistics

Я использую Octave, и я хотел бы использовать anderson_darling_test из пакета Octave forge Statistics, чтобы проверить, взяты ли два вектора данных из одного и того же статистического распределения. Кроме того, эталонное распределение вряд ли будет «нормальным». Этот эталонный дистрибутив будет известным дистрибутивом, взятым из справки для вышеуказанной функции «Если вы выбираете из известного дистрибутива, преобразуйте ваши значения в значения CDF для дистрибутива и используйте «uniform». "

Поэтому мой вопрос: как мне преобразовать значения моих данных в значения CDF для эталонного распределения?

Некоторая справочная информация по проблеме: у меня есть вектор необработанных значений данных, из которого я извлекаю циклическую составляющую (это будет эталонное распределение); Затем я хочу сравнить этот циклический компонент с самими необработанными данными, чтобы увидеть, являются ли необработанные данные циклическими по своей природе. Если нулевую гипотезу о том, что это одно и то же, можно отклонить, я буду знать, что большая часть движения необработанных данных связана не с циклическими влияниями, а либо с трендом, либо просто с шумом.


person Andrew    schedule 31.01.2010    source источник


Ответы (2)


Если ваши данные имеют определенное распределение, например beta(3,3), тогда

p = betacdf(x, 3, 3)

будет однородным по определению CDF. Если вы хотите преобразовать его в нормальный, вы можете просто вызвать обратную функцию CDF

x=norminv(p,0,1)

на униформе p. После преобразования используйте свой любимый тест. Я не уверен, что понимаю ваши данные, но вы можете рассмотреть возможность использования Kolmogorov- вместо этого тест Смирнова, который является непараметрическим тестом равенства распределений.

person Tristan    schedule 01.02.2010

Ваш подход ошибочен во многих отношениях. Несколько моментов:

  • Тест Андерсона-Дарлинга, реализованный в Octave forge, представляет собой тест с одной выборкой: для него требуется один вектор данных и эталонное распределение. Распределение должно быть известно, а не исходить из данных. В то время как вы правильно цитируете файл справки об использовании CDF и опции «uniform» для не встроенного дистрибутива, вы игнорируете следующее предложение того же файла справки:

Не используйте «равномерное», если параметры распределения оцениваются на основе самих данных, так как это резко смещает статистику A^2 в сторону меньших значений.

Итак, не делайте этого.

  • Даже если вы нашли или написали функцию, реализующую правильный двухвыборочный тест Андерсона-Дарлинга или Колмогорова-Смирнова, у вас все равно осталась бы пара проблем:

    1. Ваши выборки (данные и циклическая часть, оцененная по данным) не являются независимыми, и эти тесты предполагают независимость.

    2. Учитывая ваше описание, я предполагаю, что здесь задействован какой-то предиктор времени. Таким образом, даже если распределения совпадут, это не означает, что они совпадают в одни и те же моменты времени, потому что сравнение распределений с течением времени рушится.

    3. Ожидается, что распределение циклического тренда + ошибки не будет таким же, как распределение только циклического тренда. Предположим, что тренд равен sin(t). Тогда он никогда не превысит 1. Теперь добавьте нормально распределенный член случайной ошибки со стандартным отклонением 0,1 (маленький, чтобы тренд был доминирующим). Очевидно, вы можете получить значения значительно выше 1.

У нас недостаточно информации, чтобы выяснить, что нужно делать, и в любом случае это не вопрос программирования. Поищите теорию временных рядов — там основной темой является разделение циклических компонентов. Но многие разумные анализы, вероятно, будут основаны на остатках: (наблюдаемое значение - предсказанное из циклического компонента). Вам все равно придется быть осторожным с автокорреляцией и другими сложностями, но, по крайней мере, это будет движение в правильном направлении.

person Aniko    schedule 01.02.2010