Tôi đang cố gắng tìm cực đại cục bộ cho hàm mật độ xác suất (được tìm thấy bằng density
phương pháp R ). Tôi không thể thực hiện một phương pháp "nhìn xung quanh hàng xóm" đơn giản (trong đó người ta nhìn quanh một điểm để xem đó có phải là mức tối đa cục bộ so với các nước láng giềng không) vì có một khối lượng dữ liệu lớn. Hơn nữa, có vẻ hiệu quả và chung chung hơn khi sử dụng một cái gì đó như phép nội suy Spline và sau đó tìm ra gốc của đạo hàm 1, trái ngược với việc xây dựng một "cái nhìn xung quanh hàng xóm" với khả năng chịu lỗi và các tham số khác.
Vì vậy, câu hỏi của tôi:
- Cho một hàm từ
splinefun
, phương thức nào sẽ tìm cực đại cục bộ? - Có một cách dễ dàng / tiêu chuẩn để tìm các đạo hàm của hàm được trả về bằng cách sử dụng
splinefun
không? - Có cách nào tốt hơn / tiêu chuẩn để tìm cực đại cục bộ của hàm mật độ xác suất không?
Để tham khảo, dưới đây là một biểu đồ của hàm mật độ của tôi. Các hàm mật độ khác mà tôi đang làm việc có dạng tương tự. Tôi nên nói rằng tôi chưa quen với R, nhưng không mới về lập trình, vì vậy có thể có một thư viện hoặc gói tiêu chuẩn để đạt được những gì tôi cần.
Cảm ơn bạn đã giúp đỡ!!
msExtrema {msProcess}
) và chỉ có thể xác định một vài mức tối đa, không bao giờ là tất cả, bằng cách chơi với các cài đặt dung sai.
msExtrema
, đó là một wrapper đơn giản cho peaks
từ splus2R
gói mà bạn muốn được tốt hơn bằng cách sử dụng trực tiếp nếu bạn chỉ muốn cực đại địa phương và không phải là cực tiểu địa phương. Tôi không thể hiểu tại sao sử dụng mặc định span=3
sẽ không tìm thấy tất cả các cực đại cục bộ. Và 2 ^ 15 = 32768 không nên đủ lớn để hiệu quả trở thành một mối lo ngại lớn.
peaks
vẻ là lỗi: Nó gọi max.col
với cài đặt mặc định ties.method = "random"
, nó không chỉ phá vỡ các mối quan hệ một cách ngẫu nhiên mà còn đặt ra dung sai tương đối là 1e-5 để khai báo một cà vạt. Cái trước khó hiểu, cái sau chắc chắn không phải là thứ bạn muốn ở đây. peaks()
cũng có một strict
tham số được ghi lại kém và, nhìn vào mã của hàm, không có gì. Ah, niềm vui của các thư viện phần mềm do người dùng đóng góp! Mặc dù vậy, bạn cũng có thể sửa nó, vì bạn nói rằng bạn không phải là người mới trong lập trình,
density()
không ước tính mật độ cho mỗi mốc thời gian, nó ước tính mật độ tại n giá trị, trong đó n là tham số do người dùng chỉ định với giá trị mặc định n = 512.