रैखिक प्रतिगमन निष्पादित करें, लेकिन कुछ विशेष डेटा बिंदुओं के माध्यम से जाने के लिए समाधान को मजबूर करें


14

मुझे पता है कि बिंदुओं के एक सेट पर एक रेखीय प्रतिगमन कैसे करें। यही है, मुझे पता है कि मेरी पसंद के बहुपद को किसी दिए गए डेटा सेट (एलएसई अर्थ में) में कैसे फिट किया जाए। हालांकि, जो मुझे नहीं पता है, वह यह है कि अपने समाधान को मेरे चयन के कुछ विशेष बिंदुओं से गुजरने के लिए कैसे मजबूर किया जाए। मैंने इसे पहले भी देखा है, लेकिन मुझे याद नहीं है कि इस प्रक्रिया को क्या कहा जाता है, अकेले चलो यह कैसे किया गया था।

एक बहुत ही सरल और ठोस उदाहरण के रूप में, हम कहते हैं कि मेरे पास एक्स प्लेन पर बिखरे हुए 100 बिंदु हैं, और मैं उनके माध्यम से जो भी आदेश बहुपद फिट करने के लिए चुनता हूं। मुझे पता है कि इस रैखिक प्रतिगमन को बहुत अच्छी तरह से कैसे करना है। हालाँकि, हम कहते हैं कि मैं अपने समाधान को 'मजबूर' करना चाहता हूं, एक्स-निर्देशांक , , , और , और उनके संगत y- निर्देशांक पर मेरे तीन डेटा बिंदुओं को जाना। बेशक)।x = 19 x = 89x=3x=19x=89

इस सामान्य प्रक्रिया को क्या कहा जाता है, यह कैसे किया जाता है, और क्या मुझे कोई विशेष जानकारी होनी चाहिए?

संपादित करें:

मैं जोड़ना चाहूंगा, कि मैं ऐसा करने के लिए एक ठोस रास्ता तलाश रहा हूं। मैंने एक प्रोग्राम लिखा है जो वास्तव में दो तरीकों में से एक में रैखिक प्रतिगमन करता है, सीधे सहसंयोजक मैट्रिक्स में प्रवेश करता है, या ढाल वंश के माध्यम से। मैं जो पूछ रहा हूं वह है, कैसे, बिल्कुल, कदम से कदम, क्या मैंने जो कुछ किया, उसे संशोधित करता हूं, जैसे कि मैं बहुपदीय समाधान को विशिष्ट बिंदुओं से गुजरने के लिए मजबूर करता हूं?

धन्यवाद!


यदि आप एक बहुपद का उपयोग कर रहे हैं तो आप इसे "रैखिक" क्यों कहते हैं? आप जिस भी बिंदु से गुजरना चाहते हैं, वह एक बाधा है जो आपकी स्वतंत्रता की डिग्री को कम करेगा। फिर आप एक विवश अनुकूलन एल्गोरिथ्म का उपयोग कर सकते हैं।
जिज्ञासु_काट

