Làm thế nào để so sánh các tính năng của hai đường cong?


11

Tôi cần so sánh hai đường cong f (x) và g (x). Chúng nằm trong cùng một phạm vi x (giả sử -30 đến 30). f (x) có thể có một số đỉnh sắc nét hoặc các đỉnh và thung lũng mịn. g (x) có thể có cùng các đỉnh và thung lũng. Nếu vậy tôi muốn một thước đo về việc các tính năng này trùng khớp như thế nào mà không cần kiểm tra trực quan. Tôi đã cố gắng giải quyết vấn đề này theo cách sau.

  1. Bình thường hóa cả hai chức năng bằng cách chia mỗi điểm dữ liệu cho tổng diện tích của hàm. Bây giờ diện tích của hàm được chuẩn hóa là 1.0
  2. Tại mỗi x lấy giá trị tối thiểu trong số f (x) và g (x). Điều này sẽ cho tôi một hàm mới về cơ bản là vùng chồng lấp giữa f (x) và g (x).
  3. Khi tôi tích hợp chức năng kết quả của bước 2, tôi nhận được tổng diện tích chồng lấp từ 1.0

Tuy nhiên, điều này không cho tôi biết các đỉnh và thung lũng có trùng nhau hay không. Tôi không chắc chắn nếu điều này có thể được thực hiện nhưng nếu ai đó biết một phương pháp tôi sẽ đánh giá cao sự giúp đỡ của bạn.

== EDIT == Để làm rõ tôi đã bao gồm một hình ảnh.

Đường cong mẫu

Sự khác biệt giữa hai đường cong (đen và xanh) có thể không giống nhau nhưng sẽ có hình dạng bổ sung.

Bối cảnh: Các chức năng được dự kiến ​​mật độ của các trạng thái (PDOS) của quỹ đạo nguyên tử của một hợp chất. Vì vậy, tôi có các trạng thái cho các quỹ đạo s, p, d. Tôi muốn xác định liệu vật liệu có lai, sp, pd hoặc dd (trộn quỹ đạo). Dữ liệu duy nhất tôi có là PDOS. Nếu nói PDOS của s orbital (hàm f (x)) có các đỉnh và thung lũng như ở cùng một năng lượng (giá trị x) của PDOS của p orbital (hàm g (x)) thì có sp trộn trong vật liệu đó.


1
Có thể mang nó đến mathoverflow.net ?
Euphoric

1
Tôi tự hỏi nếu folks âm thanh kỹ thuật số có vấn đề tương tự?
Dan Pichelman

Cảm ơn Euphoric, tôi cũng sẽ đặt câu hỏi tại mathoverflow.net
laalee

@laalee Vui lòng không đặt câu hỏi của bạn trên nhiều trang web trên mạng Stack Exchange. Ngoài ra Math Overflow là cấp độ nghiên cứu toán học. Math Stack Exchange là cấp độ không nghiên cứu. Tôi có thể chuyển cái này sang Math hoặc ở nơi khác nếu bạn muốn.
Kỹ sư thế giới

Tôi xin lỗi. Tôi đã cố gắng xóa nó trong mathoverflow nhưng tôi không thể tìm ra cách nào. Tôi sẽ đánh giá cao nếu bạn có thể xóa nó. Cảm ơn
laalee

Câu trả lời:


4

Đây là một vấn đề phổ biến và thường gặp khó khăn trong hóa học phân tích, vật lý, quang phổ, v.v ... Các phương pháp được sử dụng có thể bao gồm từ so sánh RMSD đơn giản đến các phương pháp rất phức tạp. Nếu nhiệm vụ không dễ thực hiện bằng kiểm tra trực quan (con người được phát triển một cách tinh tế để nhận dạng tính năng), thì có thể sẽ khó thực hiện tính toán.

