एक घातीय फिट के वर्गों के अवशिष्ट योग को कैसे कम करें?


14

मेरे पास निम्न डेटा है और इसके लिए एक नकारात्मक घातीय वृद्धि मॉडल फिट करना चाहता हूं:

Days <- c( 1,5,12,16,22,27,36,43)
Emissions <- c( 936.76, 1458.68, 1787.23, 1840.04, 1928.97, 1963.63, 1965.37, 1985.71)
plot(Days, Emissions)
fit <- nls(Emissions ~ a* (1-exp(-b*Days)), start = list(a = 2000, b = 0.55))
curve((y = 1882 * (1 - exp(-0.5108*x))), from = 0, to =45, add = T, col = "green", lwd = 4)

कोड काम कर रहा है और एक फिटिंग लाइन प्लॉट की गई है। हालांकि, फिट नेत्रहीन आदर्श नहीं है, और वर्गों का अवशिष्ट योग काफी बड़ा (147073) है।

हम अपने फिट को कैसे सुधार सकते हैं? क्या डेटा एक बेहतर फिट की अनुमति देता है?

हम नेट पर इस चुनौती का हल नहीं ढूंढ सके। अन्य वेबसाइटों / पदों के लिए किसी भी प्रत्यक्ष सहायता या लिंकेज की बहुत सराहना की जाती है।


1
इस मामले में, यदि आप एक प्रतिगमन मॉडल पर विचार , जहां ε मैं ~ एन ( 0 , σ ) , तो आप समान आकलनकर्ता प्राप्त करते हैं। विश्वास क्षेत्रों की साजिश रचने से, कोई यह देख सकता है कि ये मूल्य विश्वास क्षेत्रों में कैसे निहित हैं। जब तक आप अंकों को प्रक्षेपित नहीं करते हैं या अधिक लचीले नॉनलाइन मॉडल का उपयोग नहीं करते हैं, तब तक आप एक सही फिट की उम्मीद नहीं कर सकते। Emissionsi=f(Daysi,a,b)+ϵiϵiN(0,σ)

मैंने शीर्षक बदल दिया क्योंकि "नकारात्मक घातीय मॉडल" का अर्थ है प्रश्न में वर्णित से कुछ अलग।
whuber

प्रश्न को स्पष्ट करने के लिए धन्यवाद (@whuber) और आपके उत्तर के लिए धन्यवाद (@Procrastinator)। मैं विश्वास क्षेत्रों की गणना और साजिश कैसे कर सकता हूं। और, क्या एक अधिक लचीला nonlinear मॉडल होगा?
स्त्रोमी

4
आपको एक अतिरिक्त पैरामीटर की आवश्यकता है। देखें क्या के साथ होता है fit <- nls(Emissions ~ a* (1- u*exp(-b*Days)), start = list(a = 2000, b = 0.1, u=.5)); beta <- coefficients(fit); curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T)
whuber

1
@whuber - शायद आपको जवाब के रूप में पोस्ट करना चाहिए?
जूलमैन

जवाबों:


16

A (ऋणात्मक) घातीय कानून रूप लेता है । जब आप x और y मानों में इकाइयों के परिवर्तन की अनुमति देते हैं, हालांकि, y = α y + β से कहेंy=exp(x)xyy=αy+β और , तो कानून के रूप में व्यक्त किया जाएगाx=γx+δ

αy+β=y=exp(x)=exp(γxδ),

जो बीजगणित के बराबर है

y=1αexp(γxδ)β=a(1uexp(bx))

तीन मापदंडों का उपयोग कर , यू = 1 / ( β exp ( δ ) ) , और = γ । हम पहचान सकते हैं एक के लिए पैमाने पैरामीटर के रूप में y , के लिए पैमाने पैरामीटर के रूप में एक्स , और यू एक से पाने के रूप में स्थान के लिए पैरामीटर एक्सa=β/αu=1/(βexp(δ))b=γaybxux