4
यह रैखिक है क्योंकि आप एक रैखिक संयोजन के लिए सह-गुणक पा रहे हैं । उदाहरण के लिए, यदि आप अपना डेटा किसी क्यूबिक में फिट करना चाहते हैं, तो आप सह-गुणांक ( 's) । cy=c0+c1x+c2x2+c3x3
स्पेसी

1
@ मोहम्मद: आप जो चाहते हैं उसका एक और तरीका है कि आप कम से कम वर्ग के हल का उपयोग करें, और उन बिंदुओं को बहुत बड़ा भार दें जिन्हें आप चाहते हैं कि प्रतिगमन रेखा गुजरती रहे। यह समाधान को आपके द्वारा चुने गए बिंदुओं के बहुत करीब से पारित करने के लिए मजबूर करना चाहिए।
जेसन आर

@JasonR आपको यहाँ देखने के लिए अच्छा है। हाँ WLS वास्तव में एक दिलचस्प दावेदार है। मैं चतुर बहुपद कारक के कारण उत्तर के साथ चला गया हूं, और क्योंकि यह त्रुटि संरचना को अच्छी तरह से बनाए रखता है।
स्पेसी

जवाबों:


19

प्रश्न में मॉडल लिखा जा सकता है

y=p(x)+(xx1)(xxd)(β0+β1x++βpxp)+ε

जहाँ पूर्व निर्धारित बिंदुओं और माध्यम से डिग्री का बहुपद है। (प्रयोग Lagrange बहुपद interpolating ।) लेखन इस मॉडल के रूप में फिर से लिखने करने की अनुमति देताp(xi)=yid1(x1,y1),,(xd,yd)ε(xx1)(xxd)=r(x)

yp(x)=β0r(x)+β1r(x)x+β2r(x)x2++βpr(x)xp+ε,

जो कि मूल चर के रूप में एक ही त्रुटि संरचना के साथ एक मानक OLS एकाधिक प्रतिगमन समस्या है जहाँ स्वतंत्र चर मात्राएँ । बस इन चरों की गणना करें और अपने परिचित प्रतिगमन सॉफ़्टवेयर को चलाएं , जिससे यह सुनिश्चित हो सके कि इसे एक स्थिर अवधि सहित रोका जा सके। एक निरंतर अवधि के बिना प्रतिगमन के बारे में सामान्य गुहिकायन लागू होते हैं; विशेष रूप से, कृत्रिम रूप से उच्च हो सकता है; सामान्य व्याख्याएं लागू नहीं होती हैं।p+1r(x)xi, i=0,1,,pR2

(वास्तव में, उत्पत्ति के माध्यम से प्रतिगमन इस निर्माण का एक विशेष मामला है जहां , , और , ताकि मॉडल )( x 1 , y 1 ) = ( 0 , 0 ) p ( x ) = 0 y = β 0 x + β + p x p + 1 + ε d=1(x1,y1)=(0,0)p(x)=0y=β0x++βpxp+1+ε.


यहाँ एक उदाहरण दिया गया है (में R)

# Generate some data that *do* pass through three points (up to random error).
x <- 1:24
f <- function(x) ( (x-2)*(x-12) + (x-2)*(x-23) + (x-12)*(x-23) )  / 100
y0 <-(x-2) * (x-12) * (x-23) * (1 + x - (x/24)^2) / 10^4  + f(x)
set.seed(17)
eps <- rnorm(length(y0), mean=0, 1/2)
y <- y0 + eps
data <- data.frame(x,y)

# Plot the data and the three special points.
plot(data)
points(cbind(c(2,12,23), f(c(2,12,23))), pch=19, col="Red", cex=1.5)

# For comparison, conduct unconstrained polynomial regression
data$x2 <- x^2
data$x3 <- x^3
data$x4 <- x^4

fit0 <- lm(y ~ x + x2 + x3 + x4, data=data)
lines(predict(fit0), lty=2, lwd=2)

# Conduct the constrained regressions
data$y1 <- y - f(x)
data$r <- (x-2)*(x-12)*(x-23)
data$z0 <- data$r
data$z1 <- data$r * x
data$z2 <- data$r * x^2

fit <- lm(y1 ~ z0 + z1 + z2 - 1, data=data)
lines(predict(fit) + f(x), col="Red", lwd=2)

भूखंड

तीन निश्चित बिंदुओं को ठोस लाल में दिखाया गया है - वे डेटा का हिस्सा नहीं हैं। असंबंधित चौथा-क्रम बहुपद कम से कम वर्ग फिट एक काले बिंदीदार रेखा के साथ दिखाया गया है (इसमें पांच पैरामीटर हैं); विवश फिट (आदेश पाँच का, लेकिन केवल तीन मुक्त मापदंडों के साथ) लाल रेखा के साथ दिखाया गया है।

कम से कम वर्गों के उत्पादन का निरीक्षण ( summary(fit0)और summary(fit)) शिक्षाप्रद हो सकता है - मैं इसे इच्छुक पाठक को छोड़ देता हूं।


Whuber, यह दिलचस्प है ... मैं झूठ बोलूंगा अगर मैंने कहा कि मैं इसे अभी तक पूरी तरह से समझा हूं, लेकिन हम इसे बोलते हुए पचा रहे हैं। अगर मैं सही तरीके से समझूं, तो मैं मूल रूप से s के लिए हमेशा की तरह हल कर रहा हूं , लेकिन उन्हें गुणा किया जा रहा है , बजाय के पहले जैसा, हाँ? यदि यह सही है, तो आप गणना कैसे कर रहे हैं? धन्यवाद। r ( x ) x i x i r ( x )βr(x)xixir(x)
स्पेसी

मैंने एक काम किया उदाहरण मोहम्मद जोड़ा है।
whuber

ओह, बिल्कुल सही। मैं इसका अध्ययन करूंगा। अपने उदाहरण का उपयोग करना, फिर भी पॉली को उन बिंदुओं से गुजरने के लिए मजबूर करना संभव होगा जो डेटा का हिस्सा हैं , हालांकि?
स्पेसी

बिल्कुल जो किया जा सकता है: लेकिन पी-मूल्यों या किसी अन्य आंकड़ों की व्याख्या करने के बारे में दोगुना सतर्क रहें, क्योंकि अब आपकी बाधाएं स्वयं डेटा पर आधारित हैं।
व्हीबर

आपकी पोस्ट मुझे कल रात को मिली थी। मैंने खुद को LIP सिखाया। (LIP दिलचस्प है। यह एक फूरियर अपघटन की तरह है लेकिन ध्रुवों के साथ है)।
स्पेसी

9

यदि आप किसी एकल बिंदु से गुजरने के लिए प्रतिगमन रेखा को बाध्य करना चाहते हैं, तो इसे एक गोल चक्कर के रूप में किया जा सकता है। मान लीजिए कि आपकी बात । आप मूल के रूप में उस बिंदु के साथ अपने डेटा को फिर से केंद्र में रखते हैं। यही है, आप हर से , और हर से । अब बिंदु समन्वय विमान के मूल में है। तब आप बस अवरोधन को दबाते हुए एक प्रतिगमन रेखा को फिट करते हैं (अवरोधन को (0,0) करने के लिए मजबूर करते हैं। क्योंकि यह एक रैखिक परिवर्तन है, आप आसानी से सब कुछ बाद में बदल सकते हैं) यदि आप चाहते हैं। x i x y i y(xi,yi)xixyiy

यदि आप XY विमान में दो बिंदुओं के माध्यम से जाने के लिए एक पंक्ति को बाध्य करना चाहते हैं, तो यह करना बहुत आसान है। किसी भी दो बिंदुओं को एक रेखा के साथ फिट किया जा सकता है। आप अपनी ढलान की गणना करने के लिए बिंदु-ढलान सूत्र का उपयोग कर सकते हैं , और फिर अवरोधन खोजने के लिए एक बिंदु, ढलान और एक पंक्ति के समीकरण का उपयोग कर सकते हैं।

ध्यान दें कि एक समन्वय विमान में तीन बिंदुओं के माध्यम से एक सीधी रेखा को फिट करना संभव नहीं हो सकता है। हालांकि, हम गारंटी दे सकते हैं कि वे पूरी तरह से एक परबोला (यानी और दोनों का उपयोग करके ) के साथ फिट हो सकते हैं । इसके लिए बीजगणित भी है, लेकिन जैसे-जैसे हम बढ़ते हैं, यह डेटा के साथ एक मॉडल को फिट करने के लिए आसान हो सकता है जिसमें डेटासेट में केवल तीन (अधिक) अंक शामिल हैं। इसी तरह, आप उस सीधी रेखा को प्राप्त कर सकते हैं जो उन तीन बिंदुओं को एक मॉडल को फिट करके सबसे अच्छा लगाती है जिनकी पहुंच केवल उन तीन बिंदुओं तक होती है। एक्स 2XX2


मैं इस बिंदु पर उल्लेख करने के लिए मजबूर महसूस करता हूं, हालांकि, यह करने के लिए एक महान बात नहीं हो सकती है (जब तक कि आपका सिद्धांत ऐसा करने के लिए बहुत ठोस कारण प्रदान नहीं करता है)। आप बायेसियन रिग्रेशन पर भी गौर कर सकते हैं, जहां आप अपने मॉडल को अपने डेटा में जानकारी का सबसे अच्छा संयोजन और कुछ पूर्व सूचनाओं का उपयोग करने की अनुमति दे सकते हैं (जो आप शून्य के प्रति अपने अवरोधन का दृढ़ता से उपयोग कर सकते हैं, उदाहरण के लिए, बिना काफी इसे मजबूर करना)।


1
गूंग, आपके उत्तर के लिए धन्यवाद। मैंने अपने प्रश्न को थोड़ा संशोधित किया है। मैं बायेसियन रिग्रेशन के बारे में नहीं जानता था, लेकिन इस पर एक नज़र डालूंगा। मुझे डर है कि मैं पूरी तरह से समझ नहीं पा रहा हूं कि, एक एल्गोरिदम के दृष्टिकोण से, एक बिंदु और आपके द्वारा उल्लिखित दो बिंदु वाले मामले से कैसे। विशेष रूप से, एक बिंदु के लिए, मैं ब्लॉक से पहले और बाद में प्रत्येक बिंदु पर और को हटाने और फिर से जोड़ना समझता हूं, लेकिन मुझे यह समझ में नहीं आता है कि वास्तव में उस ब्लॉक को कैसे किया जाए। 2-बिंदु मामले के लिए, मुझे डर है कि मुझे समझ नहीं आ रहा है कि वहां क्या करना है। धन्यवाद। y ixiyi
स्पेसी

2
यद्यपि तीन और बिंदुओं में फेंकने और उन्हें ( एक ला ग्लेन_ बी के उत्तर) को फेंकने से ऐसा फिट हो सकता है, किसी भी सांख्यिकीय आउटपुट की व्याख्या करना समस्याग्रस्त होगा: कुछ समायोजन की आवश्यकता होगी।
whuber

6

@ Gung के रैखिक मामले की उत्कृष्ट कवरेज के लिए थोड़ी अतिरिक्त जानकारी जोड़ने के लिए, उच्च क्रम बहुपद मामले में ऐसे कई तरीके हैं जिनसे आप इसे या तो बिल्कुल कर सकते हैं या लगभग (लेकिन बहुत ही सटीक रूप से आपकी आवश्यकता के अनुसार)।

सबसे पहले, ध्यान दें कि बहुपद (या वास्तव में किसी भी फ़ंक्शन के लिए) की स्वतंत्रता की डिग्री कम से कम "ज्ञात" बिंदुओं की संख्या के रूप में बड़ी होनी चाहिए। यदि स्वतंत्रता की डिग्री बराबर है, तो आपको डेटा की आवश्यकता नहीं है, क्योंकि वक्र पूरी तरह से निर्धारित है। यदि अधिक 'ज्ञात' बिंदु हैं, तो आप इसे हल नहीं कर सकते हैं (जब तक कि वे सभी निर्दिष्ट डिग्री के बिल्कुल समान बहुपद पर झूठ न हों, जिस स्थिति में कोई भी उपयुक्त आकार का सबसेट पर्याप्त होगा)। यहाँ से, मैं सिर्फ इस बारे में बात करूँगा कि जब बहुपद ज्ञात बिंदुओं की तुलना में अधिक df है (जैसे कि एक घन - 4df - और तीन ज्ञात बिंदुओं के साथ, ताकि घन ज्ञात बिंदुओं से न तो अधिकता हो और न ही पूरी तरह से उनके द्वारा निर्धारित हो) ।

1) "वक्र को इस बिंदु से गुजरना चाहिए" मापदंडों पर एक रैखिक बाधा है, जिसके परिणामस्वरूप विवश अनुमान या विवश कम से कम वर्ग हैं (हालांकि दोनों शर्तें रैखिक बाधाओं की तुलना में अन्य चीजों को शामिल कर सकती हैं, जैसे सकारात्मकता की कमी)। आप या तो रैखिक बाधाओं को शामिल कर सकते हैं

  (ए) पैरामीटर को आवर्तक रूप से पुन: व्यवस्थित करने के लिए प्रत्येक बाधा को शामिल किया जाता है, जिसके परिणामस्वरूप एक निचला क्रम मॉडल होता है।

  (b) मानक साधनों का उपयोग करके जो कम से कम वर्ग फिट के मापदंडों पर रैखिक बाधाओं को शामिल कर सकते हैं। (आमतौर पर उपरोक्त लिंक पर दिए गए फॉर्मूले की तरह कुछ के माध्यम से)

