scipy.stats.percentileofscore () sbagliato?

0

Sono un ricercatore di dati e noob di Python, ma sembra che abbia trovato un bug con scipy.stats.percentileofscore. potrebbe essere "in base al design", ma per favore portami con me.

se hai un array, otterrai un limite superiore di 100, ma mai un limite inferiore di 0. Il percentile più basso che otterrai è 100 / len, quindi se ho un array di 30 elementi il percentile più basso I ' ll get è 100/30 == > (3)

quindi ho una soluzione alternativa per consentire un risultato percentile zero. la mia soluzione è valida? c'è qualcosa che sto facendo male? per favore suggerisci.

nota anche quanto segue ho messo i numeri nell'intervallo da 0.0 a 1.0 (non mi piace usare da 0 a 100 per le percentuali)

stochState.kSlopePercentile = scipy.stats.percentileofscore([stochHist.kSlope for stochHist in stochState.history],stochState.kSlope)  / 100.0
invHistLen= 1.0/len(stochState.history)
if(stochState.kSlopePercentile < 1.0):
    stochState.kSlopePercentile -= invHistLen * (1-stochState.kSlopePercentile+invHistLen)

il codice sopra sottrae fino a 1 / len dal percentile (più il percentile è vicino a zero)

    
posta JasonS 25.03.2014 - 04:52
fonte

1 risposta

1

Penso che sia probabile per progettazione. A mio avviso, chiamare qualcosa di 0 ° percentile quando si hanno solo 30 valori è dubbio. Se qualcosa è il valore di fondo su 30, ciò non ti dà la sicurezza che sarebbe ancora il valore di fondo se avessi una popolazione molto più grande. E nella mia mente, questo è ciò per cui verrebbe usato il percentile - dire qualcosa sulla probabile distribuzione della popolazione che si sta tentando di rappresentare, non sui 30 valori stessi.

Tuttavia, non esiste un modo "corretto" standard per calcolare il percentile. Ci sono molti modi diversi e le loro differenze saranno più evidenti se usate su piccoli campioni. Wikipedia ha una buona panoramica .

Se non sei soddisfatto dell'algoritmo usato da Python, ti consiglio di trovare un pacchetto che implementa il tuo algoritmo preferito, o di implementare il tuo, piuttosto che hackerare i risultati alla fine. È probabile che questo trucco sia problematico.

    
risposta data 25.03.2014 - 09:50
fonte

Leggi altre domande sui tag