Bagaimana menemukan ketika grafik mencapai puncak dan dataran tinggi?

9

Ini mungkin terdengar sangat mendasar, tetapi saya memiliki masalah ini: Saya punya antrian data dengan ukuran jendela 300. Data baru ditambahkan di satu ujung, nilai lama dihapus dari ujung lainnya.

Saya berharap data antrian tetap lebih atau kurang konsisten, misalnya: 10,12,15,10,20, kemudian mulai naik tajam: 15,10,20,22,25,26,28,30,30,32 ... sampai 150 atau lebih. Di sana data mungkin sedikit berfluktuasi, maka akan turun dengan kemiringan yang sama (120.118.116.115 ...) hingga 20 atau lebih.

Saya mencoba mengidentifikasi titik balik dalam seri data ini secara terprogram, tetapi kode saya mendeteksi puncak lebih sering daripada yang saya inginkan. Bagaimana saya bisa mengidentifikasi kapan grafik naik, ketika telah mencapai titik balik pasti dan kapan mulai turun? Haruskah saya mencoba melihat tingkat perubahan dari tingkat perubahan?

Alex Stone
sumber
Jika Anda memiliki pemahaman yang masuk akal tentang kemiringan dan ketinggian puncak, dapatkah Anda memperhitungkan ketinggian dan berapa lama telah mendaki, serta kemiringan saat ini? Berapa banyak data sebelumnya tentang puncak yang Anda miliki, dan dapatkah Anda menggunakannya untuk menyesuaikan model?
Karl
2
Apa pun metodenya, Anda harus mendefinisikan dengan tepat apa yang merupakan puncak dan apa yang merupakan dataran tinggi. Apakah dua nilai 'tinggi' berturut-turut adalah puncak atau dataran tinggi? Bagaimana kalau lima? Beberapa metode mungkin tampaknya tidak memerlukan informasi ini, tetapi kemudian ini disembunyikan di balik layar. Seperti yang sering terjadi, ia harus mendefinisikan masalah Anda dengan benar, dan mengoptimalkan parameter Anda (dan / atau algoritma) untuk itu.
Nick Sabbe

Jawaban:

2

Jika Anda tahu bahwa ini adalah pola yang tepat untuk diharapkan, maka Anda dapat mencari pola yang tepat ini, tetapi kemudian Anda akan kehilangan pola lainnya. Begitu. Jika Anda tahu bahwa puncaknya adalah 150, maka Anda bisa mencari 2 atau 3 atau 4 atau (namun banyak) nilai berturut-turut dari 150. Tetapi Anda mengatakan "atau lebih" - seberapa besar "atau lebih"? Mungkin puncaknya didefinisikan sebagai "3 nilai berturut-turut lebih dari 130" atau mungkin itu "3 dari 5 nilai berturut-turut lebih dari 140". Itu bagi Anda untuk memutuskan.

Di sisi lain, jika Anda hanya mencari beberapa program umum untuk mendeteksi puncak - yah, itu sudah dilihat. Ada banyak metode penghalusan (misalnya loess, splines dari berbagai jenis, rata-rata bergerak dll.). Bukan bidang saya ahli, tapi ada banyak literatur tentang ini.

Peter Flom
sumber
4

Lihatlah ke SiZer (penyilangan ZER yang pasti ... atau lereng, saya tidak ingat), meskipun bisa dibilang ini lebih merupakan alat cross-sectional daripada seri waktu. Idenya ada untuk memuluskan data pada bandwidth yang berbeda (bervariasi oleh sekitar tiga urutan besarnya), dan menerapkan beberapa tes lokal untuk melihat apakah kemiringan regresi lokal secara signifikan positif atau negatif (atau ragu-ragu). Ini menghasilkan gambar yang meyakinkan yang akan membantu Anda dalam menentukan fitur mana yang ada. (Saya terkejut tidak ada implementasi R, hanya Matlab.)

Tugas
sumber