Trova la pendenza del 50% entro 30 minuti in un numero di ore in costante aumento

3

Ho una lista di valori in costante aumento come 19:57 (12.259), 19:58 (13.101) memorizzati in mongodb. Ora voglio scoprire se il valore è cresciuto del 50% entro 30 minuti nelle ultime 3 ore.

Il mio primo approccio ingenuo è stato quello di prendere il valore da 3 ore fa (a) e quindi cercare il punto nel tempo in cui il valore è maggiore o uguale (a * 1.5). Poi - in un controllo post - cerco se questo aumento si verifica entro 30 minuti.

Funziona se la condizione post è soddisfatta ma fallisce se così non fosse e ci sarebbe un altro candidato migliore. In questo caso, dovrei continuare a cercare, ma ci deve essere un modo migliore.

Fondamentalmente, penso, sto cercando un modo per trovare una certa pendenza su una curva.

    
posta DanielKhan 12.09.2017 - 23:12
fonte

2 risposte

3

Non capisco davvero perché la tua soluzione non funzioni, logicamente dovrebbe. Tuttavia, un'altra opzione è di tornare indietro di 3 ore e confrontare sistematicamente il punto originale ( a ) al punto 30 minuti dopo ( b ) per vedere se b >= a * 1.5 , iniziando con i punti 17:00 (o qualsiasi altra cosa 3 ore fa è) e 17:30. Quindi confronta 17:01 e 17:31 e così via.

A meno che forse i tuoi numeri non abbiano una possibilità di diminuire (sembra che non lo siano).

    
risposta data 18.09.2017 - 20:23
fonte
1

Quindi, in base al fatto che non può mai diminuire, sappiamo che se un valore non aumenta del 50% in un'ora, non aumenta del 50% in un intervallo di 30 minuti in quell'ora. Allo stesso modo per 2 ore o 3 ore.

Probabilmente lo farei in qualcosa del genere, almeno per iniziare: Dividi gli intervalli in 6 segmenti da 30 minuti nelle 3 ore. Confronta il valore all'inizio del 3 ° con l'inizio del 1 °. Quindi il 4 ° con il 2 ° ... 6 ° con il 4 °. Se uno qualsiasi di questi segmenti di ora mostra una crescita del 50% o superiore, è possibile controllare ogni intervallo di 30 minuti in quell'ora. Ce ne sono 30 se si presuppone una risoluzione di 1 minuto. Raccogli tutti quelli che contengono la crescita richiesta e rimuovi i duplicati.

Il problema è un po 'mal definito, comunque. Diciamo che c'è un periodo di 25 minuti in cui la crescita è stata del 50%. Esistono 10 diversi periodi di 30 minuti contenenti gli stessi 25 minuti, ma tutti rappresentano lo stesso periodo di crescita.

    
risposta data 18.09.2017 - 23:12
fonte

Leggi altre domande sui tag