ज्ञात विराम बिंदुओं के साथ टुकड़े-टुकड़े रैखिक प्रतिगमन में ढलानों की मानक त्रुटि


9

स्थिति

मेरे पास एक आश्रित के साथ एक डेटासेट है y और एक स्वतंत्र चर एक्स। मैं के साथ एक सतत टुकड़ा रेखीय प्रतिगमन फिट करना चाहते हैं ज्ञात / निश्चित विराम बिंदु पर होने वाली (1,2,...,)। गोलमाल अनिश्चितता के बिना जाना जाता है, इसलिए मैं उनका अनुमान नहीं लगाना चाहता। फिर मैंने फॉर्म का एक रिग्रेशन (OLS) फिट किया

yमैं=β0+β1एक्समैं+β2अधिकतम(एक्समैं-1,0)+β3अधिकतम(एक्समैं-2,0)+...+β+1अधिकतम(एक्समैं-,0)+εमैं
इसमें एक उदाहरण दिया गया है R
set.seed(123)
x <- c(1:10, 13:22)
y <- numeric(20)
y[1:10] <- 20:11 + rnorm(10, 0, 1.5)
y[11:20] <- seq(11, 15, len=10) + rnorm(10, 0, 2)

मान लेते हैं कि ब्रेकपॉइंट 1 पर होता है 9.6:

mod <- lm(y~x+I(pmax(x-9.6, 0)))
summary(mod)

Coefficients:
                    Estimate Std. Error t value Pr(>|t|)    
(Intercept)          21.7057     1.1726  18.511 1.06e-12 ***
x                    -1.1003     0.1788  -6.155 1.06e-05 ***
I(pmax(x - 9.6, 0))   1.3760     0.2688   5.120 8.54e-05 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

दो खंडों के अवरोधन और ढलान हैं: 21.7 तथा -1.1 पहली बार और 8.5 तथा 0.27 क्रमशः दूसरे के लिए।

ब्रेकप्वाइंट


प्रशन

  1. आसानी से प्रत्येक खंड के अवरोधन और ढलान की गणना कैसे करें? क्या एक गणना में ऐसा करने के लिए मॉडल को फिर से तैयार किया जा सकता है?
  2. प्रत्येक खंड के प्रत्येक ढलान की मानक त्रुटि की गणना कैसे करें?
  3. कैसे परीक्षण करें कि क्या दो आसन्न ढलानों में एक ही ढलान है (यानी क्या ब्रेकपॉइंट छोड़ा जा सकता है)?

जवाबों:


7
  1. आसानी से प्रत्येक खंड के अवरोधन और ढलान की गणना कैसे करें?

प्रत्येक खंड की ढलान को वर्तमान स्थिति तक सभी गुणांक को जोड़कर गणना की जाती है। तो ढलान का अनुमान हैएक्स=15 है -1.1003+1.3760=0.2757

अवरोधन थोड़ा कठिन है, लेकिन यह गुणांक (गांठों को मिलाकर) का एक रैखिक संयोजन है।

आपके उदाहरण में, दूसरी पंक्ति पहली बार में मिलती है एक्स=9.6, इसलिए लाल बिंदु पहली पंक्ति में है 21.7057-1.1003×9.6=11.1428। चूंकि दूसरी लाइन बिंदु से होकर गुजरती है(9.6,11.428) ढलान के साथ 0.2757, इसका अवरोधन है 11.1428-0.2757×9.6=8.496। बेशक, आप उन चरणों को एक साथ रख सकते हैं और यह दूसरे खंड = के लिए अवरोधन को सरल बनाता हैβ0-β21=21.7057-1.3760×9.6

क्या मॉडल को एक गणना में ऐसा करने के लिए फिर से जोड़ा जा सकता है?

ठीक है, हाँ, लेकिन यह सामान्य रूप से मॉडल से गणना करने के लिए संभवतः आसान है।

2. प्रत्येक खंड के प्रत्येक ढलान की मानक त्रुटि की गणना कैसे करें?