2) एक और तरीका भारित प्रतिगमन के माध्यम से है। यदि आप ज्ञात बिंदुओं को पर्याप्त रूप से बड़ा भार देते हैं, तो आप अनिवार्य रूप से उसी (1) में फिट हो सकते हैं। यह अक्सर आसानी से लागू किया जाता है, पुनर्संरचना की तुलना में बहुत जल्दी हो सकता है, और उन पैकेजों में किया जा सकता है जो विवश फिटिंग की पेशकश नहीं करते हैं।

सभी @ गंग के कैविएट लागू होते हैं


Glen_b, मैंने भारित प्रतिगमन पर विचार नहीं किया था। यह इसके बारे में जाने का तरीका हो सकता है। मैंने इसे अपनी सूची में डाल दिया है। मेरा मानना ​​है कि मैं खुद को सिखा सकता हूं कि बिना घटना के। (1) के बारे में, क्या आप पुनर्मुद्रीकरण के इस पहलू पर विस्तार कर सकते हैं? इसके अलावा, आप ऐसा क्या कहते हैं जो मैं करने की कोशिश कर रहा हूं, जहां मैं कुछ बिंदुओं से गुजरने के लिए बहुपद को मजबूर करता हूं? समस्या का हिस्सा यह है कि मुझे नहीं पता कि इसके लिए क्या करना है। अगर मुझे पता है कि यह क्या कहा जाता है, तो मैं ऑनलाइन सामग्री के साथ आप जो भी कह रहा हूं उसे बढ़ाने में सक्षम हो सकता है। धन्यवाद।
स्पेसी

