Чому цей набір даних не має коваріації?


8

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

import numpy as np
x1 = np.array([ 0.03551153,  0.01656052,  0.03344669,  0.02551755,  0.02344788,
        0.02904475,  0.03334179,  0.02683399,  0.02966126,  0.03947681,
        0.02537157,  0.03015175,  0.02206443,  0.03590149,  0.03702152,
        0.02697212,  0.03777607,  0.02468797,  0.03489873,  0.02167536])
x2 = np.array([ 0.0372599 ,  0.02398212,  0.03649548,  0.03145494,  0.02925334,
        0.03328783,  0.03638871,  0.03196318,  0.03347346,  0.03874528,
        0.03098697,  0.03357531,  0.02808358,  0.03747998,  0.03804655,
        0.03213286,  0.03827639,  0.02999955,  0.0371424 ,  0.0279254 ])
print np.cov(x1, x2)

array([[  3.95773132e-05,   2.59159589e-05],
       [  2.59159589e-05,   1.72006225e-05]])

введіть тут опис зображення


4
Підказка: Що відбувається, коли ви дивитесь на кореляцію? Яка різниця між коваріацією та кореляцією?
алеші

2
Якщо ви вимірюєте числа, які в певному масштабі здаються малими або близькими, то різниці між ними також здадуться невеликими, а продукти різниці здадуться ще меншими. Спробуйте помножити всі свої дані на1000а потім повторне обчислення; коваріація повинна бути1000000разів більший
Генріх

Відповіді:


14

Величина коваріації залежить від величини даних і того, наскільки тісні точки даних розкидані навколо середнього значення цих даних. Це легко зрозуміти, дивлячись на формулу:

cоvх,у=(хi-х¯)(уi-у¯)н-1

У вашому випадку відхилення x1та x2даних вказують на середнє значення x1та x2становить:

x1-mean(x1)
 [1]  0.006043341 -0.012907669  0.003978501 -0.003950639 -0.006020309 -0.000423439  0.003873601
 [8] -0.002634199  0.000193071  0.010008621 -0.004096619  0.000683561 -0.007403759  0.006433301
[15]  0.007553331 -0.002496069  0.008307881 -0.004780219  0.005430541 -0.007792829

x2-mean(x2)
 [1]  0.0039622385 -0.0093155415  0.0031978185 -0.0018427215 -0.0040443215 -0.0000098315
 [7]  0.0030910485 -0.0013344815  0.0001757985  0.0054476185 -0.0023106915  0.0002776485
[13] -0.0052140815  0.0041823185  0.0047488885 -0.0011648015  0.0049787285 -0.0032981115
[19]  0.0038447385 -0.0053722615

Тепер, якщо ви помножите ці два вектори один з одним, ви, очевидно, отримаєте зовсім невеликі числа:

(x1-mean(x1)) * (x2-mean(x2))
 [1] 2.394516e-05 1.202419e-04 1.272252e-05 7.279927e-06 2.434807e-05 4.163041e-09 1.197349e-05
 [8] 3.515290e-06 3.394159e-08 5.452315e-05 9.466023e-06 1.897897e-07 3.860380e-05 2.690611e-05
[15] 3.586993e-05 2.907425e-06 4.136268e-05 1.576570e-05 2.087901e-05 4.186512e-05

Тепер візьміть суму і розділіть на н-1 і у вас є коваріація:

sum((x1-mean(x1)) * (x2-mean(x2))) / (length(x1)-1)
[1] 2.591596e-05

Ось причина, чому величина коваріації не дуже говорить про силу того, як x1і як x2змінюватись. Шляхом стандартизації (або нормалізації) коваріації, тобто її поділу на добуток стандартного відхилення x1та x2(дуже подібного до коваріації, тобто 2.609127e-05),

r=cоvх,усхсу=(х1-х¯)(уi-у¯)(н-1)схсу

ви отримуєте високий коефіцієнт кореляції, r=0,99, що підтверджує те, що ви можете бачити у своєму сюжеті.


7

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

Однак спочатку зазначимо, що н-деменатор версії стандартного відхилення не може перевищувати половини діапазону ( н-1 версія знаменника може, але з більш ніж кількома спостереженнями не на багато).

Діапазони для обох змінних складають порядку 0,02 (приблизно), тому відхилення повинні бути не більше приблизно вдвічі меншими за квадрат, або приблизно 10-4.

Отже, спостережувані значення дисперсій у вашому виході мають сенс; їх обоє менше, але більше десятої частини.

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

Отже, якщо діапазон обох змінних був близьким до 0,02, ми не могли очікувати перевищення абсолютної коваріації (0,02)2/4=10-4.

З цього дуже грубого аналізу нічого дивного не виглядає.

Більш точний аналіз випливає з фактичного проведення обчислень, використовуючи більш точні діапазони, а потім роздумуючи про форми граничних розподілів:
діапазони трохи нижче0,023 і 0,015 відповідно, тому коваріація не повинна перевищувати 8.6×10-5, але оскільки граничні розподіли не є майже симетричними - двоточкові розподіли, це повинно бути трохи менше, ніж це.

Дійсно, якщо ми скажемо, що вони не так далеко від рівномірного, коваріація буде обмежена чимось ближче 1/12 продукту, а не 1/4 - тобто для приблизно рівномірних змінних із цими діапазонами було б менше, ніж приблизно 2.9×10-5- але не набагато менше, оскільки кореляція висока.
[Ці змінні не є рівномірними - вони ліві перекоси, - але вони досить близькі для наших нинішніх цілей.]

Тож, дивлячись на діапазон кожної змінної та грубе відчуття граничних розподілів та кореляції у графіці, я б очікував, що коваріація буде трохи меншою, ніж 2.9×10-5. Це насправді про2.6×10-5.

(Не так вже й погано для швидкого обчислення зворотного конверту, починаючи з двох значущих цифр!)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.