Konvertieren Sie die Liste der 24-Stunden-Niederschlagswerte in Stundensummen

11

Angenommen, ich habe eine Liste der Niederschlagswerte pro Stunde, die jeweils zeigt, wie viel Regen in den letzten 24 Stunden passiert ist, geordnet nach Datum. Beispielsweise:

{
    '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
}

Gibt es eine Strategie / einen Algorithmus, um zu bestimmen, wie viel Regen in jeder Stunde gefallen ist? Ich kann meinen Kopf nicht darum wickeln. Ich weiß, dass es nicht so einfach ist, nur die Unterschiede zusammenzufassen.

Visualisierung des Datensatzes

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

Vielen Dank für jede Hilfe.

Mike Griffith
quelle
Bedeutet 0,6 "Regen von 5/23 11:00 - 5/24 10:59 , dass in dieser Zeitspanne 0,6" Regen gefallen ist oder durchschnittlich 0,6 "Regen in diesem Zeitraum?
System Down
Das Vorherige. Es ist die Summe des Regens pro Stunde für die letzten 24 Stunden. Ich möchte herausfinden, wie ich diese letzte Stunde "abbrechen" kann.
Mike Griffith
1
Das ist überraschend schwer. Jeder Wert, den Sie aufzeichnen, besteht aus 24 unbekannten Zahlen, die summiert werden. Sie würden 24 Gleichungen benötigen, um das zu lösen, das sind 24 Gleichungen, die genau dieselben Unbekannten enthalten, aber weil Sie ein Schiebefenster haben, ist dies nicht der Fall. Ich kann mir nicht vorstellen, dass dies "unlösbar" ist, aber es sieht für mich sicher so aus. Eine andere Art, darüber nachzudenken: Sie erhalten für jedes P(N-x)Hinzufügen ein Unbekanntes , sodass sich am Ende die Anzahl der Gleichungen und Unbekannten wieder ausgleicht.
Sebastiangeiger
3
Ich frage mich, ob dies eine bessere Frage wäre für: cstheory.stackexchange.com
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner oder math.stackexchange.com ?
CaffGeek

Antworten:

8

Angenommen, der Datensatz besteht immer aus aufeinanderfolgenden 24-Stunden-Fenstern (dh der erste Datenpunkt ist kein 1-Stunden-Fenster) ...

Dies ist zumindest im allgemeinen Fall kein lösbares Problem, da es ein Gegenbeispiel gibt, bei dem mindestens zwei Regenmuster einem Datensatz zugeordnet sind.

  • Fall 1: Es regnet 24 "jeden Tag um 12:30 Uhr für immer.
  • Fall 2: Es regnet 1 "um 30 Minuten nach jeder Stunde für immer.

In beiden Fällen sind Sie P(N) = 24"für alle N.

Da es kein einziges Szenario gibt, das aus diesem einen Datensatz abgeleitet werden kann, ist das Problem im allgemeinen Sinne nicht lösbar.


Nebenbei können wir auch zeigen, dass es nicht unbedingt stimmt, dass das Problem immer unlösbar ist. Am einfachsten, wenn P(N) = 0"überhaupt N, gibt es nur ein mögliches Regenmuster, das dafür verantwortlich ist: null Zoll Regen pro Stunde.


Es ist daher das interessantere Problem zu identifizieren, welche Eigenschaften des Datensatzes das Problem lösbar machen. Trivialerweise haben Sie eine Lösung , wenn Sie einen Datensatz mit mindestens einem Nsolchen P(N) = 0"haben.

Es würde mich nicht wundern, wenn es andere Eigenschaften gäbe, die das Problem für einen bestimmten Datensatz lösbar machen würden. Diese zu finden sollte eine lustige Herausforderung sein. Gleichzeitig ist es ebenso unterhaltsam zu beweisen, dass es keine geben kann.

Steven
quelle
5

Sie müssen die Daten durchlaufen, bis Sie eine Niederschlagsperiode von 0 gefunden haben. Anschließend berechnen Sie ab diesem Punkt vorwärts, wie von SnOrus beschrieben. Wenn kein Datenpunkt 0 ist, kann dies meines Erachtens nur gelöst werden, wenn Sie den frühesten Eintrag als 1 Stunde nach Beginn der Zeit definieren, sodass frühere Punkte undefiniert sind.

