KDE失败了两分?

Jos*_*osh 3 python numpy scipy kernel-density

以下简单示例返回一个奇异矩阵.为什么?有什么方法可以克服它吗?

In: from scipy.stats import gaussian_kde
Out:

In:  points
Out: (array([63, 84]), array([46, 42]))

In:  gaussian_kde(points)
Out: (array([63, 84]), array([46, 42]))

LinAlgError: singular matrix
Run Code Online (Sandbox Code Playgroud)

gg3*_*349 6

查看回溯,在反转协方差矩阵时可以看到它失败.这是由于数据的精确多重共线性.如果两个变量共线,即在页面中,则数据中存在多重共线性

两个自变量之间的相关性等于1或-1

在这种情况下,两个变量只有两个样本,并且它们总是共线的(通常,总有一条线路通过两个不同的点).我们可以检查:

np.corrcoef(array([63,84]),array([46,42]))
[[ 1. -1.]
 [-1.  1.]]
Run Code Online (Sandbox Code Playgroud)

为了不必共线,两个变量必须至少具有n=3样本.要添加到此约束,您将具有ali_m指出的限制,即样本数n应大于或等于变量数p.把两者放在一起,

n>=max(3,p)
Run Code Online (Sandbox Code Playgroud)

在这种情况下p=2,n>=3是正确的约束.