दो ढलानों के अंतर की गणना कैसे करें?


12

क्या यह समझने की एक विधि है कि क्या दो रेखाएँ (अधिक या कम) समानांतर हैं? मेरे पास रेखीय प्रतिगमन से उत्पन्न दो लाइनें हैं और मैं समझना चाहूंगा कि क्या वे समानांतर हैं। दूसरे शब्दों में, मैं उन दो पंक्तियों के ढलानों के विभिन्न को प्राप्त करना चाहूंगा।

क्या इसकी गणना करने के लिए एक आर फ़ंक्शन है?

संपादित करें: ... और मैं एक रेखीय प्रतिगमन रेखा का ढलान (डिग्री में) कैसे प्राप्त कर सकता हूं?

जवाबों:


24

मुझे आश्चर्य है कि अगर मुझे कुछ स्पष्ट याद आ रहा है, लेकिन क्या आप इस सांख्यिकीय रूप से ANCOVA का उपयोग नहीं कर सकते हैं? एक महत्वपूर्ण मुद्दा यह है कि दो रजिस्टरों में ढलान त्रुटि के साथ अनुमानित हैं । वे बड़े पैमाने पर आबादी में ढलान के अनुमान हैं। अगर चिंता यह है कि दो प्रतिगमन रेखाएं समानांतर हैं या आबादी में नहीं हैं, तो यह तुलना करने का कोई मतलब नहीं है1 साथ में 2सटीक तुल्यता के लिए सीधे; वे दोनों त्रुटि / अनिश्चितता के अधीन हैं जिन्हें ध्यान में रखा जाना चाहिए।

यदि हम सांख्यिकीय दृष्टिकोण से इस बारे में सोचते हैं, और हम डेटा को जोड़ सकते हैं एक्स तथा y दोनों डेटा के लिए कुछ सार्थक तरीके से सेट (यानी एक्स तथा y दोनों सेटों में दो चरों के लिए समान श्रेणी के साथ दो आबादी से खींचा जाता है यह सिर्फ उन दोनों के बीच का संबंध है जो दो आबादी में भिन्न हैं), तो हम निम्नलिखित दो मॉडल फिट कर सकते हैं:

y^=0+1एक्स+2जी

तथा

y^=0+1एक्स+2जी+3एक्सजी

कहाँ पे मैं मॉडल गुणांक हैं, और जी एक समूहीकरण चर / कारक है, जो दर्शाता है कि प्रत्येक अवलोकन किस डेटा सेट का है।

हम परीक्षण के लिए एक एनोवा या एफ-अनुपात का उपयोग कर सकते हैं यदि दूसरा, अधिक जटिल मॉडल सरल मॉडल की तुलना में डेटा को बेहतर ढंग से फिट करता है। सरल मॉडल में कहा गया है कि दो लाइनों के ढलान समान हैं (1) लेकिन रेखाएँ एक दूसरे से एक राशि से ऑफसेट होती हैं 2

अधिक जटिल मॉडल में लाइन की ढलान और समूह चर के बीच एक बातचीत शामिल है। यदि इस इंटरैक्शन टर्म के लिए गुणांक शून्य से काफी अलग है या एनोवा / एफ-अनुपात इंगित करता है कि अधिक जटिल मॉडल डेटा को बेहतर तरीके से फिट करता है तो हमें नल की परिकल्पना को अस्वीकार करना होगा कि दो लाइनें समानांतर हैं।

डमी डेटा का उपयोग करते हुए आर में एक उदाहरण है। सबसे पहले, समान ढलान वाला डेटा:

set.seed(2)
samp <- factor(sample(rep(c("A","B"), each = 50)))
d1 <- data.frame(y = c(2,5)[as.numeric(samp)] + (0.5 * (1:100)) + rnorm(100),
                 x = 1:100,
                 g = samp)
m1 <- lm(y ~ x * g, data = d1)
m1.null <- lm(y ~ x + g, data = d1)
anova(m1.null, m1)

जो देता है

> anova(m1.null, m1)
Analysis of Variance Table

Model 1: y ~ x + g
Model 2: y ~ x * g
  Res.Df    RSS Df Sum of Sq      F Pr(>F)
1     97 122.29                           
2     96 122.13  1   0.15918 0.1251 0.7243

यह दर्शाता है कि हम डेटा के इस नमूने में समान ढलानों की अशक्त परिकल्पना को अस्वीकार करने में विफल हैं। बेशक, हम खुद को आश्वस्त करना चाहते हैं कि हमारे पास एक अंतर का पता लगाने के लिए पर्याप्त शक्ति थी अगर वास्तव में एक था ताकि हम गलत तरीके से नल को अस्वीकार करने के लिए नेतृत्व न करें क्योंकि हमारा नमूना आकार अपेक्षित प्रभाव के लिए बहुत छोटा था।

अब अलग-अलग ढलान के साथ।

set.seed(42)
x <- seq(1, 100, by = 2)
d2 <- data.frame(y = c(2 + (0.5 * x) + rnorm(50),
                       5 + (1.5 * x) + rnorm(50)),
                 x = x,
                 g = rep(c("A","B"), each = 50))