मेरे संपादन ऊपर देखें, जिसमें कुछ खोज शब्द और कुछ और विवरणों के साथ एक लिंक शामिल है।
Glen_b -Reinstate मोनिका

2
+1 भारित प्रतिगमन एक अच्छा विचार है। आउटपुट आंकड़ों के कुछ समायोजन, जैसे कि आरएमएस त्रुटि के अनुमान, की आवश्यकता हो सकती है।
whuber

@whuber +1 वास्तव में, यदि आंकड़े (जैसे , , ... std त्रुटियां आदि) केवल इरादा से संबंधित नहीं हैं- "ज्ञात" अंक (जो संभवतः एक व्यक्ति चाहेगा), पैरामीटर के अनुमानों और फिट किए गए मूल्यों से अलग, बाहर आने वाले कच्चे आँकड़े लगभग सभी गलत होंगे। मैंने मूल रूप से उस से संबंधित एक वाक्य टाइप किया था, लेकिन मुझे लगता है कि इसे पोस्ट करने से पहले हटा दिया गया था; इसका उल्लेख करना महत्वपूर्ण है। एफ आर 2s2FR2
Glen_b -Reinstate मोनिका

आपके उत्तर के लिए धन्यवाद Glen_b, हालाँकि मैंने @whuber को स्वीकार कर लिया है, फिर भी मैंने आपसे बहुत कुछ सीखा है।
स्पेसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.