Konversikan daftar nilai curah hujan 24 jam menjadi total per jam

11

Katakanlah saya memiliki daftar nilai curah hujan per jam, masing-masing menunjukkan berapa banyak hujan yang terjadi dalam 24 jam sebelumnya, yang dipesan berdasarkan tanggal. Sebagai contoh:

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

Apakah ada strategi / algoritma untuk menentukan berapa banyak hujan turun di setiap jam? Saya tidak bisa membungkus kepala saya dengan ini. Saya tahu itu tidak sesederhana hanya menjumlahkan diff.

Visualisasi Dataset

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

Terima kasih banyak atas bantuannya.

Mike Griffith
sumber
Apakah 0,6 "hujan dari 5/23 11:00 - 5/24 10:59 berarti bahwa dalam rentang waktu itu, 6" hujan turun atau rata - rata 0,6 "hujan selama periode itu?
System Down
Mantan. Ini jumlah hujan per jam, untuk 24 jam sebelumnya. Saya ingin mencari cara untuk "memutuskan" jam terakhir itu.
Mike Griffith
1
Ini sangat sulit. Setiap nilai yang Anda rekam terdiri dari 24 angka yang tidak diketahui yang disimpulkan. Anda akan membutuhkan 24 persamaan untuk menyelesaikannya, yaitu 24 persamaan yang memiliki persis sama tidak diketahui di dalamnya tetapi karena Anda memiliki jendela geser itu tidak terjadi. Saya tidak dapat membayangkan bahwa ini "tidak dapat dipecahkan", tetapi jelas terlihat seperti itu bagi saya. Cara lain untuk memikirkannya: Anda mendapatkan satu yang tidak diketahui untuk setiap yang P(N-x)Anda tambahkan, jadi pada akhirnya jumlah persamaan dan tidak diketahui bahkan keluar sendiri lagi.
sebastiangeiger
3
Saya bertanya-tanya apakah ini akan menjadi pertanyaan yang lebih baik untuk: cstheory.stackexchange.com
FrustratedWithFormsDesigner
2
@FrustratedWithFormsDesigner, atau math.stackexchange.com ?
CaffGeek

Jawaban:

8

Dengan asumsi bahwa kumpulan data selalu terdiri dari jendela 24 jam berturut-turut (yaitu, titik data pertama bukan jendela 1 jam) ...

Ini bukan masalah yang dapat dipecahkan setidaknya dalam kasus umum karena ada contoh tandingan di mana setidaknya dua pola hujan dipetakan ke satu set data.

  • Kasus 1: Hujan 24 "pukul 12:30 setiap hari selamanya.
  • Kasus 2: Hujan turun 1 "pada 30 menit lewat setiap jam selamanya.

Dalam kedua kasus, Anda P(N) = 24"untuk semua N.

Karena tidak ada satu skenario yang dapat diturunkan dari kumpulan data yang satu ini, masalahnya tidak dapat dipecahkan dalam arti umum.


Selain itu, kami juga dapat menunjukkan bahwa masalahnya tidak selalu benar bahwa masalahnya selalu tidak dapat diselesaikan. Paling sederhana, jika P(N) = 0"untuk semua N, hanya ada satu pola hujan yang memungkinkan untuk memperhitungkannya: hujan nol inci setiap jam.


Oleh karena itu masalah yang lebih menarik untuk mengidentifikasi karakteristik apa dari kumpulan data yang membuat masalah dapat dipecahkan. Sepele, jika Anda memiliki satu set data dengan setidaknya Nitu P(N) = 0", maka Anda punya solusi.

Saya tidak akan terkejut jika ada properti lain yang akan membuat masalah terpecahkan untuk kumpulan data yang diberikan. Menemukan itu harus menjadi tantangan yang menyenangkan. Pada saat yang sama, membuktikan bahwa tidak ada yang bisa ada sama menghiburnya.

Steven
sumber
5

