Attualmente non è possibile utilizzare scipy.stats.gaussian_kde
per stimare la densità di una variabile casuale basata su weighted samples. Quali metodi sono disponibili per stimare le densità di variabili casuali continue basate su campioni ponderati?Stima della densità della densità del kernel gaussiana in `python`
risposta
Né sklearn.neighbors.KernelDensity
né statsmodels.nonparametric
sembrano supportare i campioni ponderati. Ho modificato scipy.stats.gaussian_kde
per consentire pesi di campionamento eterogenei e ho pensato che i risultati potrebbero essere utili per gli altri. Un esempio è mostrato sotto.
Un ipython
notebook può essere trovato qui: http://nbviewer.ipython.org/gist/tillahoffmann/f844bce2ec264c1c8cb5
modalità d'attuazione
L'aritmetica ponderata media è
Il unbiased data covariance matrix è quindi dato da
La larghezza di banda può essere scelto da scott
o silverman
regole come in scipy
. Tuttavia, il numero di campioni utilizzati per calcolare la larghezza di banda è Kish's approximation for the effective sample size.
Scopri i pacchetti PyQT-Fit e statistiche per Python. Sembrano avere una stima della densità del kernel con osservazioni ponderate.
Si noti che, a partire dalla versione 1.3.4, PyQT-Fit supporta solo la stima della densità del kernel 1D. – lapis
Hai pensato di chiedere agli sviluppatori di 'scipy' di integrare il tuo codice in' scipy' o 'statsmodels'? – cel
Sì, ma non sono ancora riuscito a implementare il ricampionamento e l'integrazione. Eseguirò una richiesta di pull una volta fatto. –
Ho lavorato su un problema simile, ma usando il mio framework invece di modificare scipy. Non avevo pensato di usare l'approssimazione di Kish. Pensi che sia il miglior stimatore di larghezza di banda? Reweights ogni punto nel set di dati con la stessa dimensione del campione effettiva. Mi chiedo se una larghezza di banda variabile potrebbe avere più senso. – Gabriel