Посмотри и найдешь (корреляция)


66

У меня есть несколько сотен измерений. Теперь я рассматриваю возможность использования какого-либо программного обеспечения для сопоставления каждой меры с каждой мерой. Это означает, что существуют тысячи корреляций. Среди них (статистически) должна быть высокая корреляция, даже если данные полностью случайны (каждая мера имеет только около 100 точек данных).

Когда я нахожу корреляцию, как мне включить в нее информацию о том, как сильно я искал корреляцию?

Я не на высоком уровне в статистике, поэтому, пожалуйста, потерпите меня.


5
Это отличный пример того, почему нужно проверить несколько гипотез.

Предположительно можно использовать процедуру перестановки, чтобы сгенерировать нулевое распределение для порогов значимости для наибольшей корреляции, другого порога для второй по величине корреляции и так далее. Надеюсь, это займет всего несколько часов в Python или R. (Ха! Знаменитые последние слова.) Но наверняка кто-то, должно быть, уже сделал это и где-то сохранил код?

4
@tmo Rна этом компьютере занимает 18 секунд, чтобы получить 1000 реализаций распределения нулевой перестановки максимального коэффициента корреляции для матрицы 300 на 100 x:correl <- function(x, k=1) { n <- dim(x)[2] * (dim(x)[2]-1) / 2; v <- cor(x); sort(v[lower.tri(v)])[(n-k+1):n] }; sim <- replicate(1000, correl(apply(x,2,sample)))
whuber

Ответы:


74

Это отличный вопрос, достойный того, кто мыслит статистически ясно, потому что он признает тонкий, но важный аспект множественного тестирования.

Существуют стандартные методы для корректировки p-значений множественных коэффициентов корреляции (или, что эквивалентно, для расширения их доверительных интервалов), такие как методы Бонферрони и Сидака ( см. ). Однако они слишком консервативны с большими корреляционными матрицами из-за врожденных математических соотношений, которые должны соблюдаться среди коэффициентов корреляции в целом. (Некоторые примеры таких отношений см. В последнем вопросе и в последующей ветке .) Один из лучших подходов для решения этой ситуации - проведение теста на перестановку (или повторную выборку)., Это легко сделать с помощью корреляций: на каждой итерации теста просто случайным образом скремблируйте порядок значений каждого из полей (тем самым разрушая любую внутреннюю корреляцию) и пересчитайте полную корреляционную матрицу. Сделайте это для нескольких тысяч итераций (или более), затем суммируйте распределения элементов корреляционной матрицы, например, указав их 97,5 и 2,5 процентили: они будут служить взаимно симметричными двусторонними 95% доверительными интервалами при нулевом значении. гипотеза о не корреляции. (В первый раз, когда вы сделаете это с большим количеством переменных, вы будете удивлены, насколько высокими могут быть некоторые коэффициенты корреляции, даже если нет внутренней корреляции.)

При сообщении результатов, независимо от того, какие вычисления вы делаете, вы должны включать следующее:

  • Размер корреляционной матрицы ( т. Е. Сколько переменных вы просмотрели).

  • Как вы определили p-значения или «значимость» любого из коэффициентов корреляции ( например , оставили их как есть, применили поправку Бонферрони, провели тест перестановки или что-то еще).

  • Смотрели ли вы на альтернативные меры корреляции, такие как ранговая корреляция Спирмена . Если вы это сделали, укажите также, почему вы выбрали метод, о котором вы действительно сообщаете и используете.


1
Это довольно подробное описание методов корректировки p-значения, но что не указано, так это критерии корректировки. Традиционно это был семейный уровень ошибок. Но это строгий критерий, который бесполезен, когда вы смотрите на тысячи сравнений. В этом случае обычно используется уровень ложных открытий, впервые предложенный Бенджамини.
Майкл Черник

Что, если мы просто хотим посмотреть на корреляции очень хорошо определенных пар переменных (например, , ... , где каждый и являются переменными), но не заботятся о все другие возможные комбинации (то есть не заботятся о )? Нам все еще нужна коррекция? c o r r ( x n , y n ) x i y i c o r r ( x i , y j ) i jcorr(x1,y1)corr(xn,yn)xiyicorr(xi,yj) ij
Джейс

@ Джейс Да, вы делаете. Размер коррекции зависит от взаимосвязи между переменными. Методы, основанные на моделировании, являются единственным практически осуществимым способом определения этих поправок.
whuber

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

@Jase Было бы трудно интерпретировать коэффициенты корреляции в гетероскедастической модели. Ваш комментарий, по-видимому, относится к линейной модели в настройке временного ряда, а не к оценке многовариантных коэффициентов корреляции.
whuber

10

Судя по вашему последующему ответу на вопрос Питера Флома, кажется, что вам лучше подойдут техники, которые смотрят на структуру более высокого уровня в вашей матрице корреляции.

Такие методы, как факторный анализ, PCA, многомерное масштабирование и кластерный анализ переменных, можно использовать для группировки ваших переменных в наборы относительно более связанных переменных.

Кроме того, вы можете теоретически подумать о том, какая структура должна присутствовать. Когда у вас большое количество переменных и мало наблюдений, вам часто лучше полагаться на предыдущие ожидания.


1
(+1) Хороший совет в свете комментария ОП к ответу @Peter Flom.
whuber

7

Это пример нескольких сравнений. Об этом много литературы.

Если у вас, скажем, 100 переменных, то у вас будет 100 * 99/2 = 4950 корреляций.

Если данные являются просто шумом, то можно ожидать, что 1 из 20 будет значимым при p = 0,05. Это 247,5

Однако, прежде чем идти дальше, было бы хорошо, если бы вы могли сказать, ПОЧЕМУ вы это делаете. Что это за переменные, почему вы их коррелируете, какова ваша основная идея?

Или вы просто ловите высокие корреляции?


3
Причиной, по которой я хотел сделать это, было непредвзятое отношение к пониманию моих данных, так что, возможно, я стараюсь найти корреляции, о которых раньше не думал, с целью просветления. Я, конечно, не делаю это, чтобы удовлетворить моего босса или что-то необычное. Я бы предпочел не вдаваться в подробности данных, так как я хочу получить общий ответ на этот вопрос, чтобы я мог использовать его во всех ситуациях в будущем.
Дэвид

7

Возможно, вы могли бы провести предварительный анализ случайного подмножества данных, чтобы сформировать гипотезы, а затем проверить эти несколько интересующих гипотез, используя остальные данные. Таким образом, вам не придется исправлять почти столько же тестов. (Думаю...)

Конечно, если вы воспользуетесь такой процедурой, вы уменьшите размер набора данных, используемого для окончательного анализа, и таким образом уменьшите свою способность находить реальные эффекты. Однако поправки на множественные сравнения также уменьшают мощность, и поэтому я не уверен, что вы обязательно что-то потеряете.


5
(+1) Это вообще отличная идея. Однако для больших корреляционных матриц существует так много статистических данных, и многие из них могут быть одновременно чрезмерно большими, что обычно приходится их корректировать. В противном случае вы будете преследовать большое количество вводящих в заблуждение «значимых» корреляций, которые просто исчезают в данных удержания. (Запустите симуляцию, скажем, с несколькими сотнями дро из 50 некоррелированных стандартных нормальных вариаций. Это откровение.)
whuber
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.