Es wäre auch möglich, aus einem 0-Messwert zeitlich rückwärts zu berechnen und das Gleiche in umgekehrter Reihenfolge zu tun (obwohl Sie mindestens 24 0s hintereinander erhalten.

Ryathal
quelle
Die interessante Einschränkung für die Daten, die dies ermöglicht, besteht darin, dass der Niederschlag niemals negativ sein kann. Bei einem Wert von Null wissen Sie also, dass die 24 vorherigen Stunden Null sein mussten.
Scott Whitlock
0

P (n) - P (n-1) Begrenzt auf> = 0

Wobei P () die Niederschlagsmenge ist, die für die 24 Stunden vor n aufgezeichnet wurde.

... sollte Ihnen die Regenmenge in der Stunde vor geben P(n).

Steven Evers
quelle
Das würde -.1 Zoll für 12:00 berechnen. Klingt unwahrscheinlich. Wenn 0,2 Zoll das 24-Stunden-Maß am 23. um 11:00 Uhr war, sollte die richtige Antwort 0,1 sein
Edward Strange
Wenn N "5/24 12:00 pm" ist, enthält P (N) ein Fenster von 5/23 um 12:00 Uhr bis 5/24 um 11:59 Uhr. Dann enthält P (N-1) ein Fenster von 5/23 um 11:00 Uhr bis 5/24 um 10:59 Uhr. Ich möchte wissen, was von 11:00 bis 11:59 Uhr im Fenster passiert ist, aber wenn ich nur die beiden subtrahiere, wird am Vortag auch ein zusätzliches "Fenster" eingeführt. Siehe aktualisierte Beschreibung für die visuelle Darstellung.
Mike Griffith
@ MikeGriffith: Siehe meine Bearbeitung. Ich glaube, ich hatte Recht, aber Sie müssen das Ergebnis an> = 0 binden (<= 0 würde anzeigen, dass es nicht geregnet hat). Es sei denn, ich verstehe das Problem falsch.
Steven Evers
@ SnOrfus: Sie haben zu diesem Zeitpunkt noch zwei unbekannte Werte.
Daenyth
0

Dies ist keine vollständige Antwort, ich bin auf der Arbeit und habe bereits eine Menge Zeit damit verbracht ... Außerdem würde ich mehr Daten benötigen, um zu sehen, ob meine Vermutung richtig ist.

Nennen wir P (x) das 24-Stunden-Maß zum Zeitpunkt x.

Betrachten Sie das folgende Überlappungsszenario:

|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.

Sie müssen also H25 berechnen. Ich glaube, dass die Lösung irgendwo in einem System ruhen wird, das aus P (X), P (X-1) und P (X-24) erstellt wurde.

Edward Strange
quelle
0

Für zwei aufeinanderfolgende Stunden n (jetzt) ​​und n-1 (die Stunde zuvor) haben Sie die 24-Stunden-Niederschlagssumme (T), die sich aus 24-Stunden-Niederschlagszahlen (P) zusammensetzt:

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)

So:

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

(Terme P (n-1) ... P (n-23) werden sowohl in T (n) als auch in T (n-1) dupliziert. Wenn Sie sie also subtrahieren, erhalten Sie 0.) Wenn Sie neu anordnen, erhalten Sie:

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

Jetzt können Sie nicht herausfinden, was P (n) ist, es sei denn, Sie wissen, was P (n-24) ist. Sie können in den Daten weiter zurückgehen, um P (n-24) zu berechnen, aber um dies zu erhalten, benötigen Sie P (n-25) und so weiter bis ins Unendliche. Was Sie also brauchen, ist der Niederschlagswert für jede einzelne Stunde, die länger als 24 Stunden zurückliegt. Wenn Sie das haben, können Sie den stündlichen Niederschlag für alle folgenden Stunden berechnen.

Caleb
quelle
1
+1 "Was Sie also brauchen, ist der Niederschlagswert für jede einzelne Stunde, die länger als 24 Stunden zurückliegt." Oder ein Wert von 0 "für einen Zeitraum von 24 Stunden.
CaffGeek
@Chad Das ist sicherlich ein Weg, um es zu bekommen.
Caleb