Зміст курсу
Основи Теорії Ймовірностей
Основи Теорії Ймовірностей
Що таке коваріація?
Коваріація — це числова міра, яка кількісно визначає зв'язок між двома змінними.
Вона показує, як зміни однієї змінної відповідають змінам іншої змінної. Більш конкретно, коваріація вимірює спільну варіативність двох змінних і дає уявлення про напрямок (додатній або від’ємний) цієї варіативності.
Обчислення коваріації
Провести перший стохастичний експеримент кілька разів і записати результати кожного експерименту в масив. Це буде масив
x
;Провести другий стохастичний експеримент кілька разів і записати результати в масив
y
;Обчислити коваріацію за допомогою бібліотеки
numpy
:covariance = np.cov(x, y)[0, 1]
.
Приклади
import numpy as np import matplotlib.pyplot as plt # Assume that results of some stochastic experiments are stored in x array x = np.random.rand(100) * 10 # We provide another stochastic experiment by using the value of x and adding some noise y = x + np.random.randn(100) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Ми бачимо, що зі збільшенням значення x
значення y
також зростає. Кореляція, отже, є позитивною. Розглянемо інший експеримент:
import numpy as np import matplotlib.pyplot as plt # Assume that resylts of some stohastic experiments are stored in x array x = np.random.rand(100) * 10 # We provide another stohastic experiment by using the value of -x and adding some noise y = -x + np.random.randn(100) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Тепер, коли значення x
зростає, значення y
зменшується, і коваріація є негативною. Тепер розглянемо коваріацію між результатами двох незалежних експериментів:
import numpy as np import matplotlib.pyplot as plt # Generate random data for two variables with zero correlation np.random.seed(0) x = np.random.rand(200) y = np.random.rand(200) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
У результаті можна зробити висновок:
Якщо коваріація між двома величинами додатна, то зі збільшенням першої величини друга також зростає;
Якщо коваріація між двома величинами від’ємна, то зі збільшенням першої величини друга зменшується;
Якщо величини незалежні, то їхня кореляція дорівнює нулю (вони некорельовані).
Зверніть увагу на останній пункт: кореляція дорівнює нулю, якщо величини незалежні. Але обернене твердження не є істинним: якщо кореляція дорівнює нулю, це не означає незалежність. Розгляньте приклад:
import numpy as np import matplotlib.pyplot as plt # Set the number of vectors/points to generate num_points = 1000 # Generate random angles uniformly distributed between 0 and 2*pi angles = np.random.uniform(0, 2*np.pi, num_points) # Convert angles to vectors in polar coordinates r = np.sqrt(np.random.uniform(0, 1, num_points)) # Square root to achieve uniform distribution within the circle x = r * np.cos(angles) y = r * np.sin(angles) # Calculate the covariance covariance = np.cov(x, y)[0, 1] plt.scatter(x, y) # Add labels and title plt.xlabel('X') plt.ylabel('Y') plt.title('Covariance is '+ str(round(covariance, 3) )) # Show the plot plt.show()
Точки у наведеному вище прикладі знаходяться всередині одиничного кола, тому є залежними, але некорельованими.
Загалом, лише лінійні зв'язки між значеннями можна добре ідентифікувати за допомогою коваріації. Таким чином, у випадку некорельованих значень можна зробити висновок, що вони не мають лінійних залежностей, але можуть мати інші, більш складні типи залежностей.
Дякуємо за ваш відгук!