Một cách tiếp cận là cố gắng loại bỏ "đường cơ sở" sao cho các hàm có giá trị bằng 0 trừ khi có các đặc điểm đỉnh hoặc thung lũng. Điều này được thực hiện tốt nhất với khớp đường cong bằng cách sử dụng một đa thức bậc thấp, hoặc, tốt hơn nữa, một mô hình nguyên tắc phù hợp hơn về những gì đường cơ sở có thể và sẽ trông như thế nào. Nếu các đỉnh rất sắc nét, bạn có thể chỉ cần làm mịn chức năng và trừ chức năng được làm mịn khỏi chức năng ban đầu.

Sau khi loại bỏ đường cơ sở, bạn có thể bình thường hóa và tạo phần dư hoặc thực hiện RMSD (cách tiếp cận đơn giản) hoặc cố gắng phát hiện các tính năng đỉnh / thung lũng bằng cách lắp gaussian (hoặc bất kỳ mô hình nào phù hợp) cho từng tính năng bạn tìm kiếm. Nếu bạn có thể phù hợp với các đỉnh, thì bạn có thể so sánh các vị trí đỉnh và nửa chiều rộng.

Hãy xem SciPy nếu bạn biết Python. Chúc may mắn.


Cảm ơn câu trả lời của bạn. Tuy nhiên tôi không rõ ràng về cách tìm đường cơ sở. Mỗi trường hợp sẽ có một chức năng khác nhau mà tôi không thể dự đoán trước.
laalee

3

Đây chỉ là "ngoài đỉnh đầu của tôi", vì vậy tôi có thể hiểu nhầm vấn đề hoàn toàn, nhưng có lẽ bạn có thể áp dụng khoảng cách trung bình bình phương gốc (RMSD) cho các chức năng. Nếu bạn chỉ quan tâm đến các đỉnh và thung lũng, thì hãy áp dụng nó cho các khu vực xung quanh các đỉnh và thung lũng đó (nghĩa là, đối với một số x +/- một số epsilon trong đó đạo hàm của một trong hai là 0). Nếu RMSD của phạm vi đó gần bằng 0, thì bạn có một trận đấu tốt, tôi nghĩ vậy.


Điều này xem xét sự khác biệt giữa các giá trị, có thể không bằng 0 mặc dù các hình dạng tương tự nhau.
laalee

3

Khi tôi không biết điều đó, thông tin bạn đang tìm kiếm được truyền tải bởi các tableau des biến thể của chức năng. Tôi rất tiếc vì tôi không biết tên tiếng Anh cho việc này!

Bảng này được liên kết với một hàm f khác biệt và bạn xây dựng nó bằng cách tìm các gốc của f ' và xác định dấu của f' trên mỗi khoảng giữa các số 0 này.

Vì vậy, nếu các số 0 của f 'g' trùng khớp ít nhiều và các dấu hiệu của các hàm luận án đồng ý, chúng sẽ có một cấu hình tương tự.

Điều đầu tiên tôi cố gắng lập trình sẽ là:

  1. Chọn một nhỏ ε
  2. Vẽ ngẫu nhiên một số lượng lớn N điểm x [i] trong khoảng thời gian mà các hàm được xác định.

  3. Đối với mỗi nút, tính toán sự khác biệt F [i] = f (x [i] +) - f (x [i] - ε)G [i] = g (x [i] + ε) - g (x [i] -) .

  4. Nếu tại mỗi nút, F [i]G [i] đều nhỏ hơn ε² HOẶC có cùng một dấu, kết luận rằng hai hàm gần như có cùng một cấu hình.

Nó có hoạt động không?


Cảm ơn michipili cho câu trả lời sâu sắc của bạn. Hiện tại tôi đang cố gắng đáp ứng một thời hạn. Nhưng tôi sẽ thực hiện điều này ngay khi tôi có thể và cho bạn biết
laalee

1

Brute force: tìm ra giá trị float khác không nhỏ nhất với giá trị này là bước, đi qua toàn bộ miền và kiểm tra xem các giá trị có bằng nhau không?

== CHỈNH SỬA ==

