np.cov дает неожиданное количество значений - PullRequest
0 голосов
/ 02 октября 2019

При использовании команды np.cov для случайного набора данных из 10 значений я получаю массив 10x10 в качестве ответа. Я думаю, что мои данные не отформатированы правильно, но я не уверен.

np.random.seed(1)
rho = 0.2
sigma = 1
cov = (sigma**2)*[[1,rho],[rho,1]]
mean1 = (0,0)
x1 = np.random.multivariate_normal(mean1, cov, (10))
mean1 = np.mean(x1)
cov1 = np.cov(x1)
print(cov1)

1 Ответ

0 голосов
/ 02 октября 2019

Это правильное поведение - np.cov возвращает ковариационную матрицу.

В частности, он принимает каждую строку входных данных как переменную, причем столбцы представляют разные значенияэти переменные. Чтобы изменить это поведение, передайте rowvar=False.

В частности, если у вас есть две переменные, представленные в виде двух столбцов матрицы, вы можете использовать np.cov(data, rowvar=False) (или np.cov(data.T)), чтобы получить 2 на 2ковариационная матрица, в которой элементы в cov[0,1] и cov[1,0] будут ковариацией между двумя переменными.

Это также обсуждается здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...