Converte l'elenco dei valori delle precipitazioni su 24 ore in totale per ora

11

Diciamo che ho un elenco di valori di precipitazione per ora, ognuno dei quali mostra quanta pioggia è accaduta nelle precedenti 24 ore, ordinate per data. Ad esempio:

{
    '2012-05-24 12:00': 0.5, // .5" of rain from 5/23 12:00 - 5/24 11:59
    '2012-05-24 11:00': 0.6, // .6" of rain from 5/23 11:00 - 5/24 10:59
    '2012-05-24 10:00': 0.6, // .6" of rain from 5/23 10:00 - 5/24 09:59
    ...
    '2012-05-23 10:00': 0
}

Esiste una strategia / un algoritmo per determinare quanta pioggia è caduta in ciascuna delle ore? Non riesco a spiegarmi questo. So che non è così semplice come la somma delle differenze.

Visualizzazione del set di dati

P(N)    [.....======================]
P(N-1)  [....======================.]
P(N-2)  [...======================..]
P(N-3)  [..======================...]
I want  [..........................=]

Molte grazie per qualsiasi aiuto.

    
posta Mike Griffith 24.05.2012 - 19:33
fonte

5 risposte

8

Supponendo che il set di dati sia sempre costituito da finestre consecutive di 24 ore (vale a dire, il primo punto dati non è una finestra di 1 ora) ...

Questo è non un problema risolvibile almeno nel caso generale perché esiste un controesempio in cui almeno due modelli di pioggia si mappano su un set di dati.

  • Caso 1: piove 24 "alle 12:30 ogni giorno per sempre.
  • Caso 2: piove 1 "ogni 30 minuti ogni ora per sempre.

In entrambi i casi, P(N) = 24" per tutto N .

Poiché non esiste uno scenario che può essere derivato da questo unico set di dati, il problema non è risolvibile in senso generico.

Per inciso, possiamo anche dimostrare che non è necessariamente vero che il problema è sempre irrisolvibile. Molto semplicemente, se P(N) = 0" per tutto N , c'è solo un possibile pattern di pioggia per renderlo conto: zero pollici di pioggia ad ogni ora.

È quindi il problema più interessante identificare quali caratteristiche del set di dati rendono il problema risolvibile. Banalmente, se hai un set di dati con almeno un N tale che P(N) = 0" , allora hai una soluzione.

Non sarei sorpreso se esistessero altre proprietà che renderebbero il problema risolvibile per un dato set di dati. Trovare quelli dovrebbe essere una sfida divertente. Allo stesso tempo, provare che nessuno può esistere è ugualmente divertente.

    
risposta data 24.05.2012 - 20:23
fonte
5

è necessario scorrere i dati fino a trovare un periodo di precipitazione 0, quindi calcolare in avanti da quel punto come descrive SnOrus. Se nessun punto dati è 0, non penso che questo possa essere risolto a meno che non si definisca la prima voce come 1 ora dopo l'inizio del tempo, quindi i punti precedenti non sono definiti.

sarebbe anche possibile calcolare indietro nel tempo da una lettura di 0, facendo la stessa cosa al contrario (anche se otterrai almeno 24 0 di fila.

    
risposta data 24.05.2012 - 20:23
fonte
0

P(n) - P(n-1) Bounded to >= 0

Where P() is the amount of precipitation recorded for the 24 hours prior to n.

... dovrebbe darti la quantità di pioggia nell'ora precedente a P(n) .

    
risposta data 24.05.2012 - 19:40
fonte
0

Questa non è una risposta completa, sono al lavoro e ci ho già dedicato un sacco di tempo ... inoltre avrei bisogno di più dati per vedere se la mia impressione è corretta.

Chiamiamo P (x) la misura di 24 ore al tempo x.

Considder il seguente scenario di sovrapposizione:

|H1|H2|H3.............|H23|H24|H25|H26 ................ |H46|H47|H48|
|-----------------P(X)--------|-----------------P(X-24)-------------|
   |----------------------P(X-1)--|

P (X) - P (X-1) + H25 = H1.

Quindi è necessario calcolare H25. Credo che la soluzione si fermerà da qualche parte in un sistema creato da P (X), P (X-1) e P (X-24).

    
risposta data 24.05.2012 - 20:25
fonte
0

Per due ore consecutive n (ora) e n-1 (l'ora prima ora), hai la somma delle precipitazioni su ventiquattro ore (T) composta da 24 numeri di precipitazioni orarie (P):

T(n) = P(n) + P(n-1) + P(n-2) + ... + P(n-22) + P(n-23)
T(n-1) = P(n-1) + P(n-2) + P(n-3) +... + P(n-23) + P(n-24)

T(n) - T(n-1) = P(n) - P(n-24)

(I termini P (n-1) ... P (n-23) sono duplicati in T (n) e T (n-1), quindi sottraendoli dà 0.) Riorganizzando, ottieni:

P(n) = T(n) - T(n-1) + P(n-24)

Ora, non puoi capire cosa sia P (n) a meno che tu non sappia cosa sia P (n-24). Puoi tornare indietro nei dati per calcolare P (n-24), ma per ottenere che hai bisogno di P (n-25) e così via all'infinito. Quello che ti serve, quindi, è il valore di precipitazione per ogni singola ora che è più lungo di 24 ore. Se lo hai, puoi calcolare le precipitazioni orarie per tutte le ore successive.

    
risposta data 24.05.2012 - 20:43
fonte

Leggi altre domande sui tag