Làm thế nào để ước tính một hướng trên cho hồi quy logistic chỉ bằng 5 đến 7 điểm dữ liệu?


11

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β3y=β11+exp(β2+β3x)β1β3β1

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.β1max1.1max1.5

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 đó.


Với số điểm nhỏ như vậy tôi nghĩ vấn đề thực sự của bạn là sự không chính xác của các ước tính chứ không phải cách bạn tính toán chúng.
Michael R. Chernick

1
Vấn đề với ví dụ cuối cùng là có được sự phù hợp tốt hơn nhiều bởi một hàm có dạng (chú ý dấu âm). Đó có phải là một giải pháp chấp nhận được? Nếu không, bạn sẽ tiếp tục gặp vấn đề, bởi vì bạn sẽ phải chấp nhận các giải pháp trên ranh giới giữa hai mô hình (và những mô hình đó là khủng khiếp). y=β11exp(β2+β3x))
whuber

@MichaelCécick Tôi đoán bạn đúng, vấn đề là tôi sẽ không bao giờ nhận được nhiều hơn 7 điểm dữ liệu. Tôi đoán tôi phải đá ra kết quả với ít hơn thế. Tôi đã thêm các trường hợp thử nghiệm với kết quả nên giống nhau. Có chỗ để cải thiện hay đây là lần gần nhất tôi có thể nhận được?
Verena Haunschmid

@whuber Tôi đã cố gắng khớp dữ liệu với dấu âm nhưng với mỗi bộ tham số tôi gặp lỗi ma trận độ dốc số ít (trong R). Những người ước tính bạn đã thực hiện? Tôi đã thêm thông tin về khu vực tôi sử dụng nó, để nhấn mạnh lý do tại sao đường cong phải nhìn theo cách đó. (Tôi không chắc chắn nếu công thức của bạn đáp ứng các yêu cầu này)
Verena Haunschmid

(1) Đơn vị nào là giá trị trong? Nếu những điều này có thể là tiêu cực, thì mô hình của bạn có thể sẽ không hoạt động. (2) Bạn có thể cho chúng tôi biết gì về bản chất của "nhiễu" hoặc lỗi trong các giá trị ? Điều này có thể rất quan trọng cho phù hợp. yy
whuber

Câu trả lời:


1

Tôi đã làm việc về một vấn đề tương tự vào đầu năm nay. Giải pháp mà tôi đã sử dụng dựa trên bài báo này , sử dụng đại số tuyến tính để loại bỏ , mức tối đa. Theo cách này, kết quả cho các tham số còn lại, sau khi được xác định thông qua một số quy trình (tôi chỉ đơn giản là giảm thiểu bề mặt lỗi, giống như trong bài viết), có thể được sử dụng để suy ra ở cuối.β1β1

Theo trực giác, giải pháp này dựa trên tiền đề rằng tất cả các đường cong logistic có cùng tham số vị trí và tốc độ đều giống nhau, do đó, đặt giới hạn trên chỉ có nghĩa là "kéo dài" đường cong sigmoidal đến mức tối đa thích hợp.

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.