当使用scipy.stats.multivariate_normal.pdf时出现错误:操作数无法与形状一起广播(1,8)(21,)

jan*_*n93 5 python pdf gaussian scipy quantile

我想计算我在python上的数据集的多变量高斯密度函数.我的数据集有21个变量,有75个数据点.

我已经计算了协方差矩阵(cov),它是一个21*21阵列,平均数组m,它有形状(21,).我需要使用这个scipy函数的另一个输入是"Quantiles(类似数组),x的最后一个轴表示组件".

我真的不明白分位数所指的是什么.

我为该函数写了我的分位数输入为quantiles = np.array([0.0,0.01,0.05,0.1,1-0.10,1-0.05,1-0.01,1.0])但是当我计算scipy时我一直收到错误.stats.multivariate_normal.pdf(位数,米,COV)

错误是:valueError:操作数无法与形状一起广播(1,8)(21,)

谁能帮忙?

Ufu*_*ici 10

我认为该文件要求以x一种相当难以理解的方式在其最后一个轴中包含实际的随机向量.以下代码有效:

import numpy as np
from scipy.stats import multivariate_normal


mean = np.array([0.5, 0.1, 0.3])
cov = np.array([[0.1, 0.0, 0.0], [0.0, 1.5, 0.0], [0.0, 0.0, 0.9]])
x = np.random.uniform(size=(100, 3))
y = multivariate_normal.pdf(x, mean=mean, cov=cov)
print(y)
Run Code Online (Sandbox Code Playgroud)

因此,构建您的数据矩阵x,使其在第一维(每行)中包含您的数据向量.第二个维度(列)将构成您的21个独立变量.基本上,您需要将数据插入到一个(75,21)大小的矩阵中.很遗憾平均向量和协方差矩阵条目对应于正确的变量.