ढलान बाधा के साथ रैखिक प्रतिगमन


18

में एक बहुत ही सरल रैखिक प्रतिगमन करना चाहता हूँ R। सूत्र जितना ही सरल है । हालाँकि, मैं चाहूंगा कि ढलान ( ) एक अंतराल के अंदर हो, मान लें कि, 1.4 और 1.6 के बीच है।ay=ax+ba

यह कैसे किया जा सकता है?

जवाबों:


24

मैं प्रदर्शन करना चाहता हूं ... आर में रैखिक प्रतिगमन ... मैं चाहूंगा कि ढलान एक अंतराल के अंदर हो, चलो कहते हैं, 1.4 और 1.6 के बीच। यह कैसे किया जा सकता है?

(i) सरल तरीका:

  • प्रतिगमन फिट है। यदि यह सीमा में है, तो आप कर रहे हैं।

  • यदि यह सीमा में नहीं है, तो ढलान को निकटतम बाउंड पर सेट करें, और

  • के औसत के रूप अवरोधन का अनुमान सभी टिप्पणियों से अधिक।(y-एक्स)

(ii) अधिक जटिल तरीका: ढलान पर बॉक्स की कमी के साथ कम से कम वर्ग; कई optimizaton दिनचर्या बॉक्स की कमी को लागू करते हैं, जैसे nlminb(जो R के साथ आता है) करता है।

संपादित करें: वास्तव में (जैसा कि नीचे दिए गए उदाहरण में बताया गया है), वेनिला आर में, nlsबॉक्स की कमी कर सकते हैं; जैसा कि उदाहरण में दिखाया गया है, यह वास्तव में करना बहुत आसान है।

आप विवश प्रतिगमन का अधिक सीधे उपयोग कर सकते हैं; मुझे लगता pclsहै कि पैकेज "mgcv" से nnlsफ़ंक्शन और पैकेज "nnls" दोनों से फ़ंक्शन करता है।

-

अनुवर्ती प्रश्न का उत्तर देने के लिए संपादित करें -

मैं आपको यह दिखाने जा रहा हूं nlminbकि आर के साथ आने के बाद से इसका उपयोग कैसे किया जाए , लेकिन मैंने महसूस किया कि nlsपहले से ही विवश कम से कम वर्गों को लागू करने के लिए समान दिनचर्या (पोर्ट रूटीन) का उपयोग करता है, इसलिए नीचे मेरा उदाहरण उस मामले में है।

सबसे पहले, सीमा के अंदर 'सही' ढलान के साथ कुछ डेटा सेट करें:

 set.seed(seed=439812L)
 x=runif(35,10,30)
 y = 5.8 + 1.53*x + rnorm(35,s=5)  # population slope is in range
 plot(x,y)
 lm(y~x)

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept)            x  
     12.681        1.217  

... लेकिन एलएस अनुमान इसके बाहर अच्छी तरह से है, बस यादृच्छिक भिन्नता के कारण। तो विवश प्रतिगमन का उपयोग करने देता है nls:

 nls(y~a+b*x,algorithm="port",
   start=c(a=0,b=1.5),lower=c(a=-Inf,b=1.4),upper=c(a=Inf,b=1.6))

Nonlinear regression model
  model: y ~ a + b * x
   data: parent.frame()
    a     b 
9.019 1.400 
 residual sum-of-squares: 706.2

Algorithm "port", convergence message: both X-convergence and relative convergence (5)

जैसा कि आप देखते हैं, आपको सीमा पर एक ढलान मिलता है। यदि आप फिट किए गए मॉडल को पास करते हैं, तो summaryयह मानक त्रुटियों और टी-मूल्यों को भी पैदा करेगा लेकिन मुझे यकीन नहीं है कि ये कितने सार्थक / व्याख्यात्मक हैं।

y-एक्स

 b=1.4
 c(a=mean(y-x*b),b=b)
       a        b 
9.019376 1.400000

यह एक ही अनुमान है ...

नीचे दिए गए प्लॉट में, ब्लू लाइन कम से कम वर्ग है और रेड लाइन कम से कम चौकोर है:

विवश और एलएस लाइन


इस उत्तर के लिए धन्यवाद, लेकिन ... क्या आप इनमें से किसी भी फ़ंक्शन का उपयोग करके एक उदाहरण दे सकते हैं?
Iñigo Hernáez Corres

1
+1 पैरामीटर अनुमानों पर विश्वास अंतराल ढूंढना किसी भी घटना में एक चुनौती है।
whuber

@ IñigoHernáezCorres मेरे जवाब के अपडेट को देखता है, जहां मैं nlsइसे करने के लिए इसका उपयोग करता हूं।
Glen_b -Reinstate मोनिका

यह करने के दो तरीकों पर कनेक्शन के साथ +1 महान जवाब!
हैताओ डू

15

