इस तरीके को हम मैन्युअल रूप से फिट करने के लिए उपयोग करेंगे (अर्थात, डेटा विश्लेषण का) इस तरह के डेटा के साथ उल्लेखनीय रूप से काम कर सकते हैं।
मैं अपने मापदंडों को सकारात्मक बनाने के लिए मॉडल को थोड़ा नया करना चाहता हूं :
y=ax−b/x−−√.
किसी दिए गए , मान लें कि इस समीकरण को संतुष्ट करने वाला एक अनूठा वास्तविक है; इस या, संक्षिप्तता के लिए कॉल करें , जब समझे जाते हैं।yxf(y;a,b)f(y)(a,b)
हम आदेश दिया जोड़े का एक संग्रह का निरीक्षण जहां से विचलित शून्य साधनों के साथ स्वतंत्र यादृच्छिक variates द्वारा। इस चर्चा में मैं मान लूंगा कि इन सभी में एक सामान्य विचलन है, लेकिन इन परिणामों का एक विस्तार (भारित वर्ग का उपयोग करके) संभव है, स्पष्ट है, और इसे लागू करना आसान है। मानों के इस तरह के संग्रह का एक अनुकरणीय उदाहरण यहां , और एक सामान्य संस्करण के साथ दिया गया है ।(xi,yi)xif(yi;a,b)100a=0.0001b=0.1σ2=4
यह एक (जानबूझकर) कठिन उदाहरण है, जैसा कि गैर-व्यावहारिक (नकारात्मक) मानों और उनके असाधारण प्रसार (जो आमतौर पर क्षैतिज इकाई है, लेकिन अक्ष पर या तक हो सकता है ) द्वारा सराहना की जा सकती है । अगर हम इन डेटा के लिए एक उचित फिट प्राप्त कर सकते हैं, जो कि , , और का अनुमान लगाने के करीब कहीं भी आता है, तो हमने वास्तव में अच्छा किया है।x±2 56xabσ2
एक खोजपूर्ण फिटिंग पुनरावृत्त है। प्रत्येक चरण में दो चरण होते हैं: का अनुमान (डेटा के आधार पर और पिछले अनुमान और का और , जिसमें से पिछले भविष्यवाणी मूल्यों के लिए प्राप्त किया जा सकता ) और फिर अनुमान । क्योंकि त्रुटियां x में हैं , फिट का अनुमान से , बजाय अन्य तरीके के। पहले त्रुटियों में , जब पर्याप्त रूप से बड़ा हो,aa^b^abx^ixibxi(yi)xx
xi≈1a(yi+b^x^i−−√).
इसलिए, हम अद्यतन कर सकते हैं कम से कम वर्गों के साथ इस मॉडल फिटिंग से (नोटिस यह केवल एक पैरामीटर है - एक ढलान, --और कोई अवरोधन) और के अद्यतन अनुमान के रूप में गुणांक के पारस्परिक लेने ।a^aa
अगला, जब पर्याप्त रूप से छोटा होता है, उलटा द्विघात शब्द हावी हो जाता है और हम पाते हैं (त्रुटियों में पहले के क्रम में फिर से)x
xi≈b21−2a^b^x^3/2y2i.
एक बार फिर कम से कम वर्गों (केवल एक ढलान अवधि ) का उपयोग करके हम फिट किए गए ढलान के वर्गमूल के माध्यम से एक अद्यतन अनुमान प्राप्त करते हैं।bb^
यह देखने के लिए कि यह क्यों काम करता है, इस फिट के लिए एक क्रूड एक्सप्लोसिटरी अनुमान छोटे लिए खिलाफ साजिश प्राप्त किया जा सकता है । अभी तक बेहतर है, क्योंकि को त्रुटि के साथ मापा जाता है और साथ एक- बदल देता है , हमें के बड़े मूल्यों के साथ डेटा पर ध्यान देना चाहिए । यहाँ हमारे सिम्युलेटेड डाटासेट से एक उदाहरण है जो लाल रंग में का सबसे बड़ा आधा भाग दिखा रहा है , जो नीले रंग में सबसे छोटा आधा है, और मूल के माध्यम से एक रेखा लाल बिंदुओं पर फिट होती है।xi1/y2ixixiyixi1/y2iyi
अंक लगभग पंक्तिबद्ध होते हैं, हालांकि और के छोटे मानों में थोड़ा वक्रता होती है । ( एक्सिस की पसंद पर ध्यान दें: क्योंकि माप है, यह ऊर्ध्वाधर अक्ष पर प्लॉट करने के लिए पारंपरिक है ।) फिट को लाल बिंदुओं पर केंद्रित करके, जहां वक्रता न्यूनतम होनी चाहिए, हमें का उचित अनुमान प्राप्त करना चाहिए । शीर्षक में दिखाया गया का मान इस रेखा के ढलान का वर्गमूल है: यह सही मूल्य से केवल % कम है!xyxb0.0964
इस बिंदु पर अनुमानित मानों को अपडेट किया जा सकता है
x^i=f(yi;a^,b^).
तब तक Iterate करें जब तक कि अनुमान स्थिर न हो जाए (जिसकी गारंटी नहीं है) या वे मानों की छोटी श्रृंखलाओं के माध्यम से चक्र करते हैं (जो अभी भी गारंटी नहीं दे सकते हैं)।
ऐसा लगता है कि अनुमान लगाने के लिए जब तक कि हम में से बहुत बड़ी मूल्यों का एक अच्छा सेट है मुश्किल है , लेकिन वह --which मूल कथानक में खड़ी अनंतस्पर्शी निर्धारित करता है (प्रश्न में) और question-- का ध्यान केंद्रित है काफी सटीक रूप से नीचे पिन किया जा सकता है, बशर्ते ऊर्ध्वाधर असममित के भीतर कुछ डेटा हो। हमारे चल रहे उदाहरण में, पुनरावृत्तियाँ (जो के सही मूल्य से लगभग दोगुना है ) और (जो कि के सही मूल्य के करीब है करते हैं । यह प्लॉट डेटा को एक बार फिर दिखाता है, जिसके आधार पर (a) सही हैaxba^=0.0001960.0001b^=0.10730.1ग्रे में धराशायी (धराशायी) और (बी) लाल (ठोस) में अनुमानित वक्र:
यह फिट इतना अच्छा है कि फिट किए गए वक्र से असली वक्र को भेदना मुश्किल है: वे लगभग हर जगह ओवरलैप करते हैं। संयोग से, की अनुमानित त्रुटि भिन्नता के वास्तविक मूल्य के बहुत करीब है ।3.734
इस दृष्टिकोण के साथ कुछ समस्याएं हैं:
अनुमान पक्षपाती हैं। पूर्वाग्रह तब स्पष्ट हो जाता है जब डेटासेट छोटा होता है और अपेक्षाकृत कुछ मान x- अक्ष के करीब होते हैं। फिट व्यवस्थित रूप से थोड़ा कम है।
आकलन प्रक्रिया को "छोटे" मूल्यों से "बड़ा" बताने के लिए एक विधि की आवश्यकता होती है । मैं इष्टतम परिभाषाओं की पहचान करने के लिए खोजपूर्ण तरीके प्रस्तावित कर सकता हूं, लेकिन एक व्यावहारिक मामले के रूप में आप इन्हें "ट्यूनिंग" स्थिरांक के रूप में छोड़ सकते हैं और परिणामों की संवेदनशीलता की जांच करने के लिए बदल सकते हैं। मैंने उन्हें के मान के अनुसार तीन समान समूहों में डेटा को विभाजित करके और दो बाहरी समूहों का उपयोग करके मनमाने ढंग से सेट किया है ।yiyi
प्रक्रिया के सभी संभव संयोजनों के लिए काम नहीं करेगा और या डेटा के सभी संभव पर्वतमाला। हालाँकि, जब भी पर्याप्त वक्र दोनों उपमाओं को प्रतिबिंबित करने के लिए डेटासेट में दर्शाया जाता है, तो यह अच्छी तरह से काम करना चाहिए: एक छोर पर लंबवत एक और दूसरे छोर पर एक तिरछा।ab
कोड
गणित में निम्नलिखित लिखा है ।
estimate[{a_, b_, xHat_}, {x_, y_}] :=
Module[{n = Length[x], k0, k1, yLarge, xLarge, xHatLarge, ySmall,
xSmall, xHatSmall, a1, b1, xHat1, u, fr},
fr[y_, {a_, b_}] := Root[-b^2 + y^2 #1 - 2 a y #1^2 + a^2 #1^3 &, 1];
k0 = Floor[1 n/3]; k1 = Ceiling[2 n/3];(* The tuning constants *)
yLarge = y[[k1 + 1 ;;]]; xLarge = x[[k1 + 1 ;;]]; xHatLarge = xHat[[k1 + 1 ;;]];
ySmall = y[[;; k0]]; xSmall = x[[;; k0]]; xHatSmall = xHat[[;; k0]];
a1 = 1/
Last[LinearModelFit[{yLarge + b/Sqrt[xHatLarge],
xLarge}\[Transpose], u, u]["BestFitParameters"]];
b1 = Sqrt[
Last[LinearModelFit[{(1 - 2 a1 b xHatSmall^(3/2)) / ySmall^2,
xSmall}\[Transpose], u, u]["BestFitParameters"]]];
xHat1 = fr[#, {a1, b1}] & /@ y;
{a1, b1, xHat1}
];
डेटा तक इसे लागू करें (समानांतर वैक्टर द्वारा x
और y
दो-स्तंभ मैट्रिक्स में गठित data = {x,y}
) अभिसरण तक अनुमानों के साथ शुरू होता है :a=b=0
{a, b, xHat} = NestWhile[estimate[##, data] &, {0, 0, data[[1]]},
Norm[Most[#1] - Most[#2]] >= 0.001 &, 2, 100]