आर

2013-01-15 7 views
6

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

x<-c(1e-08, 1.1e-08, 1.2e-08, 1.3e-08, 1.4e-08, 1.6e-08, 1.7e-08, 
1.9e-08, 2.1e-08, 2.3e-08, 2.6e-08, 2.8e-08, 3.1e-08, 3.5e-08, 
4.2e-08, 4.7e-08, 5.2e-08, 5.8e-08, 6.4e-08, 7.1e-08, 7.9e-08, 
8.8e-08, 9.8e-08, 1.1e-07, 1.23e-07, 1.38e-07, 1.55e-07, 1.76e-07, 
1.98e-07, 2.26e-07, 2.58e-07, 2.95e-07, 3.25e-07, 3.75e-07, 4.25e-07, 
4.75e-07, 5.4e-07, 6.15e-07, 6.75e-07, 7.5e-07, 9e-07, 1.15e-06, 
1.45e-06, 1.8e-06, 2.25e-06, 2.75e-06, 3.25e-06, 3.75e-06, 4.5e-06, 
5.75e-06, 7e-06, 8e-06, 9.25e-06, 1.125e-05, 1.375e-05, 1.625e-05, 
1.875e-05, 2.25e-05, 2.75e-05, 3.1e-05) 

y2<-c(-0.169718017273307, 7.28508517630734, 71.6802510299446, 164.637259265704, 
322.02901173786, 522.719633360006, 631.977073772459, 792.321270345847, 
971.810607095548, 1132.27551798986, 1321.01923840546, 1445.33152600664, 
1568.14204073109, 1724.30089942149, 1866.79717333592, 1960.12465709003, 
2028.46548012508, 2103.16027631327, 2184.10965255236, 2297.53360080873, 
2406.98288043262, 2502.95194879366, 2565.31085776325, 2542.7485752473, 
2499.42610084412, 2257.31567571328, 2150.92120390084, 1998.13356362596, 
1990.25434682546, 2101.21333152526, 2211.08405955931, 1335.27559108724, 
381.326449703455, 430.9020598199, 291.370887491989, 219.580548355043, 
238.708972427248, 175.583544448326, 106.057481792519, 59.8876372379487, 
26.965143266819, 10.2965349811467, 5.07812046132922, 3.19125838983254, 
0.788251933518549, 1.67980552001939, 1.97695007279929, 0.770663673279958, 
0.209216903989619, 0.0117903221723813, 0.000974437796492681, 
0.000668823762763647, 0.000545308757270207, 0.000490042305650751, 
0.000468780182460397, 0.000322977916070751, 0.000195423690538495, 
0.000175847622407421, 0.000135771259866332, 9.15607623591363e-05) 

जो जब भूखंड इस तरह दिखता है: Segmentation test http://i48.tinypic.com/25pltoy.png

मैं तो विभाजन पैकेज का उपयोग करने के तीन क्षेत्रों में तीन रैखिक प्रतिगमन (ठोस काला लाइन) उत्पन्न करने के लिए प्रयास किया है (10^⁻8--10^⁻7,10^⁻7--10^⁻6 और> 10^-6) क्योंकि मेरे पास इन विभिन्न क्षेत्रों में अलग-अलग संबंध खोजने के लिए सैद्धांतिक आधार है। जाहिर है लेकिन निम्नलिखित कोड का उपयोग कर मेरी प्रयास असफल रहा:

lin.mod <- lm(y2~x) 
segmented.mod <- segmented(lin.mod, seg.Z = ~x, psi=c(0.0000001,0.000001)) 

इस प्रकार मेरा पहला सवाल विभाजन के आगे मापदंड हैं मैं breakpoints के अलावा अन्य ठीक कर सकते हैं? जहां तक ​​मैं समझता हूं कि मेरे पास पुनरावृत्तियों को अधिकतम डिफ़ॉल्ट रूप से सेट किया गया है।

