Tôi có dữ liệu có dạng . Để ước tính đến tôi sử dụng các công thức của bài viết này: John Fox - Phương pháp hồi quy phi tuyến và bình phương nhỏ nhất Trong bài báo này, được ước tính bằng cách xem dữ liệu. Nếu tôi làm điều đó nó hoạt động tốt, ngay cả khi tôi chỉ có ba điểm. Từ đó tôi có thể tính được hai người khác. Tôi đã kiểm tra các tham số của mình với nls () trong R và LevenbergMarquest trong C #. Các mô hình được trả lại bởi họ đang đáp ứng. β1β3
Vấn đề là tôi không muốn xem dữ liệu để có được công cụ ước tính tốt cho , tôi muốn chương trình của mình tính toán nó. Trong một thời gian, tôi đã sử dụng các giá trị cao hơn một chút so với giá trị tối đa của mình (khoảng giữa và \ max * 1.5 . Điều này hoạt động tốt miễn là các điểm bao phủ hầu hết chức năng. Nó cũng hoạt động tốt nếu các điểm dữ liệu nằm ở đâu đó từ "đỉnh" của đường cong, nhưng khi tất cả chúng đến từ khu vực "bên dưới" điểm uốn, công cụ ước tính này chắc chắn thấp hơn mức cần thiết và tôi không thể phù hợp với mô hình. đó chắc chắn là cao hơn điểm tối đa (bằng cách nhân nó với các giá trị cao một cách lố bịch), mô hình không phù hợp với bất kỳ cách hữu ích nào.
Các phép đo có thể trông như thế này:
x = (40, 50, 60, 70), y = (1000, 950, 400, 200) -> dễ ước tính
x = (40, 50, 60, 70), y = (1000, 950, 800, 100) -> dễ ước tính
x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> không quá dễ để ước tính
Tôi đoán rằng tôi có thể tìm ra vị trí của mình trong hàm (ở "đáy", ở "đỉnh", ở độ dốc) bằng cách tính toán các vùng đồng bằng trong các điểm đã cho và tính giới hạn trên tùy theo điều đó. Có ai có một gợi ý cho một giải pháp tốt hơn? Thông tin bổ sung: Nếu không thể thực hiện được, điều quan trọng hơn đối với tôi là các phép đo có thể phù hợp nhất có thể và tôi chấp nhận rằng một số phép đo hoàn toàn không phù hợp.
(mặc dù tôi muốn triển khai trong C # Tôi đã đăng nó ở đây, tôi không nghĩ vấn đề phụ thuộc vào ngôn ngữ)
cập nhật (Ứng dụng này):
x là các giá trị nhiệt độ và y các phép đo tương ứng. Về bản chất, nó được cho rằng nó sẽ trông giống như một đường cong logistic với giá trị y cao hơn ở nhiệt độ thấp hơn và ngược lại. Điểm nóng chảy bằng với điểm uốn của đường cong, nó thay đổi rất nhiều với những thay đổi nhỏ của các tham số mô hình.
cập nhật (một số dữ liệu tạo thành với 7 điểm dữ liệu và điểm uốn được biết đến ở 60):
//first I made up some data without any noise and enough (13) points
double[] x17 = { 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90 };
double[] y17 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 59.642....
//Then I took three different parts of that data
(to simulate how much data I will have in the real world)
double[] x18 = { 30, 35, 40, 45, 50, 55, 60 };
double[] y18 = { 2000, 1920, 1820, 1700, 1500, 1280, 1000 };
//calculated inflection point: 59.263.... is ok!
double[] x19 = { 60, 65, 70, 75, 80, 85, 90 };
double[] y19 = { 1000, 720, 500, 300, 180, 80, 0 };
//calculated inflection point: 53.447.... to small!
double[] x20 = { 45, 50, 55, 60, 65, 70, 75 };
double[] y20 = { 1700, 1500, 1280, 1000, 720, 500, 300 };
//calculated inflection point: 59.868... almost perfect!
Cách tiếp cận hiện tại của tôi cho một ước tính ràng buộc trên là y0 * y0 / y1. Bằng cách này, tôi hy vọng sẽ tính đến việc tôi có thể không phải lúc nào cũng có giá trị gần với mức tối đa.
cập nhật: Giá trị x và y sẽ không bao giờ âm. x sẽ luôn là {40, 45, 50, 55, 60, 65, 70} trừ khi mất điểm dữ liệu.
cập nhật: Tôi đã thực hiện nhiều, nhiều thử nghiệm với dữ liệu mô phỏng dễ phù hợp (tôi chọn các điểm dữ liệu chính xác trên đường cong = không có bất kỳ nhiễu nào) và tôi thấy rằng nó hoạt động tốt, trừ khi điểm dữ liệu thứ nhất hoặc thứ hai (trong đó x = 40 hoặc x = 45) bị thiếu. Tôi đoán tôi sẽ phải loại bỏ các phép đo như vậy và người dùng sẽ phải sống với điều đó.