Saya punya beberapa data yang saya gunakan mulus loess
. Saya ingin mencari titik belok pada garis yang dihaluskan. Apakah ini mungkin? Saya yakin seseorang telah membuat metode mewah untuk menyelesaikan ini ... Maksud saya ... setelah semua, itu R!
Saya baik-baik saja dengan mengubah fungsi penghalusan yang saya gunakan. Saya hanya menggunakan loess
karena itulah yang saya gunakan di masa lalu. Tetapi fungsi menghaluskan apapun baik-baik saja. Saya menyadari bahwa titik belok akan tergantung pada fungsi perataan yang saya gunakan. Saya baik-baik saja dengan itu. Saya ingin memulai dengan hanya memiliki fungsi menghaluskan yang dapat membantu meludahkan titik belok.
Berikut kode yang saya gunakan:
x = seq(1,15)
y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9)
plot(x,y,type="l",ylim=c(3,10))
lo <- loess(y~x)
xl <- seq(min(x),max(x), (max(x) - min(x))/1000)
out = predict(lo,xl)
lines(xl, out, col='red', lwd=2)
Jawaban:
Dari perspektif menggunakan R untuk menemukan infleksi dalam kurva yang dihaluskan, Anda hanya perlu menemukan tempat-tempat itu dalam nilai-nilai y yang dihaluskan di mana perubahan dalam y bertanda.
Kemudian Anda dapat menambahkan poin ke grafik tempat infleksi ini terjadi.
Dari perspektif menemukan titik infleksi yang bermakna secara statistik, saya setuju dengan @nico bahwa Anda harus melihat ke dalam analisis perubahan-titik, kadang-kadang juga disebut sebagai regresi tersegmentasi.
sumber
Ada beberapa masalah di beberapa level di sini.
Pertama, loess kebetulan adalah satu yang lebih halus dan ada banyak, banyak yang bisa dipilih. Orang-orang optimis berpendapat bahwa hampir semua orang yang berakal sehat akan menemukan pola yang nyata dan bahwa semua orang yang berakal sehat setuju dengan pola yang nyata. Pesimis berpendapat bahwa ini adalah masalahnya dan bahwa "smoothers masuk akal" dan "pola nyata" di sini didefinisikan dalam hal satu sama lain. Intinya, mengapa loess dan mengapa menurut Anda pilihan yang bagus di sini? Pilihannya tidak hanya dari satu smoother atau implementasi tunggal dari smoother (tidak semua yang menggunakan nama loess atau lowess identik di seluruh perangkat lunak), tetapi juga tingkat kehalusan tunggal (bahkan jika itu dipilih oleh rutin untuk Anda). Anda memang menyebutkan poin ini tetapi itu tidak mengatasinya.
Lebih khusus lagi, seperti yang diperlihatkan contoh mainan Anda, fitur-fitur dasar seperti titik balik mungkin dengan mudah tidak dapat dipertahankan oleh loess (tidak juga untuk memilih loess). Minimum lokal pertama Anda menghilang dan minimum lokal kedua Anda digantikan oleh kelancaran tertentu yang Anda tunjukkan. Infleksi didefinisikan oleh nol dari turunan kedua daripada yang pertama dapat diharapkan menjadi lebih berubah-ubah.
sumber
Ada banyak pendekatan hebat untuk masalah ini. Beberapa di antaranya. (1) - paket changepoint- (2) - tersegmentasi - paket. Tetapi Anda diharuskan memilih jumlah changepoint. (3) MARS sebagaimana diterapkan dalam paket -earth-
Bergantung pada bias / varians tradeoff Anda, semua akan memberi Anda informasi yang sedikit berbeda. -teregmentasi- sangat menarik untuk dilihat. Jumlah model changepoint yang berbeda dapat dibandingkan dengan AIC / BIC
sumber
Anda mungkin dapat menggunakan pustaka fda, dan setelah Anda memperkirakan fungsi kontinu yang sesuai, Anda dapat dengan mudah menemukan tempat-tempat di mana turunan kedua adalah nol.
CRAN FDA
Intro FDA
sumber
Saya telah menerima banyak kunjungan ke blog tentang paket changepoint (> 650 per 11 November 2014), jadi di sini ada posting yang diperbarui menggunakan CausalImpact. http://r-datameister.blogspot.com/2014/11/causality-in-time-series-look-at-2-r.html
sumber