अंगूठे के एक नियम के रूप में, इन मापदंडों को भूखंड से एक नज़र में पहचाना जा सकता है :

  • पैरामीटर क्षैतिज असममितता का मान है, जो 2000 से थोड़ा कम है ।a2000

  • पैरामीटर है रिश्तेदार राशि वक्र इसके क्षैतिज अनंतस्पर्शी को मूल से बढ़ जाता है। यहाँ, इसलिए वृद्धि 2000 - 937 से थोड़ी कम है ; अपेक्षाकृत, यह 0.55 सेंटीमीटर के बारे में है।u20009370.55

  • क्योंकि , जब एक्स बराबर तीन बार का मूल्य 1 / बी की अवस्था के बारे में तक पहुंच जाना चाहिए था 1 - 0.05 या 95 % अपने कुल की। 937 से लगभग 2000 तक वृद्धि का 95 % हमें 1950 के आसपास रखता है ; प्लॉट पर स्कैनिंग से यह संकेत मिलता है कि इसमें 20 से 25 दिन लगे हैं। आइए यह कॉल 24 सादगी के लिए, जिस कारण से 3 / 24exp(3)0.05x1/b10.0595%95%93720001950202524 । (एक घातीय पैमाने पर नेत्रगोलक करने के लिएयह 95 % विधि कुछ क्षेत्रों में मानक है जो घातीय भूखंडों का बहुत उपयोग करते हैं।)b3/24=0.12595%

आइए देखें कि यह कैसा दिखता है:

plot(Days, Emissions)
curve((y = 2000 * (1 - 0.56 * exp(-0.125*x))), add = T)

Eyeball fit

शुरुआत के लिए बुरा नहीं है! (यहां तक कि टाइपिंग के बावजूद 0.56के स्थान पर 0.55।, जो एक कच्चे सन्निकटन वैसे भी था) हम इसके साथ पॉलिश कर सकते हैं nls:

fit <- nls(Emissions ~ a * (1- u * exp(-b*Days)), start=list(a=2000, b=1/8, u=0.55))
beta <- coefficients(fit)
plot(Days, Emissions)
curve((y = beta["a"] * (1 - beta["u"] * exp(-beta["b"]*x))), add = T, col="Green", lwd=2)

NLS fit

आउटपुट nlsमें पैरामीटर अनिश्चितता के बारे में व्यापक जानकारी शामिल है। उदाहरण के लिए , एक साधारण summaryअनुमान की मानक त्रुटियां प्रदान करता है:

> summary(fit)

Parameters:
   Estimate Std. Error t value Pr(>|t|)    
a 1.969e+03  1.317e+01  149.51 2.54e-10 ***
b 1.603e-01  1.022e-02   15.69 1.91e-05 ***
u 6.091e-01  1.613e-02   37.75 2.46e-07 ***

हम अनुमानों के पूरे सहसंयोजक मैट्रिक्स के साथ पढ़ और काम कर सकते हैं, जो एक साथ विश्वास अंतराल (बड़े डेटासेट के लिए कम से कम) का अनुमान लगाने के लिए उपयोगी है:

> vcov(fit)
             a             b             u
a 173.38613624 -8.720531e-02 -2.602935e-02
b  -0.08720531  1.044004e-04  9.442374e-05
u  -0.02602935  9.442374e-05  2.603217e-04

nls मापदंडों के लिए प्रोफ़ाइल भूखंडों का समर्थन करता है, उनकी अनिश्चितता के बारे में अधिक विस्तृत जानकारी देता है:

> plot(profile(fit))

यहाँ तीन आउटपुट प्लॉटों में से एक है जिसमें भिन्नता दिखाई दे रही है a

Profile plot

219451995


res <- residuals(fit); res %*% resu2724147073

सभी अच्छी तरह से और अच्छा whuber। लेकिन शायद ओपी के पास घातीय मॉडल चुनने का कोई कारण था (या शायद यह सिर्फ इसलिए है क्योंकि यह अच्छी तरह से जाना जाता है)। मुझे लगता है कि सबसे पहले अवशिष्ट मॉडल के लिए देखा जाना चाहिए। उन्हें देखने के लिए संभावित covariates के खिलाफ प्लॉट करें कि क्या वहां संरचना है और न केवल बड़े यादृच्छिक शोर। अधिक परिष्कृत मॉडल में कूदने से पहले यह देखने की कोशिश करें कि क्या एक कट्टर मॉडल संभवतः मदद कर सकता है।
माइकल आर। चेर्निक

3
x

2
मैं आपके जवाब की आलोचना नहीं कर रहा था! मैंने कोई अवशिष्ट भूखंड नहीं देखे। मैं केवल यह सुझाव दे रहा था कि एक बेहतर मॉडल खोजने के लिए अवशिष्ट बनाम संभावित कोवरिअट्स के प्लॉट पहला कदम होना चाहिए। अगर मुझे लगता है कि मेरे पास जवाब देने के लिए है, तो मैंने अपनी बात को एक स्थिर के रूप में उठाने के बजाय एक जवाब दिया होगा। मुझे लगा कि आपने शानदार प्रतिक्रिया दी है और मैं उन लोगों में शामिल हूं जिन्होंने आपको +1 दिया।
माइकल आर। चेरनिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.