Суммирование отклонений / Значение np.cov с использованием Python/Numpy

Использование Python:

Итак, у меня есть DataFrame с именем File, в котором я хочу найти общую дисперсию одного из столбцов "Цены".

Для формулы дисперсии я понимаю, что вы должны включить ковариацию.

Я читал, что np.cov даст ковариационную матрицу. Однако, когда я использую это, я не получаю матрицу (или я так думаю)

Мой код

np.cov(File['Prices'])

дает мне

 array(2118322.0106797763)

Затем этот ответ вычисляет следующую функцию: Var(Все цены) = Var(цена 1) + .....+ Var(Цена N) + 2[Cov(X1,X2) + .....+Cov(N-1,N)],

Значит, 2118322 на самом деле является суммой дисперсий? Я ожидал получить матрицу не то, что я на самом деле получил.

1 ответ

Вы просто проходите в одной последовательности, поэтому вы получаете одну дисперсию.

По сути, вы делаете что-то вроде:

np.cov([3.4, 5.6, ..., 9.8, 4.5])

... который просто дает дисперсию последовательности.

Если вы хотите ковариационную матрицу, описывающую отношения между несколькими переменными, вам нужно будет передать в 2D массив. По умолчанию, numpy.cov ожидает numdimensions x numsamples массив. (Это можно изменить с помощью rowvar=False или просто передавая данные.)

В основном, как-то так:

import numpy as np

# Generate two 100-sample sequences
data = np.random.random((2, 100))

print np.cov(data)

Или с pandas датафрейм, просто позвоните cov метод:

import numpy as np
import pandas as pd

# Generate two 100-sample sequences
x, y = np.random.random((2, 100))
data = pd.DataFrame(dict(x=x, y=y))

# Similarly, we could have done "np.cov(data.T)", though that would yield 
# an array instead of a dataframe
print data.cov()
Другие вопросы по тегам