spherical_kde
0.1.2
これらのパッケージを使用すると、球体で初歩的なカーネル密度の推定を行うことができます。改善/拡張の提案を歓迎します。
基本原則は、カーネル密度推定で使用される従来のガウス関数をフォンミーゼスフィッシャー分布に置き換えることです。
帯域幅の推定はまだ荒れていて準備ができています。
spherical_kdeのインポートsphericalkdeimportlib.pyplotとしてspherical_kde cartopy.crsfrom matplotlib.gridspecインポートgridspec、gridspecfromsubplotspec# (10、10))gs_vert = gridspec(3、1)gs_lower = gridspecfromsubplotspec(1、2、subplot_spec = gs_vert [1]) add_subplot(gs_lower [0]、projection = cartopy.crs.orthographic())fig.add_subplot(gs_lower [1]、projection = cartopy.crs.orthographic(-10、45))fig.add_subplot(gs_vert [2]、project = cartopy.crs.PlateCarree()) 、size = nsamples)phi_samples = numpy.random.normal(loc = 1、scale = 0.3、size = nsamples)phi_samples = numpy.mod(phi_samples、pi*2)kde_green = sphericalkde(phi_samples、theta_samples) on(-1,1)+/- 0.4 radianstheta_samples = numpy.random.normal(loc = 1、scale = 0.4、size = nsamples)phi_samples = numpy.random.normal(loc = -1、scale = 0.4、size = size = size = nsamples)phi_samples = numpy.mod(phi_samples、pi*2)kde_red = sphericalkde(phi_samples、theta_samples)#緯度2に沿ってサンプルの広がりを生成します。サイズ= nsamples)phi_samples = numpy.random.uniform(low = -pi/2、high = pi/2、size = nsamples)phi_samples = numpy.mod(phi_samples、pi*2)kde_blue = sphericalkde(phi_samples、theta_samples、bandwidth = 0.1)図のax。ax.set_global()ax.gridlines()ax.coastlines(linewidth = 0.1)kde_green.plot(ax、 'g')kde_green.plot_samples(ax)kde_red.plot(ax、ax、ax、 'r')kde_blue.plot(ax、 'b')#plotfig.tight_layout()fig.savefig( 'plot.png')に保存