Комментарии 12
Полезная статья (спасибо!), но, к сожалению, я не нашел в ней предупреждения, что применимость всех этих формул по сути ограничена случайными величинами. А это очень важный нюанс! Тем более в статье, которая фактически является туториалом, и где существенное место уделено оценке значимости. Многие читатели могут просто не обратить на это внимания, и после использования приведенных коэффициентов и формул придут к грубо ошибочным выводам.
Проблема состоит в том что описанную технику нельзя использовать при анализе случайных процессов, т.е. когда обе переменные зависят от времени (либо другого параметра с аналогичным смыслом). Не хочу показаться занудой и буквоедом, но вы удивитесь, как часто все эти формулы будут показывать уверенно значимую (формально) связь, даже если две переменные не связаны совершенно вовсе никак не от слова совсем (с). Причем, это утверждение остается верным вне зависимости от того, какой именно из корреляционных коэффициентов использовать.
Проблема в том, что при построении критериев значимости обычно предполагается, что различные значения каждой из переменных взаимно независимы. Если мы извлекаем эти значения из некоторой генеральной совокупности, то это действительно так - порядок их выборки абсолютно не важен: от перенумерации измерений ничего не изменится. Но если мы имеем дело с временным рядом (случайным процессом), то это чаще всего неверно. Проведите простой мысленный эксперимент: будет ли утрачена какая-то информация, если перемешать измерения в случайном порядке? Если да - то вы однозначно имеете дело не со случайной величиной, а со случайным процессом. И соответственно, все обычные критерии значимости корреляций (в том числе и описанные в обсуждаемой статье) абсолютно неприменимы.
Поясню на простом примере.
Допустим, нам надо определить среднюю длину столов на складе. Тогда нам в общем не важно, в каком порядке проводить измерения. Выбираем случайный стол, измеряем, и так сто раз. Генеральная совокупность - это столы, наша сотня измерений (столов) - это выборочные значения, все ок.
Теперь усложним задачу: проверим, есть ли какая-то связь между длиной стола и его шириной. Вместо одномерной случайной величины у нас теперь есть двумерная - т.е. пары {длина, ширина}. Их (измеряемые столы) снова можно перемешивать, как угодно - результат не изменится! В такой ситуации все корреляционные критерии работают корректно.
Но представим теперь, что в процессе замеров по складу ходит дровосек и быстро-быстро отпиливает от этих столов доски с той или другой стороны. К моменту последнего измерения от крайнего стола останется лишь небольшая дощечка. Даже если изначально длина и ширина стола были полностью независимы, теперь наши точки {длина, ширина} на x-y-диаграмме будут группироваться вдоль линии, указывающей на начало координат. И любой корреляционный критерий покажет весьма жесткую (высокозначимую) связь между нашими переменными. Которая в действительности (возможно!) ложная...
Дело в том, что размеры столов закономерно уменьшались во времени. Если глянуть на график зависимости длины/ширины от номера измерения, то эта связь очевидна. В начале замеров у нас, как правило, были метры, а ближе к концу столов (простите за каламбур ;-) - в разы меньше. Но это можно заметить, только если анализировать неперемешанные данные! Если же перемешать измерения, т.е. взять наблюдения {длина, ширина} и присвоить каждой паре случайный номер, то графики длины/ширины никакой зависимости от номера измерения не покажут.
Именно это и является одним из признаков, что вместо случайной величины мы имеем дело с временным рядом, т.е. случайным процессом. Конечно, для проверки этого обстоятельства есть много более формальных критериев. Но приведенный тест хорош тем, что его можно применять просто в порядке мысленного эксперимента. Достаточно лишь проверить: важен ли момент времени, когда проведено измерение? Никому ведь и в голову не придет прогнозировать поведение курса доллара, взяв 30-летний ряд и перемешав все значения перед анализом (то есть забудем все даты, и будем рассматривать перемешанный массив из 30*365 не привязанных ко времени измерений). Да, в случае курса вполне очевидно, что это не случайная величина, а случайный процесс (который может зависеть от времени). Но то же самое можно сказать и про огромное множество других наблюдений, которые, тем не менее, достаточно часто ошибочно рассматриваются, как случайные величины. И тот факт, что в статье использован относительно безопасный в этом плане пример, даже в каком-то смысле опасен тем, что читатель расслабится, и подумает, что так
будет всегда ;-)
Кстати, интересно: если рассмотреть данные о расходе и пробеге стареющего (и особо не ремонтируемого) автомобиля, со все более раздолбанным двигателем и ходовой, на котором хозяин все больше опасается ехать куда-то в глушь (и все чаще катается лишь по асфальту в ближайшей окрестности дома), то не возникнет ли там в таких данных тенденций, которые уже не позволят игнорировать зависимость измерений от времени?
А мораль сей басни простая: корреляционный анализ - это именно тот случай, когда надо соблюдать особую осторожность. Так как несмотря на кажущуюся простоту, здесь имеется целая россыпь подводных камней, которые могут оказаться фатальными
Согласен. Это же классика - "ложная корреляция". Об этом явлении статистики в работах еще в конце 19 века писали...
Кстати, интересно: если рассмотреть данные о расходе и пробеге стареющего (и особо не ремонтируемого) автомобиля, со все более раздолбанным двигателем и ходовой, на котором хозяин все больше опасается ехать куда-то в глушь (и все чаще катается лишь по асфальту в ближайшей окрестности дома), то не возникнет ли там в таких данных тенденций, которые уже не позволят игнорировать зависимость измерений от времени?
Такие тенденции, очевидно, могут возникнуть, но на длительном промежутке времени. Есть нормы расхода ГСМ, установленные приказом Минтранса, так согласно этим нормам к расходу топлива применяются повышающие коэффициент, учитывающие возраст и пробег автомобиля:
Для автомобилей, находящихся в эксплуатации более 5 лет с общим пробегом более 100 тыс.км– до 5%; более 8 лет с общим пробегом более 150 тыс.км – до 10%.
Для длительных наблюдений пришлось бы вводить еще одну независимую переменную - срок эксплуатации, либо категориальную переменную (до 5 лет и более 5 лет)...
Для оценки нелинейной связи существуют гораздо более мощные и надежные методы, оперирующие центрированными моментами случайных величин, смотрите distance correlation. Кроме принципиальных преимуществ, еще и считается просто и легко распараллеливается, есть Python библиотека dcor https://dcor.readthedocs.io/en/latest/ которую я сам проверял и результаты она выдает верные (распараллеливания в ней не было, когда я смотрел, потому я пользовался своей mapreduce реализацией, но это важно только для больших данных).
Как нам может помочь знание о нелинейной корреляции без возможности установления правила этой корреляции (регрессии)? Ведь ни для описания явления, ни для прогнозирования факта корреляции недостаточно.
Так корреляционный анализ - это этап, предшествующий регрессионному анализу. Установление зависимости, проверка ее значимости, прогнозирование - это все далее
как установление корреляции непонятной природы поможет регрессии (если сам закон взаимозависимости нелинеен и неизвестен)? Как это на практике можно использовать? И чем это будет лучше линеаризации регрессии (по известным моделям - полиномы, экспоненты, гиперболы) ?
Коллега, как это использовать на практике - написаны десятки, если не сотни, книг, монографий, справочников и статей. Это же классика прикладной статистики. Корреляционный анализ - это разведка перед построением регрессионной модели.
И чем это будет лучше линеаризации регрессии (по известным моделям - полиномы, экспоненты, гиперболы) ?
Не понял вашу мысль. Причем здесь линеаризация? То, что мы обсуждаем - это не хуже и не лучше линеаризации, это разные этапы статистического анализа.
Применительно к разобранному примеру - зависимость показателей FuelFlow и Mileage может быть описана набором парных регрессионных моделей (линейная, степенная, экспонента, логарифмическая, даже полином, хоть полином здесь применять и некорректно). Мы, конечно, построим все эти модели, оценим их значимость, адекватность по Фишеру, ошибку аппроксимации, сравним по информационным критериям (AIC, SC, HQ) - это все понятно. Но предварительный вывод о том, что вид корреляционной связи значимо отличается от линейной - это еще один кирпич в будущий статистический вывод. А если бы связь оказалась значимо линейной? Это позволило бы сразу остановиться на парной линейной регрессионной модели.
Если программное обеспечение позволяет нам рассчитать показатель - почему бы его не рассчитать и не проанализировать? Я так считаю. Но, как и писал раньше - каждый исследователь сам принимает решение о том, как и что считать.
Если есть нелинейная зависимость, то ее можно компенсировать и получить выровненные данные, для которых имеет смысл обычный коэффициент корреляции. Также перед вычислением последнего данные имеет смысл очистить от выбросов.
Мы выборку уже очистили от выбросов. И очищенная от выбросов выборка дает нам значимую нелинейную зависимость.
Если этого не сделать - то закон распределения будет отличаться от нормального, соответственно, проверку гипотез выполнять будет нельзя. Пришлось бы работать с непараметрическими показателями тесноты связи, а то уже отдельная тема...
Расчет и анализ корреляционного отношения средствами Python