m2 <- lm(y ~ x * g, data = d2)
m2.null <- lm(y ~ x + g, data = d2)
anova(m2.null, m2)

जो देता है:

> anova(m2.null, m2)
Analysis of Variance Table

Model 1: y ~ x + g
Model 2: y ~ x * g
  Res.Df     RSS Df Sum of Sq     F    Pr(>F)    
1     97 21132.0                                 
2     96   103.8  1     21028 19439 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

यहां हमारे पास अशक्त परिकल्पना के खिलाफ पर्याप्त सबूत हैं और इस प्रकार हम इसे विकल्प के पक्ष में अस्वीकार कर सकते हैं (दूसरे शब्दों में, हम इस परिकल्पना को अस्वीकार करते हैं कि दो पंक्तियों के ढलान समान हैं)।

मेरे द्वारा फिट किए गए दो मॉडलों में सहभागिता की शर्तें (3एक्सजी) दो समूहों के लिए ढलानों में अनुमानित अंतर दें। पहले मॉडल के लिए, ढलानों में अंतर का अनुमान छोटा है (~ 0.003)

> coef(m1)
(Intercept)           x          gB        x:gB 
2.100068977 0.500596394 2.659509181 0.002846393

और एक टी-इस पर घोंसला परिकल्पना को अस्वीकार करने में विफल होगा कि ढलानों में यह अंतर 0 है:

> summary(m1)

Call:
lm(formula = y ~ x * g, data = d1)

Residuals:
     Min       1Q   Median       3Q      Max 
-2.32886 -0.81224 -0.01569  0.93010  2.29984 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.100069   0.334669   6.275 1.01e-08 ***
x           0.500596   0.005256  95.249  < 2e-16 ***
gB          2.659509   0.461191   5.767 9.82e-08 ***
x:gB        0.002846   0.008047   0.354    0.724    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 1.128 on 96 degrees of freedom
Multiple R-squared: 0.9941, Adjusted R-squared: 0.9939 
F-statistic:  5347 on 3 and 96 DF,  p-value: < 2.2e-16 

यदि हम दूसरे डेटा सेट के लिए फिट किए गए मॉडल की ओर मुड़ते हैं, जहां हमने दो समूहों के लिए ढलान बनाया है, तो हम देखते हैं कि दो लाइनों के ढलानों में अनुमानित अंतर ~ 1 इकाई है।

> coef(m2)
(Intercept)           x          gB        x:gB 
  2.3627432   0.4920317   2.8931074   1.0048653 

समूह "ए" के लिए ढलान ~ 0.49 है (x उपरोक्त आउटपुट में) है, जबकि समूह "बी" के लिए ढलान प्राप्त करने के लिए हमें समूह "ए" के ढलान में अंतर ढलानों (अंतःक्रिया शब्द याद रखना) को जोड़ने की आवश्यकता है। ; ~ 0.49 + ~ 1 = ~ 1.49। यह 1.5 के समूह "बी" के लिए उल्लिखित ढलान के बहुत करीब है। एटीढलानों के इस अंतर पर-यह भी इंगित करता है कि अंतर का अनुमान 0 से दूर है:

> summary(m2)

Call:
lm(formula = y ~ x * g, data = d2)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.1962 -0.5389  0.0373  0.6952  2.1072 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.362743   0.294220   8.031 2.45e-12 ***
x           0.492032   0.005096  96.547  < 2e-16 ***
gB          2.893107   0.416090   6.953 4.33e-10 ***
x:gB        1.004865   0.007207 139.424  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1 

Residual standard error: 1.04 on 96 degrees of freedom
Multiple R-squared: 0.9994, Adjusted R-squared: 0.9994 
F-statistic: 5.362e+04 on 3 and 96 DF,  p-value: < 2.2e-16

इस बहुत अच्छी व्याख्या के लिए बहुत बहुत धन्यवाद। मेरा लक्ष्य यह समझना है कि यदि स्लैपर कम या अधिक समान है तो मुझे लगता है कि मैं इसे परीक्षण करने के लिए एनोवा का उपयोग करूंगा।
Dail

अगर मेरे दो डिस्टेंट वैक्टर हैं और मैं उनके स्लोप्स की तुलना करना चाहूंगा, लेकिन मेरे पास y (lm (x ~ y)) नहीं है, तो मैं ANOVA का उपयोग कैसे कर सकता हूं? मैंने aova (lm (x ~ 1), lm (y) आज़माया ~ 1)) लेकिन मुझे एक चेतावनी मिली है
Dail

यहाँ वैक्टरों से आपका क्या मतलब है? R अर्थ में या गणितीय अर्थ? यह सवाल आप उत्पन्न है, तो एक नया सवाल शुरू करें से बहुत अलग है - है नहीं में संपादित - यह टिप्पणी में एक प्रकृति ऐसी व्यापक के संचालन अनुवर्ती करना असंभव है।
गैविन सिम्पसन

