【问题标题】:How to integrate kernel density estimation如何集成核密度估计
【发布时间】:2020-04-23 05:59:48
【问题描述】:

我有数据

from scipy.stats.kde import gaussian_kde
import numpy as np
from scipy import integrate

data1 = np.linspace(0,1,50)
data2 = np.linspace(0.1,0.9,50)
data3 = np.linspace(0,0.7,50)
data4 = np.linspace(0.1,1,50)

我需要在所有变量上集成密度乘法

kde1 = gaussian_kde(data1)
kde2 = gaussian_kde(data2)
kde3 = gaussian_kde(data3)
kde4 = gaussian_kde(data4)


print(integrate.nquad(lambda x1,x2,x3,x4: kde1(x1)*kde2(x2)*kde3(x3)*kde4(x4),
                            [[-1,1],[-1,1],[-1,1],[-1,1]])[0])

我认为这是真正的解决方案,但它的工作速度非常慢(超过 10 分钟)。有没有可能让它更快?

【问题讨论】:

    标签: python integration probability-density kernel-density


    【解决方案1】:

    问题可以用蒙特卡洛积分法解决

    例如

    from skmonaco import mcquad
    mcquad(lambda x_y: x_y[0]*x_y[1], # integrand
         xl=[0.,0.],xu=[1.,1.], # lower and upper limits of integration
         npoints=100000 # number of points
         )
    

    结果: (0.24959359250821114, 0.0006965923631156234)

    【讨论】:

      猜你喜欢
      • 2013-07-23
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2018-10-06
      • 2020-04-18
      • 2012-01-06
      • 2011-08-07
      • 2013-04-21
      相关资源
      最近更新 更多