spherical_kde
0.1.2
Esses pacotes permitem que você faça a estimativa de densidade rudimentar do kernel em uma esfera. Sugestões para melhorias/extensões são bem -vindas.
O princípio fundamental é substituir a função tradicional gaussiana usada na estimativa de densidade do kernel pela distribuição de von Mises-Fisher.
A estimativa de largura de banda ainda é áspera e pronta.
importar numpyfrom spherical_kde importar Sphericalkdeimport matplotlib.pyPlot como Pltimport Cartopy.crsfrom matplotlib.gridspec importar gridSpec, gridSpecfromsubplotspec# Escolha uma semente para plotnumpia determinista.random.sed (semente 0) (10, 10)) gs_vert = gridspec (3, 1) gs_lower = gridspecfromsubplotspec (1, 2, subplot_spec = gs_vert [1]) fig.add_subplot (gs_vert [0], projeção = cartopy.cROLS.mollweide ()) fig. add_subplot (gs_lower [0], projeção = cartopy.crs.ortographic ()) fig.add_subplot (gs_lower [1], projeção = cartopy.crs.tográfico (-10, 45)) fig.add_subplot (gs_vert [2], projeção, projeção = cartopy.crs.plateCarree ())# Escolha parâmetros para amostrasnsamples = 100pi = numpy.pi# geram algumas amostras centradas em (1,1) +/- 0.3 radianstheta_samples = Numpy.random.normal (loc = 1, escala = 0.3 , size = nsamples) phi_samples = numpy.random.normal (loc = 1, escala = 0,3, size = nsamples) phi_samples = numpy.mod (phi_samps, pi*2) kde_green = sphericalkde (somplos), theta_s) em (-1,1) +/- 0.4 radianstheta_samples = numpy.random.normal (loc = 1, escala = 0,4, size = nsamples) phi_samples = numpy.random.normal (loc = -1, escala = 0,4, tamanho = nsamples) phi_samples = numpy.mod (phi_samples, pi*2) kde_red = sphericalkde (phi_samples, theta_samples)# gera uma disseminação de amostras ao longo da latitude 2, altura 0.1THETA_SAMPOS = Numpy.Random.Normal (Locringa 2, altura 0.1THETA_SAMPOS = NUMPY.Random.Normal (Locrination 2, altura. size = nsamples) phi_samples = numpy.random.uniform (baixo = -pi/2, alto = pi/2, size = nsamples) phi_samples = numpy.mod (phi_samples, pi*2) kde_amblue = spherCekde (phi_sample, Than*2) kde_amblue = spperComkde (phi_sampos = 0.1) para ax em fig.axes: 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, AX, 'r') kde_blue.plot (ax, 'b')# salvar em plotfig.tight_layout () fig.savefig ('plot.png')