ग्लेन_ बी की दूसरी विधि, एक बॉक्स बाधा के साथ कम से कम वर्गों का उपयोग करके रिज रिग्रेशन के माध्यम से अधिक आसानी से लागू किया जा सकता है। रिज रिग्रेशन का समाधान वेट वेक्टर के मानदंड (और इसलिए इसके ढलान) के परिमाण के साथ एक प्रतिगमन के लिए लैग्रैनिज के रूप में देखा जा सकता है। तो नीचे दिए गए व्हीलर के सुझाव के बाद, दृष्टिकोण (1.6 + 1.4) / 2 = 1.5 की प्रवृत्ति को घटाना होगा और फिर रिज प्रतिगमन लागू करना होगा और धीरे-धीरे रिज पैरामीटर को बढ़ाना होगा जब तक कि ढलान का परिमाण 0.1 से कम या बराबर नहीं होता है।

इस दृष्टिकोण का लाभ यह है कि किसी भी फैंसी ऑप्टिमाइज़ेशन टूल की आवश्यकता नहीं है, बस रिज रेग्रेसन, जो पहले से ही आर (और कई अन्य पैकेज) में उपलब्ध है।

हालाँकि Glen_b का सरल समाधान (i) मुझे समझ में आता है (+1)


5
यह चतुर है, लेकिन क्या आप सुनिश्चित हैं कि यह वर्णित के रूप में काम करेगा? ऐसा लगता है कि उपयुक्त दृष्टिकोण (1.6 + 1.4) / 2 = 1.5 की प्रवृत्ति को दूर करने और फिर ढलान के निरपेक्ष मान 0.1 के बराबर या कम होने तक रिज पैरामीटर को नियंत्रित करने के लिए होगा।
whuber

1
हाँ, यह वास्तव में एक बेहतर सुझाव है। रिज प्रतिगमन दृष्टिकोण वास्तव में अधिक उपयुक्त है यदि प्रतिबंध ढलान की भयावहता पर है, तो यह एक बहुत ही अजीब समस्या की तरह लगता है! मेरा जवाब मूल रूप से बॉक्स की बाधाओं पर Glen_b की टिप्पणी से प्रेरित था, रिज प्रतिगमन मूल रूप से बॉक्स बाधाओं को लागू करने का एक आसान तरीका है।
डिक्रान मार्सुपियल

यद्यपि मैं आपकी टिप्पणियों की स्वीकृति की सराहना करता हूं, लेकिन यह आपके उत्तर की सामग्री से विचलित करता है। हम जहाँ भी हम कर सकते हैं, अपने काम को बेहतर बनाने के लिए एक साथ हैं, इसलिए यह पर्याप्त सुझाव है कि आपने मेरे सुझावों पर काम किया है। उसके लिए आप प्रतिष्ठा में वृद्धि के पात्र हैं। यदि आपको अतिरिक्त संपादन करने के लिए स्थानांतरित किया जाता है, तो कृपया उस शानदार सामग्री को हटाकर पाठ को सुव्यवस्थित करने पर विचार करें।
whuber

सुपरफ्लस सामग्री का संपादन किया गया है, हालाँकि मैं सहयोग का आनंद लेता हूं और हमेशा सहयोगियों को वह क्रेडिट देना चाहता हूं जिसके वे हकदार हैं, और फिर भी नैतिक रूप से सोचते हैं कि आप आधे वोट के लायक हैं। ; ओ)
डिक्रान मार्सुपियल

10

एक और तरीका यह होगा कि रेजिमेंट को फिट करने और पूर्व वितरण को चुनने के लिए बायेसियन विधियों का उपयोग किया जाए

वेब पर और रिग्रेशन के लिए बायेसियन तरीकों का उपयोग करने के सॉफ्टवेयर में कई उदाहरण हैं, आप बस उन उदाहरणों में से एक का पालन कर सकते हैं और आगे चल सकते हैं

यह परिणाम अभी भी ब्याज के मापदंडों का विश्वसनीय अंतराल देगा (निश्चित रूप से इन अंतरालों की सार्थकता ढलान के बारे में आपकी पूर्व सूचना के तर्क पर आधारित होगी)।


+1, यह मेरा पहला विचार था। मुझे अन्य सुझाव पसंद हैं, लेकिन यह मुझे सबसे अच्छा लगता है।
गूँग - मोनिका

0

एक और दृष्टिकोण एक अनुकूलन समस्या के रूप में अपने प्रतिगमन को सुधारने और एक अनुकूलक का उपयोग करने के लिए हो सकता है। मुझे यकीन नहीं है कि यह इस तरह से सुधार किया जा सकता है, लेकिन मैंने इस सवाल के बारे में सोचा जब मैंने आर ऑप्टिमाइज़र पर इस ब्लॉग पोस्टिंग को पढ़ा:

http://zoonek.free.fr/blosxom/R/2012-06-01_Optimization.html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.