Hmmm ... Nếu theo "cùng hình dạng", bạn có nghĩa là g (x) = c * f (x), giải pháp này sẽ được sửa đổi - cho mỗi phần tử của miền bạn tính f (x) / g (x) và kiểm tra xem kết quả là giống nhau cho mỗi điểm (tất nhiên, nếu g (x) == 0, thì bạn kiểm tra xem f (x) == 0, bạn không cố chia).

Nếu "cùng hình dạng" có nghĩa là "tối ưu cục bộ và điểm uốn là như nhau" ... Chà, tìm tối ưu cục bộ và điểm uốn cho f (x) và g (x) (dưới dạng tập hợp các phần tử miền) và kiểm tra, nếu chúng bộ bằng nhau.

Tùy chọn thứ ba: f (x) = g (x) + c. Chỉ cần kiểm tra xem mỗi phần tử của miền có cùng một sự khác biệt f (x) -g (x). Nó gần như giống hệt như trường hợp đầu tiên, nhưng thay vì phân chia bạn có sự khác biệt.

== YET KHÁC EDIT ==

Chà ... Cách tiếp cận thứ hai từ chỉnh sửa ở trên có thể hữu ích. Ngoài ra, bạn có thể hợp nhất nó với so sánh dấu hiệu của dervative đầu tiên (không phải là biểu tượng, nhưng được tính là df (x) = f (x) - f (x-step)). Nếu cả hai hàm có cùng dấu của đạo hàm trong toàn miền, hãy kiểm tra tối ưu và điểm uốn, để chắc chắn. Tôi muốn nói rằng điều kiện này là đủ để làm những gì bạn cần.


Cảm ơn Filip đã trả lời của bạn. Nhưng các hàm có thể không có giá trị bằng nhau nhưng có hình dạng giống nhau.
laalee

Tôi di chuyển bình luận này để trả lời là chỉnh sửa. Kiểm tra nó ra.
Filip Malczak

Cảm ơn Filip cho câu trả lời của bạn. Tôi đã thêm một hình ảnh để làm rõ vấn đề của tôi.
laalee

1

làm thế nào tốt các tính năng này trùng khớp mà không kiểm tra trực quan.

Có lẽ cách đơn giản nhất là tính hệ số tương quan của Pearson . Nghĩa là, sử dụng f (x) của bạn là X và g (x) là Y. Hiệu quả "vẽ đồ thị g (x) là hàm của f (x) và xem nó tạo thành một đường thẳng" tốt như thế nào.

Hệ số tương quan là phổ biến vì dễ tính toán và thường được chứng minh chỉ bằng cách vẫy tay. Nó có thể là một xấp xỉ ban đầu tốt cho một số sử dụng, nhưng chắc chắn không phải là thuốc chữa bách bệnh.

Để có kết quả tốt hơn trong các ứng dụng trong thế giới thực, bạn cần hiểu những gì đang diễn ra trong dữ liệu, tức là quá trình tạo ra dữ liệu. Thường có một số loại nền và các tính năng thú vị nằm trên nền đó. Nếu bạn ném toàn bộ dữ liệu vào hộp đen, cuối cùng bạn có thể so sánh phần lớn các nền: hộp đen không biết phần nào của dữ liệu là phần thú vị. Vì vậy, để có kết quả tốt hơn, bạn nên thường xuyên xóa các hình nền và sau đó so sánh những gì bạn còn lại. Ghép các đường hoặc đường cong hoặc đường trung bình và trừ hoặc chia cho chúng, lọc mức thấp, dải hoặc đường cao tốc, cung cấp dữ liệu thông qua một số hàm phi tuyến ... bạn đặt tên cho nó.

Chắc chắn không có câu trả lời đúng duy nhất. Bạn sẽ nhận được nhiều kết quả khác nhau khi bạn thử phương pháp. Nhưng, một số kết quả tốt hơn một số biến đổi. Lý luận lý thuyết có thể giúp bắt đầu đi đúng hướng, nhưng làm thế nào để thiết lập các tham số và tinh chỉnh phương pháp của bạn, cuối cùng chỉ có thể được tìm thấy bằng cách thử chúng và so sánh kết quả trong thế giới thực.

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.