ho:30.000 punti dati, trovare più grande cambiamento di tempo oltre 2 settimane
- 30,000 data points
- each data point is a measurement of type float
- each measurement is associated with a date
- each date has only one measurement
- no dates are without measurements
- the data comes in the form of a text file: 30,000 lines in this form:
- YYYY-MM-DD I,F (e.g. 1977-02-08 20.74)
- measurement appearing in the source file are already sorted by date
ho bisogno:
- a time-interval T with boundaries (s,e) /* start, end */
- (s - e = 14 days) the time-interval *must* be 2 weeks
- define min as the lowest value in the interval T
- define max as the greatest value in the interval T
- the chosen T needs to have the greatest distance btwn max and min of all possible Ts
- break ties among intervals T by choosing the most recent (with the greatest s value)
- the chosen T must consider all jumps in the 14 days, not just the values @ s and e
- if the overall "variance" in the interval is great but the jump
|max-min| is not the greatest in absolute value, T is not the right choice,
even if it's an "exciting" interval
chiedo:
- which algorithm to employ, considering algorithms are not my specialty
- which data structure to use to keep track of the subtotals
Nota:
- an answer in pseudo code would be preferred, "prose" is fine if pressured for time
- an answer in Python would be... splendid :)
Se lo si desidera, è possibile generare dati "fittizi" ed eseguire l'algoritmo proposto come test oppure condividere i dati effettivi.
Non mi interessa molto le prestazioni qui oltre a voler sapere il modo più veloce per farlo, in modo da imparare come applicare la soluzione giusta e l'algoritmo corretto.
Penso di poter "dimostrare" la correttezza anche con il più semplice algoritmo iterativo perché il dataset è piccolo dato ai computer di oggi.
Finora, sto "attraversando e trasportando 14 vettori di 14 misure", se poteste insegnarmi a farlo in modo incrementale con sub-somme, sarebbe molto apprezzato.
È una finestra scorrevole di due settimane o è un fisso di due settimane? – sarnold
Questo è O (n) se si osservano semplicemente 14 valori ogni volta.Il ciclo interno esegue 420.000 volte. A meno che non ci sia qualcosa in più qui non è un grosso problema. –
Può mai esserci più di un campione al giorno, o è stato fissato che ogni timestamp sarà da un giorno diverso? – steveha