2014-12-23 25 views

risposta

14

sklearn.neighbors.KernelDensitystatsmodels.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.

example

Un ipython notebook può essere trovato qui: http://nbviewer.ipython.org/gist/tillahoffmann/f844bce2ec264c1c8cb5

modalità d'attuazione

L'aritmetica ponderata media è

weighted arithmetic mean

Il unbiased data covariance matrix è quindi dato da unbiased covariance matrix

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.

+2

Hai pensato di chiedere agli sviluppatori di 'scipy' di integrare il tuo codice in' scipy' o 'statsmodels'? – cel

+2

Sì, ma non sono ancora riuscito a implementare il ricampionamento e l'integrazione. Eseguirò una richiesta di pull una volta fatto. –

+0

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

0

Scopri i pacchetti PyQT-Fit e statistiche per Python. Sembrano avere una stima della densità del kernel con osservazioni ponderate.

+0

Si noti che, a partire dalla versione 1.3.4, PyQT-Fit supporta solo la stima della densità del kernel 1D. – lapis