Convertire l'elenco dei valori di precipitazione 24 ore in totale per ora


11

Diciamo che ho un elenco di valori di precipitazione per ora, ognuno dei quali mostra la quantità di pioggia avvenuta nelle precedenti 24 ore, ordinata per data. Per 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 / algoritmo per determinare quanta pioggia è caduta in ciascuna delle ore? Non riesco a avvolgere la mia testa attorno a questo. So che non è così semplice come riassumere le differenze.

Visualizzazione del set di dati

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

Mille grazie per l'aiuto.


Fa 0,6" di pioggia dal 5/23 11:00 - 5/24 10:59 media che in quel lasso di tempo 0,6" di pioggia cadde o un media di 0,6" di pioggia durante quel periodo?
Sistema di Down

L'ex. È la somma della pioggia all'ora, per le precedenti 24 ore. Voglio capire come "rompere" quell'ultima ora.
Mike Griffith,

1
Questo sorprendentemente difficile. Ogni valore che registri è composto da 24 numeri sconosciuti riassunti. Avresti bisogno di 24 equazioni per risolverlo, cioè 24 equazioni che hanno le stesse incognite esatte in esse ma perché hai una finestra scorrevole che non è il caso. Non riesco a immaginare che questo sia "irrisolvibile", ma sicuramente mi sembra simile. Un altro modo di pensarci: stai guadagnando uno sconosciuto per ogni P(N-x)cosa che aggiungi, quindi alla fine il numero di equazioni e incognite si spegne di nuovo.
sebastiangeiger

3
Mi chiedo se questa sarebbe una domanda migliore per: cstheory.stackexchange.com
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner o math.stackexchange.com ?
CaffGeek,

Risposte:


8

Supponendo che il set di dati sia sempre costituito da finestre consecutive di 24 ore (ovvero, 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 sono associati a un set di dati.

  • Caso 1: Piove 24 "alle 12:30 tutti i giorni per sempre.
  • Caso 2: Piove 1 "ogni 30 minuti ogni ora per sempre.

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

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


A parte questo, possiamo anche dimostrare che non è necessariamente vero che il problema è sempre irrisolvibile. Più semplicemente, se non P(N) = 0"per tutti N, c'è solo un possibile modello di pioggia per spiegarlo: zero pollici di pioggia ogni ora.


È quindi il problema più interessante identificare quali caratteristiche del set di dati rendono il problema risolvibile. In sostanza, se si dispone di un set di dati con almeno uno di Nquesti P(N) = 0", allora si ha una soluzione.

Non sarei sorpreso se ci fossero altre proprietà che renderebbero il problema risolvibile per un determinato set di dati. Trovare quelli dovrebbe essere una sfida divertente. Allo stesso tempo, dimostrare che nessuno può esistere è altrettanto divertente.


5

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

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


Il vincolo interessante sui dati che lo rende possibile è che le precipitazioni non possono mai essere negative, quindi con un valore zero, sai che le 24 ore precedenti dovevano essere zero.
Scott Whitlock,

0

P (n) - P (n-1) Limitato a> = 0

Dove P () è la quantità di precipitazione registrata per le 24 ore precedenti a n.

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


Quello calcolerebbe -.1 pollici per 12:00. Sembra improbabile. Se .2 pollici era la misura delle 24 ore alle 23:00 del 23, la risposta corretta dovrebbe essere .1
Edward Strange

Se N è "24/05 12:00", P (N) include una finestra dalle 23/05 alle 12:00 alle 24/24 alle 11:59. Quindi P (N-1) include una finestra dal 5/23 alle 11:00 fino al 5/24 alle 10:59. Voglio sapere cosa è successo nella finestra dalle 11:00 alle 11:59, ma sottrarre i due introduce anche una "finestra" in più nel giorno precedente. Vedi descrizione aggiornata per la rappresentazione visiva.
Mike Griffith,

@MikeGriffith: guarda la mia modifica. Credo di aver ragione, ma è necessario limitare il risultato a> = 0. (<= 0 indicherebbe che non c'era pioggia). A meno che non fraintenda il problema.
Steven Evers,

@SnOrfus: a quel punto hai ancora due valori sconosciuti.
Daenyth,

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 il mio sospetto è corretto.

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

Considera 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 riposi da qualche parte in un sistema creato da P (X), P (X-1) e P (X-24).


0

Per due ore consecutive n (ora) e n-1 (ora precedente), hai la somma delle precipitazioni di ventiquattro ore (T) composta da numeri di precipitazione ogni 24 ore (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)

Così:

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 si ottiene 0.) Riordinando, si ottiene:

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

Ora, non puoi capire cosa sia P (n) se non sai cos'è P (n-24). Puoi tornare indietro nei dati per calcolare P (n-24), ma per ottenere ciò hai bisogno di P (n-25) e così via all'infinito. Ciò di cui hai bisogno, quindi, è il valore delle precipitazioni per ogni singola ora più lunga di 24 ore. In tal caso, è possibile calcolare le precipitazioni orarie per tutte le ore successive.


1
+1 "Ciò di cui hai bisogno, quindi, è il valore delle precipitazioni per ogni singola ora più lunga di 24 ore." O un valore di 0 "per un periodo di 24 ore.
CaffGeek

@Chad Questo è certamente un modo per ottenerlo.
Caleb,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.