spherical_kde
0.1.2
Ces packages vous permettent de faire une estimation de la densité du noyau rudimentaire sur une sphère. Les suggestions d'améliorations / extensions sont les bienvenues.
Le principe fondamental est de remplacer la fonction gaussienne traditionnelle utilisée dans l'estimation de la densité du noyau par la distribution Von Mises-Fisher.
L'estimation de la bande passante est toujours rugueuse.
Importer NumpyFrom SPHERICAL_KDE Import SphericalkDeImport Matplotlib.pilplot as Pltimport cartopy.crsfrom Matplotlib.gridSpec pour déterministe GridSpecy.random.seed (semence = 0) # a mis en place une veilleuse (10, 10)) gs_vert = gridSpec (3, 1) gs_lower = gridSpecFromsubplotspec (1, 2, subplot_spec = gs_vert [1]) Fig.add_subplot (gs_vert [0], projection = cartopy.crs.mollweide ()) Fig. add_subplot (gs_lower [0], projection = cartopy.crs.orthography ()) Fig.add_subplot (gs_lower [1], projection = cartopy.crs.orthography (-10, 45)) Fig.Add_subplot (gs_vert [2], projection = cartopy.crs.platecarree ()) # Choisissez des paramètres pour les échantillons Samples = 100pi = Numpy.pi # Générez certains échantillons centrés sur (1,1) +/- 0,3 radianstheta_samples = numpy.random.normal (loc = 1, échelle = 0,3 , taille = ns échantillons) phi_samples = numpy.random.normal (loc = 1, échelle = 0,3, taille = ns échantillons) phi_sample = numpy.mod (phi_s échantillons, pi * 2) kde_green = sphérique sur (-1,1) +/- 0,4 radianstheta_samples = numpy.random.normal (loc = 1, échelle = 0,4, taille = nsample) phi_sample = numpy.random.ormal (loc = -1, échelle = 0,4, taille = ns échantillons) phi_samples = numpy.mod (phi_sample, pi * 2) kde_red = sphériquekde (phi_sample, theta_samples) # générer une propagation des échantillons le long de la latitude 2, hauteur 0.1theta_sample = numpy.random.normal (loc = 2, échelle = 0.1, SIZE = NSMANDES) PHI_SMANDES = Numpy.random.Uniformes (Low = -Pi / 2, High = Pi / 2, SIZE = NSEMPHES) PHI_SAMPLES = Numpy.Mod (PHI_SAMPLES, PI * 2) KDE_BLUE = = 0,1) pour AX dans Fig.Axes: ax.set_global () ax.gridlines () ax.coastlines (linewidth = 0.1) kde_green.plot (ax, 'g') kde_green.plot_sample (ax) kde_red.plot (ax, 'r') kde_blue.plot (ax, 'b') # Enregistrer sur PlotFig.Tight_Layout () Fig.SaveFig ('Plot.png')