Подивіться, і ви знайдете (співвідношення)


66

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

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

Я не на високому рівні статистики, тож будь ласка, майте мене.


5
Це чудовий приклад того, чому потрібно багаторазове тестування гіпотез.

Імовірно, можна використовувати процедуру перестановки для створення нульового розподілу порогових значень для найбільшої кореляції, іншого порогу для другого за величиною кореляції тощо. Сподіваємось, це займе лише кілька годин у Python або R. (Ha! Відомі останні слова.) Але, напевно, хтось, мабуть, вже це зробив і десь зберег код?

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

Це відмінне запитання, гідне того, хто є чітким статистичним мислителем, оскільки він визнає тонкий, але важливий аспект багаторазового тестування.

Існують стандартні методи коригування р-значень множинних коефіцієнтів кореляції (або, що еквівалентно, для розширення їх довірчих інтервалів), такі як методи Бонферроні та Сідака ( qv ). Однак вони є занадто консервативними з великими кореляційними матрицями через властиві їм математичних зв’язків, які взагалі повинні містити коефіцієнти кореляції. (Деякі приклади таких взаємозв'язків див. Недавнє запитання та витікаюча з них нитка .) Один з найкращих підходів для вирішення цієї ситуації - це проведення перестановки (або перекомпонування) тесту. Це легко зробити за допомогою кореляцій: у кожній ітерації тесту просто випадковим чином скресліть порядок значень кожного з полів (знищуючи тим самим будь-яку притаманну кореляцію) та перерахуйте повну кореляційну матрицю. Зробіть це для декількох тисяч ітерацій (або більше), а потім підведіть підсумки розподілу записів кореляційної матриці, наприклад, вказавши їх 97,5 і 2,5 процентилі: вони будуть слугувати взаємними симетричними двосторонніми 95-відсотковими інтервалами довіри під нулем гіпотеза про відсутність кореляції. (Перший раз, коли ви зробите це з великою кількістю змінних, ви здивуєтеся, наскільки високими можуть бути деякі коефіцієнти кореляції, навіть коли немає властивої кореляції.)

Звітуючи про результати, незалежно від того, якими обчисленнями ви займаєтесь, слід включити наступне:

  • Розмір кореляційної матриці ( тобто скільки змінних ви переглянули).

  • Як ви визначили p-значення або "значущість" будь-якого з коефіцієнтів кореляції ( наприклад , залишили їх такими, як є, застосували корекцію Бонферроні, зробили тест на перестановку чи інше).

  • Чи дивились ви на альтернативні заходи кореляції, такі як співвідношення рейтингів Спірмена . Якщо ви це зробили, також вкажіть, чому ви вибрали метод, про який ви фактично звітуєте та використовуєте.


1
Це досить ретельний опис методів коригування значення p, але те, що залишається невимовленим, - це критерії коригування. Традиційно це показник помилок у сімейному режимі. Але це суворий критерій і не корисний, коли ви переглядаєте тисячі порівнянь. У цьому випадку часто використовується помилкова швидкість виявлення, яку вперше запропонував Бенджаміні.
Майкл Черник

corr(x1,y1)corr(xn,yn)xiyicorr(xi,yj) ij)? Чи потрібна нам ще корекція?
Jase

@Jase Так, ти. Сума виправлення залежить від взаємозв'язків між змінними. Методи на основі моделювання - це єдиний практичний спосіб визначення цих виправлень.
whuber

Вау приємно. Чи виправить цей метод, про який ви обговорювали, також виправити стандартні помилки щодо питань серійної кореляції та гетероскедастичності?
Jase

@Jase Було б важко інтерпретувати коефіцієнти кореляції в гетероседастичній моделі. Здається, ваш коментар посилається на лінійну модель у налаштуваннях часових рядів, а не на оцінку багатоваріантних коефіцієнтів кореляції.
whuber

10

З вашої подальшої відповіді на запитання Пітера Флома, це здається, що вам, можливо, краще послужити методи, які розглядають структуру вищого рівня у вашій кореляційній матриці.

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

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


1
(+1) Добре поради в світлі коментаря ОП до відповіді @Peter Flom.
whuber

7

Це приклад багаторазових порівнянь. Про це є велика література.

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

Якщо дані є лише шумом, то можна очікувати, що 1 з 20 з них буде значущим при p = .05. Це 247,5

Перш ніж піти далі, було б добре, якби ви могли сказати, ЧОМУ ви це робите. Що це за ці змінні, чому ви співвідносите їх, яка ваша змістовна ідея?

Або ви просто ловите на високі співвідношення?


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

7

Можливо, ви могли б зробити попередній аналіз на випадковій підмножині даних, щоб сформувати гіпотези, а потім перевірити ці кілька гіпотез, що цікавлять, використовуючи решту даних. Таким чином, вам не доведеться коригувати майже стільки ж декількох тестів. (Я думаю...)

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


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