Допустим, у меня есть список значений осадков по часам, каждый из которых показывает, сколько осадков выпало за предыдущие 24 часа, упорядоченные по дате. Например:
{
'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
}
Есть ли стратегия / алгоритм, чтобы определить, сколько дождя выпало в каждый из часов? Я не могу обернуться вокруг этого. Я знаю, что это не так просто, как просто суммировать различия.
Визуализация набора данных
P(N) [.....======================]
P(N-1) [....======================.]
P(N-2) [...======================..]
P(N-3) [..======================...]
I want [..........................=]
Большое спасибо за любую помощь.
algorithms
functional-programming
functions
Майк Гриффит
источник
источник
P(N-x)
добавляемое вами, так что в итоге число уравнений и неизвестных снова выровняется.Ответы:
Предполагая, что набор данных всегда состоит из последовательных 24-часовых окон (т. Е. Первая точка данных не является 1-часовым окном) ...
Это не решаемая проблема, по крайней мере, в общем случае, потому что существует контрпример, где, по крайней мере, две модели дождя отображаются в один набор данных.
В обоих случаях ваш
P(N) = 24"
для всехN
.Поскольку нет единого сценария, который можно было бы извлечь из этого единого набора данных, проблема не может быть решена в общем смысле.
Кроме того, мы также можем продемонстрировать, что не всегда верно, что проблема всегда неразрешима. Проще всего, если
P(N) = 0"
для всехN
, есть только один возможный характер дождя, чтобы объяснить это: ноль дюймов дождя в каждый час.Поэтому более интересной проблемой является определение того, какие характеристики набора данных делают проблему разрешимой. Обычно, если у вас есть набор данных хотя бы с одним
N
такимP(N) = 0"
, то у вас есть решение.Я не был бы удивлен, если бы были другие свойства, которые сделали бы проблему разрешимой для данного набора данных. Найти их должно быть весело. В то же время, доказательство того, что никто не может существовать, одинаково интересно.
источник
вам нужно перебирать данные до тех пор, пока вы не найдете 0 осадков, а затем рассчитываете вперед с этой точки, как описывает SnOrus. Если ни одна точка данных не равна 0, то я не думаю, что это можно решить, если вы не определите самую раннюю запись как 1 час после начала времени, поэтому точки раньше, чем это, не определены.
Также было бы возможно рассчитать в обратном направлении по времени от чтения 0, делая то же самое в обратном порядке (хотя вы получите по крайней мере 24 0 с подряд.
источник
... должен дать вам количество дождя за час до
P(n)
.источник
Это не полный ответ, я на работе и уже потратил на это кучу времени ... кроме того, мне нужно больше данных, чтобы понять, верна ли моя догадка.
Давайте назовем P (x) 24-часовой мерой в момент x.
Рассмотрите следующий сценарий перекрытия:
P (X) - P (X-1) + H25 = H1.
Таким образом, вам нужно рассчитать H25. Я считаю, что решение будет лежать где-то в системе, созданной из P (X), P (X-1) и P (X-24).
источник
В течение двух последовательных часов n (сейчас) и n-1 (час до настоящего момента) у вас есть сумма осадков за 24 часа (T), состоящая из 24-часовых чисел осадков (P):
Так:
(Термины P (n-1) ... P (n-23) дублируются как в T (n), так и в T (n-1), поэтому их вычитание дает 0.) Переупорядочив, вы получите:
Теперь вы не можете понять, что такое P (n), если не знаете, что такое P (n-24). Вы можете пойти дальше в данных, чтобы вычислить P (n-24), но чтобы получить это, вам нужно P (n-25) и так далее до бесконечности. То, что вам нужно, это величина осадков за любой час, который дольше, чем 24 часа. Если у вас есть это, вы можете рассчитать почасовые осадки для всех последующих часов.
источник