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)