कई अज्ञात समुद्री मील के साथ टुकड़ा करने योग्य रैखिक प्रतिगमन कैसे करें?


14

क्या टुकड़े करने वाले रैखिक प्रतिगमन करने के लिए कोई पैकेज हैं, जो स्वचालित रूप से कई समुद्री मील का पता लगा सकते हैं? धन्यवाद। जब मैं स्ट्रैचेंज पैकेज का उपयोग करता हूं। मैं बदलाव के बिंदुओं का पता नहीं लगा सका। मुझे नहीं पता कि यह परिवर्तन बिंदुओं का पता कैसे लगाता है। भूखंडों से, मैं देख सकता था कि कई बिंदु हैं जो मैं चाहता हूं कि यह मुझे उन्हें बाहर निकालने में मदद कर सकता है। क्या कोई यहाँ एक उदाहरण दे सकता है?


1
यह उसी तरह का प्रश्न प्रतीत होता है, जैसे आँकड़े.स्टैकएक्सचेंज . com/questions/5700/… । यदि यह किसी भी पर्याप्त तरीके से भिन्न है, तो कृपया मतभेदों को प्रतिबिंबित करने के लिए अपने प्रश्न को संपादित करके हमें बताएं; अन्यथा, हम इसे डुप्लिकेट के रूप में बंद कर देंगे।
whuber

1
मैंने प्रश्न संपादित किया है।
हांगलांग वांग

1
मुझे लगता है कि आप इसे गैर-रैखिक अनुकूलन समस्या के रूप में कर सकते हैं। गुणांक और पैरामीटर के रूप में गाँठ स्थानों के साथ, फ़ंक्शन के समीकरण को फिट करने के लिए लिखें।
mark999

1
मुझे लगता है कि segmentedपैकेज वही है जो आप ढूंढ रहे हैं।
एलेफसिन

1
मुझे एक समान समस्या थी, इसे R के segmentedपैकेज से हल किया : stackoverflow.com/a/18715116/857416
एक अलग बेन

जवाबों:


8

MARS लागू होगा ? R के पास वह पैकेज है earthजो इसे लागू करता है।


8

सामान्य तौर पर, यह टुकड़ा-वार रैखिक के रूप में कुछ फिट करने के लिए थोड़ा अजीब है। हालांकि, यदि आप वास्तव में ऐसा करना चाहते हैं, तो मार्स एल्गोरिथ्म सबसे प्रत्यक्ष है। यह एक समय में एक फ़ंक्शन एक गाँठ का निर्माण करेगा; और फिर आम तौर पर उप-फिटिंग अला निर्णय पेड़ों का मुकाबला करने के लिए गांठों की संख्या को वापस करता है। आप के माध्यम से अनुसंधान में मंगल ग्रह algotithm उपयोग कर सकते हैं earthया mda। सामान्य तौर पर, यह जीसीवी के साथ फिट है जो अब तक अन्य सूचना मानदंडों (एआईसी, बीआईसी आदि) से हटाया नहीं गया है।

MARS वास्तव में आपको "इष्टतम" फिट नहीं देगा क्योंकि गांठें एक समय में एक हो जाती हैं। यह वास्तव में मुश्किल होगा बल्कि गांठों के संभावित क्रमपरिवर्तन के बाद से वास्तव में "इष्टतम" नॉट को फिट करना मुश्किल होगा।

आमतौर पर, यही कारण है कि लोग चिकने बंटवारे की ओर मुड़ते हैं। अधिकांश चौरसाई विभाजन घन होते हैं, ताकि आप एक मानव आंख को गायब कर सकें। हालांकि यह एक रैखिक चौरसाई करने के लिए काफी संभव होगा। चौरसाई करने का बड़ा फायदा अनुकूलन के लिए उनका एकल पैरामीटर है। यह आपको जल्दी से क्रमचय के gobs के माध्यम से खोज करने के लिए बिना वास्तव में "इष्टतम" समाधान तक पहुंचने की अनुमति देता है। हालांकि, यदि आप वास्तव में विभक्ति अंक की तलाश करना चाहते हैं, और आपके पास ऐसा करने के लिए पर्याप्त डेटा है, तो MARS जैसा कुछ शायद सबसे अच्छा शर्त होगा।

यहाँ R में दंडित रैखिक चौरसाई विभाजन के लिए कुछ उदाहरण कोड दिए गए हैं:

require(mgcv);data(iris);
gam.test <- gam(Sepal.Length ~ s(Petal.Width,k=6,bs='ps',m=0),data=iris)
summary(gam.test);plot(gam.test);

हालांकि चुने गए वास्तविक समुद्री मील जरूरी नहीं कि किसी भी वास्तविक विभक्ति अंक के साथ संबंधित हों।


3