मेरा दूसरा सवाल यह है: क्या मैं शायद एनएलएस पैकेज का उपयोग करके विभाजन का प्रयास कर सकता हूं? ऐसा लगता है कि साजिश पर पहले दो क्षेत्र (10^⁻8--10^⁻7 और 10^-7--10^-6) रैखिक से अंतिम भाग से आगे हैं, इसलिए शायद एक बहुपद कार्य बेहतर होगा यहाँ?

परिणाम के उदाहरण के रूप में मुझे स्वीकार्य लगता है कि मैंने हाथ से मूल साजिश को एनोट किया है: Annotated segmentation example http://i45.tinypic.com/zjb439.jpg

संपादित करें: रैखिक फिट का उपयोग करने का कारण वह सरलता है जो वे प्रदान करते हैं, मेरी अनियंत्रित आंखों के लिए इसे एक एकल इकाई के रूप में डेटासेट को पुनर्जीवित करने के लिए एक जटिल जटिल nonlinear फ़ंक्शन की आवश्यकता होगी। एक विचार जो मेरे दिमाग को पार कर गया था, डेटा के लिए एक असामान्य मॉडल फिट करना था क्योंकि यह एक लॉग एक्स-अक्ष के साथ skew दिया जा सकता है। मेरे पास ऐसा करने के लिए आर में पर्याप्त क्षमता नहीं है, हालांकि मेरा ज्ञान केवल फिटडिस्टर तक फैला है, जहां तक ​​मैं समझता हूं कि यहां काम नहीं करेगा।

किसी प्रासंगिक दिशा में कोई भी सहायता या मार्गदर्शन की सराहना की जाएगी।

उत्तर

4

आप segmented पैकेज से संतुष्ट नहीं हैं, तो आप मंगल एल्गोरिथ्म के साथ earth पैकेज की कोशिश कर सकते हैं। लेकिन यहां, मुझे लगता है कि खंडित मॉडल का परिणाम बहुत स्वीकार्य है। नीचे आर-स्क्वायर देखें।

lin.mod <- lm(y2~x) 
segmented.mod <- segmented(lin.mod, seg.Z = ~x, psi=c(0.0000001,0.000001)) 
summary(segmented.mod) 

Meaningful coefficients of the linear terms: 
       Estimate Std. Error t value Pr(>|t|)  
(Intercept) -2.163e+02 1.143e+02 -1.893 0.0637 . 
x   4.743e+10 3.799e+09 12.485 <2e-16 *** 
U1.x  -5.360e+10 3.824e+09 -14.017  NA  
U2.x   6.175e+09 4.414e+08 13.990  NA  

Residual standard error: 232.9 on 54 degrees of freedom 
Multiple R-Squared: 0.9468, Adjusted R-squared: 0.9419 

Convergence attained in 5 iterations with relative change 3.593324e-14 

आप मॉडल की साजिश रचने से परिणाम देख सकते हैं:

plot(segmented.mod) 

enter image description here

भूखंडों के गुणांक पाने के लिए, आप यह कर सकते हैं:

 intercept(segmented.mod) 
$x 
              Est. 
intercept1 -216.30 
intercept2 3061.00 
intercept3   46.93 

> slope(segmented.mod) 
$x 
             Est.   St.Err.  t value  CI(95%).l  CI(95%).u 
slope1  4.743e+10 3.799e+09  12.4800  3.981e+10  5.504e+10 
slope2 -6.177e+09 4.414e+08 -14.0000 -7.062e+09 -5.293e+09 
slope3 -2.534e+06 5.396e+06  -0.4695 -1.335e+07  8.285e+06 
+0

आह अजीब कि मैं इसे पहली बार काम नहीं कर सका। गुणांक प्राप्त करने के बारे में युक्तियों और अतिरिक्त जानकारी के लिए धन्यवाद। ब्याज से क्या आप जानते हैं कि मैं इस तरह के डेटा के लिए असामान्य जैसे कुछ फिट कैसे हो सकता हूं? यह संभवतः एक अलग सवाल की गारंटी देता है लेकिन यदि कोई त्वरित कार्यवाही है तो मैंने सोचा कि मैं इसे यहां एक टिप्पणी के रूप में जोड़ूंगा। एक बार फिर धन्यवाद। – user1912925