Saya mencoba mencari maxima lokal untuk fungsi kepadatan probabilitas (ditemukan menggunakan density
metode R ). Saya tidak bisa melakukan metode "lihat sekeliling tetangga" yang sederhana (di mana orang melihat-lihat titik untuk melihat apakah itu maksimum lokal sehubungan dengan tetangganya) karena ada volume data yang besar. Selain itu, tampaknya lebih efisien dan generik untuk menggunakan sesuatu seperti interpolasi Spline dan kemudian menemukan akar turunan pertama, sebagai lawan membangun "lihat sekeliling tetangga" dengan toleransi kesalahan dan parameter lainnya.
Jadi, pertanyaan saya:
- Diberi fungsi dari
splinefun
, metode apa yang akan menemukan maxima lokal? - Apakah ada cara mudah / standar untuk menemukan turunan dari suatu fungsi yang dikembalikan menggunakan
splinefun
? - Apakah ada cara yang lebih baik / standar untuk menemukan maksimum lokal dari fungsi kepadatan probabilitas?
Untuk referensi, di bawah ini adalah sebidang fungsi kerapatan saya. Fungsi kepadatan lainnya yang saya kerjakan memiliki bentuk yang serupa. Saya harus mengatakan bahwa saya baru di R, tetapi tidak baru dalam pemrograman, jadi mungkin ada perpustakaan atau paket standar untuk mencapai apa yang saya butuhkan.
Terima kasih atas bantuan Anda!!
msExtrema {msProcess}
) dan hanya mampu mengidentifikasi beberapa maksimum, tidak semua, dengan bermain dengan pengaturan toleransi.
msExtrema
, itu adalah pembungkus sederhana untuk peaks
dari splus2R
paket, yang Anda akan lebih baik menggunakan secara langsung jika Anda hanya menginginkan maksimum lokal dan bukan minimum lokal. Saya tidak dapat melihat mengapa menggunakan default span=3
tidak akan menemukan semua maxima lokal. Dan 2 ^ 15 = 32768 seharusnya tidak cukup besar untuk efisiensi menjadi kekhawatiran besar.
peaks
tampaknya buggy: Ia memanggil max.col
dengan pengaturan default ties.method = "random"
, yang tidak hanya memutus ikatan secara acak tetapi juga menetapkan toleransi relatif 1e-5 untuk menyatakan dasi. Yang pertama membingungkan, yang terakhir jelas bukan yang Anda inginkan di sini. peaks()
juga mengambil strict
parameter yang kurang didokumentasikan dan, melihat kode fungsi, tidak melakukan apa pun. Ah, kegembiraan perpustakaan perangkat lunak kontribusi pengguna! Anda mungkin dapat memperbaikinya, seperti yang Anda katakan Anda bukan orang baru dalam pemrograman,
density()
tidak memperkirakan kepadatan untuk setiap datum, ia memperkirakan kepadatan pada nilai n , di mana n adalah parameter yang ditentukan pengguna dengan nilai default n = 512.