Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > как считается корреляции событий?


Автор: victor79 9.3.2014, 22:15
пусть будет множество замеров - 1000 штук, из них в 700 разах возникало событие А, в 400 разах возникало событие Б. В 300 разах было одновременное возникновение А и Б.

Исходя из этого, всего замеров где были А или Б:
Код

объед_а_б = колич_а + колич_б - пересеч_а_б

всего замеров без А и без Б было:
Код

прочие_без_а_и_б = всего - объед_а_б


Теперь к формуле корреляции, как я ее понял в приведении к этим данным.
Я так понял, что значениями для параметров Х и У формулы корреляции  здесь будут 1 или 0 - событие в замере есть или события нету.

Код

// Делимое: Сумма( (Х - СредХ)*(У - СредУ) )

ср_а = колич_а / всего
ср_б = колич_б / всего

Делимое =
    (0 - ср_а) * (0 - ср_б) * прочие_без_а_и_б +
    (1 - ср_а) * (0 - ср_б) * (а - пересеч_а_б) +
    (0 - ср_а) * (1 - ср_б) * (б - пересеч_а_б) +
    (1 - ср_а) * (1 - ср_б) * пересеч_а_б

// Делитель: Корень(Сумма( (Х - СредХ)^2 * (У - СредУ)^2 ) )

су_кв_а =
    (0 - ср_а) * (0 - ср_а) * (всего - а) +
    (1 - ср_а) * (1 - ср_а) * а
    
су_кв_б =
    (0 - ср_б) * (0 - ср_б) * (всего - б) +
    (1 - ср_б) * (1 - ср_б) * б;
    
Делитель = корень( су_кв_а * су_кв_б )

Результат = Делимое / Делитель


И в этом я не все понимаю. В моем представлении, корреляция событий А и Б не должна зависить от объема всей выборки, а только от относительности друг с другом.
По этой формуле для цифр:
Всего = 1000, А=700, Б=700, ПересечАБ = 700 - результат единица - как нужно,
а для случая:
Всего = 1000, А=400, Б=400, ПересечАБ = 0 - результат -0.669, но мне казалось д.б. минус один - т.к. не пересекаемые события.

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




Автор: Mirkes 9.3.2014, 22:54
Цитата(victor79 @  9.3.2014,  22:15 Найти цитируемый пост)
Всего = 1000, А=400, Б=400, ПересечАБ = 0 - результат -0.669, но мне казалось д.б. минус один - т.к. не пересекаемые события.

Конечно не должно быть -1. У Вас небольшая путаница в понятия. Есть случайная величина А и у каждого испытания один из двух исходов А или не А. То же самое со второй случайной величиной В или не В. В результате имеем 4 состояния. Причем коррелировать могут как события А и В так и события не А и не В, А и не В и т.д. Корреляция СЛУЧАЙНЫХ ВЕЛИЧИН а не событий!
В вашем примере 400 А и не В, 400 не А и В, 200 не А и не В. последние 200 вам всю картину и портят.
Если вы собираетесь работать с бинарными признаками, то наверное лучше использовать корреляцию по Хэммингу а не по Пирсону, которую вы описали. Она и считается проще и, наверное, более соответствует Вашим ожиданиям.

Автор: Фантом 10.3.2014, 00:19
Цитата(victor79 @  9.3.2014,  23:15 Найти цитируемый пост)
Всего = 1000, А=400, Б=400, ПересечАБ = 0 - результат -0.669, но мне казалось д.б. минус один - т.к. не пересекаемые события.

Нет. "Минус один" получился бы в ситуации, когда отсутствие одного из событий гарантировало бы наличие другого. А у Вас из 1000 замеров в 200 случаях это неверно, поэтому антикорреляция есть, но не абсолютная.

Автор: victor79 10.3.2014, 00:42
Интуитивно я понимаю, что оставшиеся 200 портят картину. Я просто попытался привести свою ситуацию к формуле корреляции как я ее понял и вот что из нее получилось. Изначально я вообще обдумывал поделить пересечение возникновения на объединение, или пересечение на сумму количества А и Б. Т.е. ищу расчет некоего коэффициента, крайние значения которого есть то, на что нужно обратить внимание. Просто решил попробовать сделать по формулам, а не по своим придумкам.

В интернете я не нашел "корреляции Хэмминга", есть растояние Хэмминга, которое есть количество различий, но это то не то. Может быть Вы подразумевали какую то другую корреляцию?

Автор: Mirkes 10.3.2014, 21:51
С литературой по корреляции Хемминга паршиво даже на английском smile.
Нормализованный коэффициент корреляции Хэмминга считается по простой формуле: (Число совпавших символов - Число не совпавших символов)/(общее число символов в строке). Меняется от -1 до 1. В формуле использовал слово "символ" поскольку расстояние Хэмминга и связанный с ним коэффициент корреляции исходно определялись для строк символов. В вашем случае формула примет вид:
(Число одновременно произошедших событий А и В + Число одновременно произошедших событий не А и не В - Число одновременно произошедших событий А и не В - Число одновременно произошедших событий не А и В)/(Общее число событий)

Цитата(victor79 @  9.3.2014,  22:15 Найти цитируемый пост)
Всего = 1000, А=700, Б=700, ПересечАБ = 700 - результат единица - как нужно,

имеем (700+300-0-0)/1000=1

Цитата(victor79 @  9.3.2014,  22:15 Найти цитируемый пост)
Всего = 1000, А=400, Б=400, ПересечАБ = 0 - результат -0.669, но мне казалось д.б. минус один - т.к. не пересекаемые события.

имеем (200-400-400)/1000=-0.6, как и ожидалось!

Еще раз подчеркну, что отсутствие события А означает наличие события не А! Для случайной величины Х в Вашем примере пространство исходов содержит два элемента А и не А.
А вот если Вы рассмотрите пример Всего = 1000, А=500, Б=500, ПересечАБ = 0, то получите (0+0-500-500)/1000=-1

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)