मुझे पता है कि आर में मूल बहुपद प्रतिगमन कैसे करें। हालांकि, मैं केवल nls
या lm
का उपयोग कर सकता हूं ताकि अंक के साथ त्रुटि को कम किया जा सके।आर में बहुपद प्रतिगमन - वक्र पर अतिरिक्त बाधाओं के साथ
यह ज्यादातर समय काम करता है, लेकिन कभी-कभी जब डेटा में मापन अंतर होता है, तो मॉडल बहुत प्रतिद्वंद्वी बन जाता है। क्या अतिरिक्त बाधाओं को जोड़ने का कोई तरीका है?
प्रतिलिपि प्रस्तुत करने योग्य उदाहरण:
मैं निम्नलिखित बना डेटा के लिए एक मॉडल (मेरा असली डेटा के समान) फिट करने के लिए करना चाहते हैं:
x <- c(0, 6, 21, 41, 49, 63, 166)
y <- c(3.3, 4.2, 4.4, 3.6, 4.1, 6.7, 9.8)
df <- data.frame(x, y)
सबसे पहले, यह साजिश करते हैं।
library(ggplot2)
points <- ggplot(df, aes(x,y)) + geom_point(size=4, col='red')
points
ऐसा लगता है कि अगर हम एक लाइन के साथ इन बातों जुड़ा हुआ है, यह दिशा बदल जाएगा 3 बार, तो चलो इसे करने के लिए एक quartic फिटिंग की कोशिश करते हैं की तरह।
lm <- lm(formula = y ~ x + I(x^2) + I(x^3) + I(x^4))
quartic <- function(x) lm$coefficients[5]*x^4 + lm$coefficients[4]*x^3 + lm$coefficients[3]*x^2 + lm$coefficients[2]*x + lm$coefficients[1]
points + stat_function(fun=quartic)
ऐसा लगता है कि मॉडल अंक बहुत अच्छी तरह से फिट बैठता है ... सिवाय, क्योंकि हमारे डेटा 63 और 166 के बीच एक बड़ा अंतर को था, वहाँ एक बड़ी कील जो होने के लिए कोई कारण नहीं है है मॉडल में (मेरी वास्तविक डेटा के लिए मुझे पता है कि वहाँ कोई बड़ा चोटी है कि)
तो इस मामले में सवाल यह है:
- मैं कैसे निर्धारित कर सकते हैं कि स्थानीय अधिकतम (166, 9.8) पर होने की?
अगर यह संभव नहीं है, फिर एक और तरीके से करना यह होगा:
- मैं कैसे y = 9.8 से बड़ा बनने से y- मानों लाइन ने भविष्यवाणी की सीमित कर सकते हैं।
या शायद उपयोग करने के लिए एक बेहतर मॉडल है? (इसे टुकड़े के अनुसार करने के अलावा)। मेरा उद्देश्य ग्राफ के बीच मॉडल की विशेषताओं की तुलना करना है।
प्राप्त करने के लिए एक quartic बहुपद फिट अपने भूखंड को जोड़ा गया, आप भी यह आपके लिए' ggplot' कोड जोड़ सकते हैं = गलत, सूत्र = वाई ~ पॉली (एक्स, 4)) '। – eipi10
@ eipi10 टिप के लिए धन्यवाद! यह समस्या को हल नहीं कर सकता है लेकिन यह कोड को बहुत साफ करता है :) –
मुझे यकीन है कि एक बाध्य बहुपद फिट बनाने का एक तरीका है, लेकिन अभी के लिए, स्थानीय प्रतिगमन का उपयोग करने का दूसरा विकल्प है। उदाहरण के लिए: 'geom_smooth (रंग =" लाल ", से = गलत, विधि =" नींद ")'। जब आपके पास छोटी संख्या में अंक हों तो 'loess' डिफ़ॉल्ट विधि है, इसलिए यदि आप चाहें तो' विधि 'तर्क छोड़ सकते हैं। – eipi10