मेरे पास डेटा है जो फॉर्म । से के अनुमान के लिए मैं इस पत्र के सूत्रों का उपयोग करता हूं: जॉन फॉक्स - रिग्रेशन और वर्ग । इस पत्र में, डेटा को देखकर अनुमान लगाया जाता है। अगर मैं ऐसा करता हूं तो यह ठीक काम करता है, भले ही मेरे पास केवल तीन बिंदु हों। उससे मैं दो अन्य की गणना कर सकता हूं। मैंने अपने मापदंडों को सी # में आर और लेवेनबर्गमार्क्वर्ड में nls () के साथ परीक्षण किया। उनके द्वारा लौटाए गए मॉडल संतोषजनक हैं। β1β3
समस्या यह है कि मैं एक अच्छा अनुमानक पाने के लिए डेटा को देखना नहीं चाहता हूँ , मैं चाहता हूं कि मेरा कार्यक्रम इसकी गणना करे। कुछ समय के लिए मैंने ऐसे मानों का उपयोग किया जो मेरे मूल्यों की अधिकतम सीमा से कुछ अधिक थे ( और \ max * 1.5 के बीच । यह तब तक ठीक काम करता था जब तक कि बिंदु अधिकांश फ़ंक्शन को कवर कर लेते हैं। यह भी ठीक काम करता है यदि यह ठीक है। डेटा पॉइंट कर्व के "टॉप" से कहीं थे, लेकिन जब वे सभी विभक्ति बिंदु "नीचे" क्षेत्र से आए थे, तो यह अनुमानक निश्चित रूप से कम होना चाहिए था और मुझे मॉडल फिट नहीं कर सका। अगर मैं कुछ का उपयोग करता हूं। यह निश्चित रूप से अधिकतम बिंदु से अधिक है (इसे हास्यास्पद रूप से उच्च मूल्यों के साथ गुणा करके) मॉडल किसी भी उपयोगी तरीके से फिट नहीं होता है।
माप इस तरह दिख सकते हैं:
x = (40, 50, 60, 70), y = (1000, 950, 400, 200) -> अनुमान लगाने में आसान
x = (40, 50, 60, 70), y = (1000, 950, 800, 100) -> अनुमान लगाने में आसान
x = (40, 50, 60, 70), y = (500, 200, 100, 50) -> अनुमान लगाना इतना आसान नहीं
मुझे लगता है कि मुझे पता चल सकता है कि मैं दिए गए बिंदुओं में डेल्टास की गणना करके फ़ंक्शन में ("नीचे", "शीर्ष पर" ढलान में) कहां हूं, और इसके आधार पर एक ऊपरी बाध्य गणना करें। क्या किसी के पास बेहतर समाधान के लिए कोई संकेत है? अतिरिक्त जानकारी: यदि ऐसा नहीं किया जा सकता है, तो मेरे लिए यह अधिक महत्वपूर्ण है कि जो माप फिट किए जा सकते हैं वे यथासंभव अच्छे हैं और मैं स्वीकार करता हूं कि कुछ मापों को बिल्कुल भी फिट नहीं किया जा सकता है।
(हालांकि मैं C # में एक कार्यान्वयन चाहता हूं, मैंने इसे यहां पोस्ट किया है, मुझे नहीं लगता कि समस्या भाषा पर निर्भर है)
अद्यतन (इसका आवेदन):
x तापमान मान und हैं जो संबंधित माप हैं। स्वभाव से यह दिया जाता है कि यह एक लॉजिस्टिक कर्व जैसा होना चाहिए जिसमें कम तापमान पर अधिक y मान हो और इसके विपरीत। पिघलने बिंदु वक्र के विभक्ति बिंदु के बराबर है, जो मॉडल मापदंडों के छोटे परिवर्तनों के साथ बहुत कुछ बदलता है।
अद्यतन (कुछ डेटा 7 डेटा बिंदुओं के साथ और 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!
एक ऊपरी बाध्य अनुमान के लिए मेरा वर्तमान दृष्टिकोण y0 * y0 / y1 है। इस तरह मुझे उम्मीद है कि मैं हमेशा अधिकतम मूल्य के करीब नहीं हो सकता हूं।
अद्यतन: x और y मान कभी भी नकारात्मक नहीं होंगे। x हमेशा {40, 45, 50, 55, 60, 65, 70} होगा जब तक कि एक डेटा बिंदु खो न जाए।
अद्यतन: मैंने कई किया, सिम्युलेटेड डेटा के साथ कई परीक्षण जो कि फिट करने के लिए आसान होना चाहिए (मैं ऐसे डेटा बिंदु चुनता हूं जो बिल्कुल वक्र = बिना किसी शोर के थे) और मैं देखता हूं कि यह ठीक काम करता है, जब तक कि पहले या दूसरे डेटा बिंदु (जहां नहीं x = 40 या x = 45) गायब है। मुझे लगता है कि मुझे इस तरह के मापों को त्यागना होगा और उपयोगकर्ता को उसी के साथ रहना होगा।