Scipy多维核密度估计

时间:2014-01-13 13:30:34

标签: python scipy

我一直试图获得30x30阵列的核密度估计值。下面是一个简短的例子,

from scipy.stats import gaussian_kde

x = arange(-0.5,0.51,1/29.)
y = arange(-0.5,0.51,1/29.)
z = randn(30,30)

vec = vstack((x,y))

KDE = gaussian_kde(z.T)
KDE2 = KDE(vec)

这会出现以下错误,

ValueError: points have dimension 2, dataset has dimension 30

我在这里发现了一些其他帖子,建议数据需要在估算之前重新整形,但我不确定如何正确地做到这一点。

任何帮助表示赞赏 d

1 个答案:

答案 0 :(得分:4)

KDE = gaussian_kde(z.T)您正在对30个随机变量(检查KDE.n)进行内核密度估算,每个变量都有30维(检查KDE.d })。

如果您正在研究某些数据,那么该数据就是gaussian_kde()的输入。

使用KDE(vec),您可以估算z的内核密度。输入必须具有形状(30,)(30,N),其中30是维数KDE.d。请参阅文档here

用这些形状提供x,y没有任何意义。示例here应该可以帮助您入门。在该示例中,d=2n= 2000