Anda perlu mengulang melalui data sampai Anda menemukan 0 periode presipitasi maka Anda menghitung maju dari titik itu seperti yang dijelaskan SnOrus. Jika tidak ada titik data 0 maka saya tidak berpikir ini bisa diselesaikan kecuali jika Anda menentukan entri paling awal menjadi 1 jam setelah awal waktu sehingga poin lebih awal dari yang tidak ditentukan.

mungkin juga untuk menghitung mundur dalam waktu dari pembacaan 0, melakukan hal yang sama secara terbalik (meskipun Anda akan mendapatkan setidaknya 24 0s berturut-turut.

Ryathal
sumber
Kendala menarik pada data yang memungkinkan ini adalah bahwa curah hujan tidak pernah bisa negatif, jadi dengan nilai nol, Anda tahu 24 jam sebelumnya harus nol.
Scott Whitlock
0

P (n) - P (n-1) Terbatas>> 0

Di mana P () adalah jumlah presipitasi yang dicatat selama 24 jam sebelum n.

... harus memberi Anda jumlah hujan dalam satu jam sebelum P(n).

Steven Evers
sumber
Itu akan menghitung -1 inci untuk 12:00. Kedengarannya tidak mungkin. Jika .2 inci adalah ukuran 24 jam pada jam 11:00 pada tanggal 23 maka jawaban yang benar adalah .1
Edward Strange
Jika N adalah "5/24 12:00 siang", P (N) termasuk jendela dari 5/23 pada pukul 12:00 hingga 5/24 pada 11:59 pagi. Kemudian P (N-1) termasuk jendela dari 5/23 jam 11:00 sampai 5/24 jam 10:59 pagi. Saya ingin tahu apa yang terjadi di jendela mulai jam 11:00 - 11:59 pagi, tetapi dengan mengurangi keduanya juga memperkenalkan "jendela" tambahan di hari sebelumnya. Lihat deskripsi terbaru untuk representasi visual.
Mike Griffith
@ MikeGriffith: Lihat hasil edit saya. Saya yakin saya benar, tetapi Anda harus mengikat hasilnya ke> = 0. (<= 0 akan menunjukkan bahwa tidak ada hujan). Kecuali saya salah paham masalah.
Steven Evers
@SnOrfus: Anda masih memiliki dua nilai yang tidak diketahui pada saat itu.
Daenyth
0

Ini bukan jawaban yang lengkap, saya sedang bekerja dan sudah menghabiskan banyak waktu untuk itu ... lebih lanjut saya perlu lebih banyak data untuk melihat apakah firasat saya benar.

Sebut P (x) ukuran 24 jam pada waktu x.

Pertimbangkan skenario tumpang tindih berikut:

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

Jadi, Anda perlu menghitung H25. Saya percaya bahwa solusinya akan beristirahat di suatu tempat dalam sistem yang dibuat dari P (X), P (X-1), dan P (X-24).

Edward Strange
sumber
0

Selama dua jam berturut-turut n (sekarang) dan n-1 (jam sebelum sekarang), Anda memiliki jumlah curah hujan 24 jam (T) yang terdiri dari 24 angka presipitasi per jam (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)

Begitu:

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

(Istilah P (n-1) ... P (n-23) diduplikasi dalam T (n) dan T (n-1), jadi dengan menguranginya memberi 0.) Mengatur ulang, Anda mendapatkan:

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

Sekarang, Anda tidak dapat mengetahui apa P (n) kecuali Anda tahu apa P (n-24). Anda dapat melangkah lebih jauh ke belakang dalam data untuk menghitung P (n-24), tetapi untuk mendapatkan itu Anda membutuhkan P (n-25) dan seterusnya pada infinitum iklan. Jadi, yang Anda butuhkan adalah nilai presipitasi untuk setiap jam yang lebih lama dari 24 jam. Jika sudah, Anda dapat menghitung curah hujan setiap jam untuk semua jam berikutnya.

Caleb
sumber
1
+1 "Yang Anda butuhkan adalah nilai presipitasi untuk setiap jam yang lebih lama dari 24 jam." Atau nilai 0 "untuk periode 24 jam.
CaffGeek
@Chad Itu tentu saja salah satu cara untuk mendapatkannya.
Caleb