我可以在 python 中获得核密度估计的一阶导数吗?

Can I get first derivative for kernel density estimation in python?

我有一个二维数组的数据,我使用 gaussian_kde 来估计数据分布。现在,我想获得结果密度估计器的一阶导数以获得零交叉点。是否有可能从估计的密度中得到它?如果是这样,Python 中是否有任何内置函数可以提供帮助?

按照 gaussian_kde 文档中的示例,一旦有了 Z,或者更一般地说,估计了 X 轴上的密度,就可以使用标准计算其导数numpy 函数:

diff = np.gradient(Z)

请注意,np.gradient 计算中心差异。如果你想要前向差异,你可以这样做:

diff = np.r_[Z[1:] - Z[:-1], 0]

要找到过零点,您可以执行以下操作:

sdiff = np.sign(diff)
zc = np.where(sdiff[:-1] != sdiff[1:])

您可以将上面的二维扩展为 dy, dx = np.gradient(Z)Z 二维数组。然后在Y和X两个方向上操作。