मैंने इसे कुछ साल पहले एक बार खरोंच से क्रमादेशित किया है, और मेरे पास अपने कंप्यूटर पर टुकड़ा-वार रैखिक प्रतिगमन करने के लिए एक मैटलैब फ़ाइल है। लगभग 20 माप बिंदु या तो के लिए लगभग 1 से 4 ब्रेकप्वाइंट कम्प्यूटेशनल रूप से संभव है। 5 या 7 ब्रेक पॉइंट वास्तव में बहुत अधिक होने लगते हैं।

जैसा कि मैं देख रहा हूं कि शुद्ध गणितीय दृष्टिकोण यह है कि आपके प्रश्न के नीचे टिप्पणी में जुड़े प्रश्न में उपयोगकर्ता mbq द्वारा सुझाए गए सभी संभावित संयोजनों का प्रयास करें।

चूंकि फिट लाइनें लगातार और आसन्न हैं (कोई ओवरलैप नहीं), कॉम्बिनेटरिक्स पास्कल त्रिकोण का पालन करेंगे। अगर लाइन सेगमेंट के उपयोग किए गए डेटा पॉइंट्स के बीच ओवरलैप्स थे, तो मेरा मानना ​​है कि कॉम्बिनेटरिक्स स्टर्लिंग के नंबर का दूसरी तरह से अनुसरण करेंगे।

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

अब उदाहरण के लिए।

yxxy

xyR2line1R2line2sumofR2valuesstandarddeviationofR2111,0000,04001,04000,6788221,0000,01181,01180,6987331,0000,00041,00040,7067441,0000,00311,00310,7048551,0000,01351,01350,6974661,0000,02381,02380,6902771,0000,02771,02770,6874881,0000,02221,02220,6913991,0000,00931,00930,700410101,0001,9781,0000,70711190,97090,02710,99800,66731280,89510,11391,00900,55231370,77340,25581,02920,36591460,61340,43211,04550,12811550,43210,61341,04550,12821640,25580,77331,02910,36591730,11390,89511,00900,55231820,02720,97080,99800,667219101,0001,0000,70712020,00941,0001,00940,70042130,02221,0001,02220,69142240,02781,0001,02780,68742350,02391,0001,02390,69022460,01361,0001,01360,69742570,00321,0001,00320,70482680,00041,0001,00040,70682790,01181,0001,01180,698728100,041,0001,040,6788

इन y मानों का ग्राफ है:

आदर्श डेटा

जिसमें स्पष्ट रूप से दो ब्रेक प्वाइंट हैं। तर्क के लिए हम R ^ 2 सहसंबंध मानों की गणना करेंगे (एक्सेल सेल फ़ार्मुलों (यूरोपीय डॉट-कॉमा शैली) के साथ):

=INDEX(LINEST(B1:$B$1;A1:$A$1;TRUE;TRUE);3;1)
=INDEX(LINEST(B1:$B$28;A1:$A$28;TRUE;TRUE);3;1)

दो फिट लाइनों के सभी गैर-अतिव्यापी संयोजनों के लिए । R ^ 2 मानों के सभी संभावित जोड़े में ग्राफ है:

आर ^ 2 मान

सवाल यह है कि आर ^ 2 मूल्यों की कौन सी जोड़ी है, जिसे हमें चुनना चाहिए, और शीर्षक में पूछे गए अंकों के अनुसार हम कितने ब्रेक पॉइंट का सामान्यीकरण करते हैं? एक विकल्प उस संयोजन को चुनना है जिसके लिए आर-स्क्वायर सहसंबंध का योग सबसे अधिक है। यह प्लॉट करने से हमें नीचे का ऊपरी नीला वक्र मिलता है:

R वर्ग का योग और R वर्ग का मानक विचलन

1,0455

टुकड़ा वार रैखिक प्रतिगमन - मतलाब - कई विराम बिंदु


1

टॉम और मिरांडा (1984) में वर्णित एक बहुत अच्छा एल्गोरिथ्म है ।

प्रस्तावित कार्यप्रणाली एक समय रेखा को फिट करने वाली सीधी रेखाओं के सर्वोत्तम निरंतर सेट की गणना करने के लिए एक न्यूनतम-वर्ग दृष्टिकोण का उपयोग करती है, जो ब्रेकपॉइंट के बीच न्यूनतम दूरी पर और प्रत्येक ब्रेकपॉइंट पर न्यूनतम प्रवृत्ति परिवर्तन के कारण कई बाधाओं के अधीन है।

कोड और एक GUI फोरट्रान और IDL दोनों में अपनी वेबसाइट से उपलब्ध हैं: http://www.dfisica.ubi.pt/~artome/linearstep.html


0

