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

时间:2015-07-08 11:55:16

标签: python python-2.7 scipy

我有一个2D数组数据,我用gaussian_kde来估算数据分布。现在,我希望获得所得密度估计器的一阶导数以获得零交叉。是否有可能从估计的密度中获得它?如果是这样,Python中是否有任何可以帮助的内置函数?

1 个答案:

答案 0 :(得分:4)

按照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)扩展上述2D作为Z 2D阵列。然后在Y和X方向上操作。