Суммирование отклонений / Значение 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()