... सबसे पहले आपको इसे पुनरावृत्तियों द्वारा करना होगा, और कुछ सूचनात्मक मानदंड के तहत, जैसे एआईसी एआईसीआईसी बीआईसी सीपी; क्योंकि आप एक "आदर्श" फिट पा सकते हैं, यदि समुद्री मील की संख्या = संख्या ओड डेटा अंक एन, ठीक है। ... पहले K = 0 डालें; उदाहरण के लिए L = K + 1 रजिस्टर, AICc की गणना करें; फिर एक अलग सेगमेंट में कम से कम डेटा पॉइंट्स मानें, L = 3 या L = 4, ok ... K = 1 कहें; पहली गाँठ के रूप में एल-वें डेटा से शुरू करें, एसएस या एमएलई की गणना करें ... और एन-एल डेटा पर अंतिम गाँठ तक एक गाँठ, एसएस या एमएलई के रूप में अगले डेटा बिंदु पर कदम रखें; सर्वोत्तम फिट (SS या MLE) के साथ व्यवस्था चुनें AICc की गणना करें ... ... K = 2 रखें; ... सभी पिछले प्रतिगमन का उपयोग करें (जो कि उनका एसएस या एमएलई है), लेकिन कदम से कदम एक एकल खंड को सभी संभव भागों में विभाजित करते हैं ... सर्वोत्तम फिट (एसएस या एमएलई) के साथ व्यवस्था का चयन करें एआईसीसी की गणना करें ... यदि अंतिम AICc अधिक होता है तो पिछले वाला: पुनरावृत्तियों को रोकें! यह एआईसीसी मानदंड के तहत एक इष्टतम समाधान है, ठीक है


एआईसी, बीआईसी का उपयोग नहीं किया जा सकता है क्योंकि वे अतिरिक्त मापदंडों के लिए दंडित होते हैं, जो स्पष्ट रूप से यहां नहीं है।
नमस्ते 12

0

मैं एक बार Joinpoint नामक एक कार्यक्रम में आया था । अपनी वेबसाइट पर वे कहते हैं कि यह एक जॉइनपॉइंट मॉडल को फिट करता है, जहां "'जॉइंटप्वाइंट' में कई अलग-अलग लाइनें एक साथ जुड़ी होती हैं।" और आगे: "उपयोगकर्ता न्यूनतम और अधिकतम संख्या में जुड़ावों की आपूर्ति करता है। कार्यक्रम न्यूनतम संख्या में शामिल होने के साथ शुरू होता है (जैसे 0 जॉइनपॉइंट, जो एक सीधी रेखा है) और परीक्षण करता है कि क्या अधिक जुड़ाव सांख्यिकीय रूप से महत्वपूर्ण हैं और उन्हें मॉडल में जोड़ा जाना चाहिए (अधिकतम संख्या तक)। "

NCI इसका उपयोग कैंसर दर के ट्रेंड मॉडलिंग के लिए करता है, हो सकता है कि यह आपकी आवश्यकताओं के अनुरूप हो।


0

आदेश में एक टुकड़ा करने के लिए डेटा फिट करने के लिए:

यहाँ छवि विवरण दर्ज करें

a1,a2,p1,q1,p2,q2,p3,q3

यहाँ छवि विवरण दर्ज करें

उदाहरण के लिए, मैट ग्रानविक द्वारा दिए गए सटीक आंकड़ों के साथ परिणाम है:

यहाँ छवि विवरण दर्ज करें

बिखरे हुए डेटा के बिना, यह उदाहरण बहुत संकेत नहीं है। बिखरे डेटा के साथ अन्य उदाहरण संदर्भित पेपर में दिखाए गए हैं।


0

आप mcpपैकेज का उपयोग कर सकते हैं यदि आपको पता है कि अंकों के परिवर्तन की संख्या कितनी है। यह आपको महान मॉडलिंग लचीलापन और परिवर्तन बिंदुओं और प्रतिगमन मापदंडों के बारे में बहुत सारी जानकारी देता है, लेकिन गति की कीमत पर।

Mcp वेबसाइट में कई लागू उदाहरण हैं, जैसे,

library(mcp)

# Define the model
model = list(
  response ~ 1,  # plateau (int_1)
  ~ 0 + time,    # joined slope (time_2) at cp_1
  ~ 1 + time     # disjoined slope (int_3, time_3) at cp_2
)

# Fit it. The `ex_demo` dataset is included in mcp
fit = mcp(model, data = ex_demo)

तब आप कल्पना कर सकते हैं:

plot(fit)

यहाँ छवि विवरण दर्ज करें

या संक्षेप:

summary(fit)

Family: gaussian(link = 'identity')
Iterations: 9000 from 3 chains.
Segments:
  1: response ~ 1
  2: response ~ 1 ~ 0 + time
  3: response ~ 1 ~ 1 + time

Population-level parameters:
    name match  sim  mean lower  upper Rhat n.eff
    cp_1    OK 30.0 30.27 23.19 38.760    1   384
    cp_2    OK 70.0 69.78 69.27 70.238    1  5792
   int_1    OK 10.0 10.26  8.82 11.768    1  1480
   int_3    OK  0.0  0.44 -2.49  3.428    1   810
 sigma_1    OK  4.0  4.01  3.43  4.591    1  3852
  time_2    OK  0.5  0.53  0.40  0.662    1   437
  time_3    OK -0.2 -0.22 -0.38 -0.035    1   834

डिस्क्लेमर: मैं mcp का डेवलपर हूं।


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