Tìm điểm uốn trong R từ dữ liệu được làm mịn


13

Tôi có một số dữ liệu mà tôi sử dụng trơn tru loess. Tôi muốn tìm các điểm uốn của đường được làm mịn. Điều này có thể không? Tôi chắc rằng ai đó đã thực hiện một phương pháp ưa thích để giải quyết điều này ... Ý tôi là ... sau tất cả, đó là R!

Tôi ổn với việc thay đổi chức năng làm mịn tôi sử dụng. Tôi chỉ sử dụng loessvì đó là những gì tôi đã sử dụng trong quá khứ. Nhưng bất kỳ chức năng làm mịn là tốt. Tôi nhận ra rằng các điểm uốn sẽ phụ thuộc vào chức năng làm mịn mà tôi sử dụng. Tôi ổn với điều đó. Tôi muốn bắt đầu bằng cách có bất kỳ chức năng làm mịn nào có thể giúp nhổ các điểm uốn.

Đây là mã tôi sử dụng:

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)

nhập mô tả hình ảnh ở đây


3
Có lẽ bạn muốn có một cái nhìn về phân tích điểm thay đổi .
nico

Tôi đã tìm thấy dòng mã này rất hữu ích: Infl <- c (FALSE, diff (diff (out)> 0)! = 0) Nhưng mã này tìm thấy tất cả các bước ngoặt bất kể nó tăng hay giảm. Làm thế nào tôi có thể biết điểm nào uốn cong lên và điểm nào uốn cong trong một thời gian? Ví dụ, cốt truyện và màu sắc hướng lên trên màu xanh lá cây và hướng xuống dưới màu đỏ.
dùng3511894

Câu trả lời:


13

Từ góc độ của việc sử dụng R để tìm các biến động trong đường cong được làm mịn, bạn chỉ cần tìm các vị trí đó trong các giá trị y được làm mịn trong đó thay đổi trong dấu hiệu chuyển mạch y.

infl <- c(FALSE, diff(diff(out)>0)!=0)

Sau đó, bạn có thể thêm điểm vào biểu đồ nơi xảy ra các biến động này.

points(xl[infl ], out[infl ], col="blue")

Từ góc độ tìm kiếm các điểm uốn có ý nghĩa thống kê, tôi đồng ý với @nico rằng bạn nên xem xét phân tích điểm thay đổi, đôi khi còn được gọi là hồi quy phân đoạn.


Điều này dường như làm công việc hơi tốt. Tôi hiểu nó không lý tưởng và kết quả mà nó mang lại chắc chắn không lý tưởng. Cảm ơn sự đóng góp mặc dù. Nó bao gồm hầu hết các trường hợp ngoại trừ những thứ như một đường thẳng.
dùng164846

3
Tôi không chắc là tôi hiểu, @ user164846. Một đường thẳng không có điểm uốn.
Jean V. Adams

Ngoài ra, bạn có thể muốn có một cái nhìn về các chất làm mịn ngay lập tức cung cấp các dẫn xuất, ví dụ như bộ lọc Savitzky-Golay. Tuy nhiên, sự lựa chọn mượt mà hơn luôn phải được quyết định bởi dữ liệu và ứng dụng của bạn chứ không phải ngược lại!
cbeleites hỗ trợ Monica

4

Có nhiều vấn đề ở nhiều cấp độ ở đây.

Trước hết, hoàng thổ chỉ là một thứ mượt mà hơn và có rất nhiều, rất nhiều để lựa chọn. Những người lạc quan lập luận rằng chỉ cần bất kỳ sự mượt mà hợp lý nào cũng sẽ tìm thấy một mô hình thực sự và rằng tất cả những người làm mịn hợp lý đều đồng ý với các mô hình thực. Những người bi quan cho rằng đây là vấn đề và "các chất làm mịn hợp lý" và "các mẫu thực" được xác định ở đây theo nghĩa của nhau. Đến mức, tại sao hoàng thổ và tại sao bạn nghĩ rằng một lựa chọn tốt ở đây? Sự lựa chọn không chỉ đơn thuần là một lần thực hiện mượt mà hay một lần thực hiện mượt mà hơn (không phải tất cả những gì diễn ra dưới tên hoàng thổ hay thấp kém đều giống hệt nhau trên phần mềm), mà còn là một mức độ làm mịn duy nhất (ngay cả khi được chọn bởi thói quen cho bạn). Bạn có đề cập đến điểm này nhưng đó không phải là giải quyết nó.

Cụ thể hơn, như ví dụ về đồ chơi của bạn cho thấy, các tính năng cơ bản như bước ngoặt có thể dễ dàng không được bảo tồn bằng hoàng thổ (cũng không phải là duy nhất hoàng thổ). Tối thiểu cục bộ đầu tiên của bạn biến mất và tối thiểu cục bộ thứ hai của bạn bị thay thế bởi độ mịn cụ thể mà bạn hiển thị. Inflexions được xác định bởi các số không của đạo hàm thứ hai chứ không phải là số thứ nhất có thể được dự kiến ​​sẽ thậm chí còn hay thay đổi hơn.


Tôi chọn hoàng thổ vì tôi đã lấy nó từ internet. Tôi rất có kinh nghiệm trong việc làm mịn nói chung, vì vậy tôi chỉ cần lấy mã trực tuyến. Bạn có một đề nghị tốt hơn?
dùng164846

Xin lỗi, nhưng tôi không hiểu bình luận của bạn. Nếu bạn rất có kinh nghiệm trong việc làm mịn, bạn nên có những lý lẽ để làm mịn tốt nhất bảo vệ sự không linh hoạt trong khi triệt tiêu tiếng ồn. Điều đó có vẻ mâu thuẫn với tôi, nhưng tôi sẽ rất vui khi nghe những lý lẽ kỹ thuật tại sao tôi sai.
Nick Cox

Xin lỗi, tôi không có nghĩa là "thiếu kinh nghiệm" haha
user164846

1
Tôi hiểu rồi. Cuộc sống rất ngắn ngủi và bạn không thể thử mọi phương pháp có thể. Chúng tôi không thể xem dữ liệu thực của bạn, nhưng ví dụ về đồ chơi của bạn nhấn mạnh rằng việc làm mịn có thể loại bỏ cấu trúc có thể nhận dạng được.
Nick Cox

2

Có một loạt các cách tiếp cận tuyệt vời cho vấn đề này. Một số bao gồm. (1) - gói thay đổi (2) - phân đoạn - gói. Nhưng bạn được yêu cầu chọn số lượng điểm thay đổi. (3) MARS được triển khai trong gói thứ năm

Tùy thuộc vào sự đánh đổi thiên vị / phương sai của bạn, tất cả sẽ cung cấp cho bạn thông tin hơi khác nhau. -segmented- cũng đáng xem. Có thể so sánh số lượng mô hình thay đổi khác nhau với AIC / BIC


1

Có lẽ bạn có thể sử dụng thư viện fda và khi bạn đã ước tính một hàm liên tục phù hợp, bạn có thể dễ dàng tìm thấy các vị trí mà đạo hàm thứ hai bằng không.

FDA CRAN

Giới thiệu FDA


Số không của đạo hàm đầu tiên xác định cực tiểu và cực đại. Tôi nghĩ bạn có nghĩa là thứ hai. "Dễ dàng" là gì? Có nhiều hơn một cách để phân biệt số lượng.
Nick Cox

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.