चूंकि अनुमान प्रतिगमन गुणांक का एक रैखिक संयोजन है β^, कहाँ पे 1 और 0 के होते हैं, विचरण होता है वार(β^)। मानक त्रुटि विचरण और सहसंयोजक शब्दों की राशि का वर्गमूल है।

आपके उदाहरण में, दूसरे खंड की ढलान की मानक त्रुटि है:

Sb <- vcov(mod)[2:3,2:3]
sqrt(sum(Sb))

वैकल्पिक रूप से मैट्रिक्स रूप में:

Sb <- vcov(mod)
a <- matrix(c(0,1,1),nr=3)
sqrt(t(a) %*% Sb %*% a)

3. कैसे परीक्षण किया जाए कि दो आसन्न ढलानों में एक ही ढलान है (यानी क्या ब्रेकप्वाइंट छोड़ा जा सकता है)?

इसका परीक्षण उस खंड की तालिका में गुणांक को देखकर किया जाता है। इस लाइन को देखें:

I(pmax(x - 9.6, 0))   1.3760     0.2688   5.120 8.54e-05 ***

यह 9.6 पर ढलान में परिवर्तन है । यदि वह परिवर्तन 0 से भिन्न है, तो दो ढलान समान नहीं हैं। तो एक परीक्षण के लिए पी-मान कि दूसरे खंड में पहले की तरह ही ढलान है जो उस रेखा के अंत में सही है।


(+1) आपके उत्तर के लिए धन्यवाद। # 2 के संबंध में बस एक छोटा सा प्रश्न: मेरे उदाहरण में, मुझे इसके xऔर I(pmax(x-9.6,0)), विचरण-सहसंयोजक मैट्रिक्स की आवश्यकता होगी , क्या यह सही है?
कोलश्राद

नहीं, मैंने आपके उदाहरण के आधार पर एक स्पष्ट उदाहरण संपादित किया है। यदि आप अधिक जानकारी चाहते हैं, तो कृपया पूछें।
Glen_b -Reinstate मोनिका

संपादन के लिए बहुत बहुत धन्यवाद, यह मेरे लिए काफी स्पष्ट करता है। तो क्या मैं इसे सही ढंग से समझता हूं: प्रत्येक ढलान के लिए मानक त्रुटि समान है?
COOLSerdash

1
नहीं। प्रक्रिया समान है लेकिन मूल्य नहीं है। पहले खंड की ढलान की मानक त्रुटि आपके प्रतिगमन तालिका (0.1788) में है। दूसरे खंड की ढलान की मानक त्रुटि 0.1160 है। यदि हमारे पास तीसरा खंड है, तो इसके योग में (वर्गमूल लेने से पहले) इसमें अधिक भिन्नता-सहसंयोजक शब्द शामिल होंगे।
Glen_b -Reinstate मोनिका

6

मेरा भोला दृष्टिकोण, जो सवाल 1 का जवाब देता है:

mod2 <- lm(y~I((x<9.6)*x)+as.numeric((x<9.6))+
             I((x>=9.6)*x)+as.numeric((x>=9.6))-1)
summary(mod2)

#                        Estimate Std. Error t value Pr(>|t|)    
# I((x < 9.6) * x)        -1.1040     0.2328  -4.743 0.000221 ***
# as.numeric((x < 9.6))   21.7188     1.3099  16.580 1.69e-11 ***
# I((x >= 9.6) * x)        0.2731     0.1560   1.751 0.099144 .  
# as.numeric((x >= 9.6))   8.5442     2.6790   3.189 0.005704 ** 

लेकिन मुझे यकीन नहीं है कि अगर आँकड़े (स्वतंत्रता की विशेष डिग्री में) सही ढंग से किए जाते हैं, अगर आप इसे इस तरह से करते हैं।


(+1) आपके उत्तर के लिए बहुत बहुत धन्यवाद। यह सीधे इंटरसेप्ट्स और ढलानों की गणना करने के लिए एक बहुत ही सुविधाजनक तरीका प्रदान करता है, धन्यवाद!
कोलश्राद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.