web-dev-qa-db-ja.com

24時間の降水量値のリストを1時間ごとの合計に変換する

時間ごとの降水量のリストがあり、それぞれが過去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  [..........................=]

助けてくれてありがとう。

11
Mike Griffith

データセットが常に連続した24時間のウィンドウで構成されると想定します(つまり、最初のデータポイントは1時間のウィンドウではありません)...

これは少なくとも一般的なケースでは解決可能な問題ではありませんです。これは、少なくとも2つの雨パターンが1つのデータセットにマッピングされる反例が存在するためです。

  • ケース1:毎日24時12時30分に永遠に雨が降る。
  • ケース2:毎時30分に1インチは永遠に雨が降ります。

どちらの場合も、すべてのNに対してP(N) = 24"を使用します。

この1つのデータセットから導出できるシナリオは1つではないため、問題は一般的な意味では解決できません。


余談ですが、問題が常に解決できないことは必ずしも真実ではないことを示すこともできます。最も単純に言えば、すべてのNに対してP(N) = 0"の場合、それを説明できる雨パターンは1つしかありません:毎時0インチの雨。


したがって、データセットのどの特性が問題を解決可能にするかを特定することは、より興味深い問題です。当然のことながら、P(N) = 0"のようなNが少なくとも1つあるデータセットがある場合は、解決策があります。

特定のデータセットで問題を解決できるようにする他のプロパティがあっても、私は驚かないでしょう。それらを見つけることは楽しい挑戦です。同時に、存在できないことを証明することも同様に楽しいものです。

8
Steven

降水期間が0になるまでデータを反復処理し、SnOrusが説明するように、そのポイントから前方に計算する必要があります。データポイントが0でない場合、最も早いエントリを開始時間の1時間後に定義し、それより前のポイントを定義しない限り、これは解決できないと思います。

0の読み取り値から時間を遡って計算し、同じことを逆に実行することもできます(ただし、少なくとも24個の0が連続して表示されます)。

5
Ryathal

P(n)-P(n-1)境界が> = 0

ここでP()は、nの24時間前に記録された降水量です。

... P(n)の1時間前の雨量が表示されます。

0
Steven Evers

これは完全な答えではありません、私は仕事をしていて、すでにかなりの時間を費やしています...私の直感が正しいかどうかを確認するには、さらにデータが必要です。

P(x)時間xの24時間測定を呼び出します。

次の重複シナリオを検討してください。

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

したがって、H25を計算する必要があります。ソリューションは、P(X)、P(X-1)、およびP(X-24)から作成されたシステムのどこかにあると思います。

0
Edward Strange

2つの連続した時間n(現在)とn-1(現在の前の時間)の場合、24時間ごとの降水量(P)で構成される24時間の降水量合計(T)があります。

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)

(用語P(n-1)...P(n-23)はT(n)とT(n-1)の両方で複製されます) 、それらを減算すると0になります。)並べ替えると、次のようになります。

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

ここで、P(n)が何であるかを知らない限り、P(n-24)が何であるかを理解することはできません。 P(n-24)を計算するためのデータですが、これを得るにはP(n-25)などが無限に続きます。必要なのは、任意の降水量の値です。 24時間よりも前の1時間。それがあれば、それ以降のすべての時間の毎時降水量を計算できます。

0
Caleb