Встроенная функция для вычисления ковариации

Есть ли способ в python получить ковариационную матрицу с учетом средних и выборочных точек данных

Пример:

mean = [3 3.6]
data = [[1 2]
        [2 3]
        [3 3]
        [4 5] 
        [5 5]]

Я знаю, как рассчитать то же самое, подставив эти значения в формулу. Но есть ли встроенная функция в python, которая делает это для меня. Я знаю, что в Matlab есть такой, но я не уверен в python.


person Jannat Arora    schedule 29.03.2012    source источник


Ответы (1)


numpy.cov() можно использовать для вычисления ковариационной матрицы:

In [1]: import numpy as np

In [2]: data = np.array([[1,2], [2,3], [3,3], [4,5], [5,5]])

In [3]: np.cov(data.T)
Out[3]: 
array([[ 2.5,  2. ],
       [ 2. ,  1.8]])

По умолчанию np.cov() ожидает, что каждая строка будет представлять переменную с наблюдениями в столбцах. Поэтому мне пришлось транспонировать вашу матрицу (используя .T).

Альтернативный способ добиться того же — установить rowvar в False:

In [15]: np.cov(data, rowvar=False)
Out[15]: 
array([[ 2.5,  2. ],
       [ 2. ,  1.8]])
person NPE    schedule 29.03.2012