कोई प्रतीक्षा नहीं, मुझे एनोवा के साथ दो मॉडल की तुलना करनी है ... ठीक है, लेकिन अगर मैं इस सूत्र के साथ एक मॉडल बनाता हूं: x ~ 1 और y के साथ एक और मॉडल ~ 1 मुझे चेतावनी मिलती है। मैं R अर्थ में बात कर रहा हूँ। मैं कैसे कर सकता हूँ?
Dail

1
@ यदि आपने दो ढलान / रेखाएँ प्राप्त करने के लिए दो प्रतिगमन फिट किए हैं, तो आपके पास दोनों डेटा सेट के लिए x और y डेटा है। जैसा कि मैंने अपने उत्तर में कहा है, अगर x और y दो डेटा सेट में तुलनीय हैं, तो आप बस सभी डेटा को जोड़ सकते हैं और एक समूहन चर जोड़ सकते हैं। मेरा उदाहरण दिखाता है कि डमी डेटा का उपयोग करके यह कैसे करना है, लेकिन आपके पास पहले से ही x और y डेटा है, यह वह डेटा है जिसे आपने अलग-अलग रजिस्टरों में फिट करने के लिए उपयोग किया था।
गैविन सिम्पसन

8

पहला सवाल वास्तव में ज्यामिति से है। यदि आपके पास फॉर्म की दो लाइनें हैं:

y=1एक्स+1
y=2एक्स+2

तो वे समानांतर हैं अगर 1=2। इसलिए यदि ढलान बराबर हैं तो रेखाएं समानांतर हैं।

दूसरे प्रश्न के लिए, इस तथ्य का उपयोग करें कि तनα=1, कहाँ पे α कोण जिस रेखा के साथ बनाता है एक्स-एक्सिस, और 1रेखा का ढलान है। इसलिए

α=arctan1

और डिग्री में परिवर्तित करने के लिए, उसे याद करें 2π=360। तो डिग्रियों में उत्तर होगा

α=arctan13602π

आर समारोह के लिए arctanकहा जाता है atan

नमूना आर कोड:

> x<-rnorm(100)
> y<-x+1+rnorm(100)/2
> mod<-lm(y~x)
> mod$coef
    (Intercept)           x 
      0.9416175   0.9850303 
    > mod$coef[2]
        x 
0.9850303 
> atan(mod$coef[2])*360/2/pi
       x 
44.56792 

अंतिम पंक्ति डिग्री है।

अपडेट करें। नकारात्मक ढलान मूल्यों के लिए डिग्री में रूपांतरण के लिए अलग नियम का पालन करना चाहिए। ध्यान दें कि x- अक्ष के साथ कोण 0 से 180 तक मान प्राप्त कर सकता है, क्योंकि हम मानते हैं कि कोण x- अक्ष से ऊपर है। तो के नकारात्मक मूल्यों के लिए1सूत्र है:

α=180-arctan13602π

ध्यान दें। हालांकि यह मेरे लिए हाई-स्कूल त्रिकोणमिति को याद करने के लिए मजेदार था, वास्तव में उपयोगी उत्तर गेविन सिम्पसन द्वारा दिया गया है। चूंकि प्रतिगमन लाइनों के ढलान यादृच्छिक चर हैं, इसलिए उनकी तुलना में सांख्यिकीय परिकल्पना ढांचे का उपयोग किया जाना चाहिए।


धन्यवाद! प्रतिगमन से ढलान कैसे प्राप्त करें? क्या मुझे गुणांक और अवरोधन प्राप्त करना है?
डेल

शायद रैखिक प्रतिगमन कुछ फ़ंक्शन के साथ सीधे डिग्री लौटाता है?
सस्ता

degress = +45 और degress = -315 एक ही पंक्ति नहीं हैं? whare एक ही लाइन के बारे में बात नहीं कर रहे हैं?
सस्ता

1

... @mpiktas के उत्तर के बाद, यहां बताया गया है कि आप किसी lmऑब्जेक्ट से ढलान कैसे निकालेंगे और उपरोक्त फॉर्मूला लागू करेंगे।

# prepare some data, see ?lm
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)

lm.D9 <- lm(weight ~ group)
# extract the slope (this is also used to draw a regression line if you wrote abline(lm.D9)
coefficients(lm.D9)["groupTrt"] 
      groupTrt 
   -0.371 
# use the arctan*a1 / (360 / (2*pi)) formula provided by mpiktas
atan(coefficients(lm.D9)["groupTrt"]) * (360/(2 * pi)) 
 groupTrt 
-20.35485 
180-atan(coefficients(lm.D9)["groupTrt"]) * (360/(2 * pi))
 groupTrt 
200.3549 

उदाहरण के लिए बहुत बहुत धन्यवाद, इस मामले में डिग्री -200 हैं?
Dail

हाँ। अगर आपको लगता है कि आपकी समस्या हल हो गई है, तो @mpiktas के उत्तर को सही मानें, धन्यवाद।
रोमन लुसट्रिक

@ RomanLuštrik, आपने विभाजन को याद किया 2π
mpiktas

1
@ RomanLuštrik, मैंने कोड तय किया है और सही आउटपुट जोड़ा है। सुधार को दूर करने के लिए स्वतंत्र महसूस करें।
12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.