Convierta la lista de valores de precipitación de 24 horas en total por hora

11

Digamos que tengo una lista de valores de precipitación por hora, cada uno de los cuales muestra la cantidad de lluvia ocurrida en las 24 horas anteriores, ordenada por fecha. Por ejemplo:

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

¿Existe una estrategia / algoritmo para determinar cuánta lluvia cayó en cada una de las horas? Parece que no puedo entender esto. Sé que no es tan sencillo como simplemente sumar las diferencias.

Visualización de conjunto de datos

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

Muchas gracias por cualquier ayuda.

Mike Griffith
fuente
Hace 0.6" de la lluvia de 5/23 11:00 - 10:59 5/24 quiere decir que en ese lapso de tiempo de 0,6" de lluvia cayeron o un promedio de 0,6" de lluvia durante ese período?
Sistema de Down
El primero Es la suma de la lluvia por hora, durante las 24 horas anteriores. Quiero descubrir cómo "interrumpir" esa última hora.
Mike Griffith
1
Esto sorprendentemente difícil. Cada valor que registra se compone de 24 números desconocidos resumidos. Necesitarías 24 ecuaciones para resolver eso, es decir, 24 ecuaciones que tienen exactamente las mismas incógnitas pero porque tienes una ventana deslizante, ese no es el caso. No puedo imaginar que esto sea "irresoluble", pero seguro que me lo parece. Otra forma de pensarlo: está ganando uno desconocido por cada P(N-x)adición, por lo que al final la cantidad de ecuaciones e incógnitas se vuelven a salir.
sebastiangeiger
3
Me pregunto si esta sería una mejor pregunta para: cstheory.stackexchange.com
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner o math.stackexchange.com ?
CaffGeek

Respuestas:

8

Suponiendo que el conjunto de datos siempre consta de ventanas consecutivas de 24 horas (es decir, el primer punto de datos no es una ventana de 1 hora) ...

Este no es un problema solucionable, al menos en el caso general, porque existe un contraejemplo en el que al menos dos patrones de lluvia se asignan a un conjunto de datos.

  • Caso 1: Llueve 24 "a las 12:30 am todos los días para siempre.
  • Caso 2: Llueve 1 "cada 30 minutos cada hora para siempre.

En ambos casos, eres P(N) = 24"para todos N.

Como no hay un solo escenario que pueda derivarse de este conjunto de datos, el problema no se puede resolver en el sentido genérico.


Como comentario aparte, también podemos demostrar que no es necesariamente cierto que el problema siempre sea irresoluble. Lo más simple, si es que P(N) = 0"para todos N, solo hay un posible patrón de lluvia para explicarlo: cero pulgadas de lluvia por hora.


Por lo tanto, es el problema más interesante identificar qué características del conjunto de datos hacen que el problema sea solucionable. Trivialmente, si tiene un conjunto de datos con al menos uno de Nesos P(N) = 0", entonces tiene una solución.

No me sorprendería si hubiera otras propiedades que pudieran resolver el problema para un conjunto de datos dado. Encontrarlos debería ser un desafío divertido. Al mismo tiempo, probar que ninguno puede existir es igualmente entretenido.

Steven
fuente
5

necesita iterar a través de los datos hasta encontrar un período de precipitación 0 y luego calcular hacia adelante desde ese punto como describe SnOrus. Si ningún punto de datos es 0, entonces no creo que esto pueda resolverse a menos que defina que la entrada más temprana sea 1 hora después del comienzo del tiempo, por lo que los puntos anteriores no están definidos.

También sería posible calcular hacia atrás en el tiempo a partir de una lectura de 0, haciendo lo mismo a la inversa (aunque obtendrá al menos 24 0s seguidos.

Ryathal
fuente
La restricción interesante en los datos que hace esto posible es que la precipitación nunca puede ser negativa, por lo que con un valor cero, sabes que las 24 horas anteriores tuvieron que ser cero.
Scott Whitlock
0

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

Donde P () es la cantidad de precipitación registrada durante las 24 horas anteriores a n.

... debería darle la cantidad de lluvia en la hora anterior a P(n).

Steven Evers
fuente
Eso calcularía -.1 pulgadas para las 12:00. Suena poco probable Si .2 pulgadas fue la medida de 24 horas a las 11:00 del día 23, entonces la respuesta correcta debería ser .1
Edward Strange
Si N es "5/24 12:00 pm", P (N) incluye una ventana del 5/23 a las 12:00 pm al 5/24 a las 11:59 am. Luego, P (N-1) incluye una ventana desde el 5/23 a las 11:00 am hasta el 5/24 a las 10:59 am. Quiero saber qué sucedió en la ventana de 11:00 a.m. a 11:59 a.m., pero simplemente restando los dos también introduce una "ventana" adicional en el día anterior. Vea la descripción actualizada para la representación visual.
Mike Griffith
@ MikeGriffith: Mira mi edición. Creo que tenía razón, pero debe vincular el resultado a> = 0. (<= 0 indicaría que no hubo lluvia). A menos que esté malinterpretando el problema.
Steven Evers
@SnOrfus: todavía tiene dos valores desconocidos en ese punto.
Daenyth
0

Esta no es una respuesta completa, estoy en el trabajo y ya he dedicado mucho tiempo a ello ... además, necesitaría más datos para ver si mi presentimiento es correcto.

Llamemos a P (x) la medida de 24 horas en el tiempo x.

Considere el siguiente escenario de superposición:

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

Por lo tanto, necesita calcular H25. Creo que la solución va a descansar en algún lugar de un sistema creado a partir de P (X), P (X-1) y P (X-24).

Edward extraño
fuente
0

Durante dos horas consecutivas n (ahora) y n-1 (la hora anterior), tiene la suma de precipitación (T) de veinticuatro horas compuesta de números de precipitación por hora (P) de 24 horas:

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)

Entonces:

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

(Los términos P (n-1) ... P (n-23) se duplican tanto en T (n) como en T (n-1), por lo que restarlos da 0.) Al reorganizar, obtienes:

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

Ahora, no puedes descubrir qué es P (n) a menos que sepas qué es P (n-24). Puede retroceder más en los datos para calcular P (n-24), pero para obtener eso necesita P (n-25) y así sucesivamente hasta el infinito. Lo que necesita, entonces, es el valor de precipitación para cualquier hora que haya pasado más de 24 horas. Si tiene eso, puede calcular la precipitación por hora para todas las horas posteriores.

Caleb
fuente
1
+1 "Lo que necesita, entonces, es el valor de precipitación para cualquier hora que haya pasado más de 24 horas". O un valor de 0 "por un período de 24 horas.
CaffGeek
@Chad Esa es ciertamente una forma de obtenerlo.
Caleb