দুটি opালু পার্থক্য গণনা কিভাবে?


12

দুটি লাইন (কম বেশি) সমান্তরাল কিনা তা বোঝার কোনও পদ্ধতি আছে? লিনিয়ার রিগ্রেশনগুলি থেকে আমার দুটি লাইন উত্পন্ন হয়েছে এবং আমি বুঝতে চাই তারা সমান্তরাল কিনা। অন্য কথায়, আমি এই দুটি লাইনের opালুগুলির বিভিন্ন পেতে চাই।

এটি গণনা করার জন্য কোনও আর ফাংশন আছে?

সম্পাদনা: ... এবং আমি কীভাবে একটি লিনিয়ার রিগ্রেশন লাইনের opeাল (ডিগ্রীতে) পেতে পারি?

উত্তর:


24

আমি আশ্চর্য হয়েছি যে আমি যদি কিছু স্পষ্ট অনুপস্থিত থাকি তবে আপনি এএনকোভা ব্যবহার করে পরিসংখ্যানগতভাবে এটি করতে পারেন না? একটি গুরুত্বপূর্ণ সমস্যাটি হ'ল দুটি রিগ্রেশনগুলির opালু ত্রুটি নিয়ে অনুমান করা হয় । এগুলি বৃহত জনগোষ্ঠীর theালু অনুমান। যদি উদ্বেগটি হয় যে দুটি রিগ্রেশন লাইনের সমান্তরাল হয় বা জনসংখ্যার মধ্যে না থাকে তবে সঠিক সমতার জন্য সরাসরি সাথে তুলনা করা অর্থহীন নয় ; এগুলি উভয়ই ত্রুটি / অনিশ্চয়তার বিষয় যা বিবেচনায় নেওয়া উচিত।একটি1একটি2

যদি আমরা এটি সম্পর্কে একটি পরিসংখ্যানগত দৃষ্টিকোণ থেকে চিন্তা করি এবং আমরা উভয় ডেটা সেটগুলির জন্য কিছু অর্থপূর্ণ উপায়ে এবং এর ডেটা একত্রিত করতে পারি (যেমন উভয় সেটে এবং উভয় সমান পরিসীমাযুক্ত দুটি জনসংখ্যা থেকে আঁকা হয়) ভেরিয়েবলগুলি কেবলমাত্র তাদের মধ্যে সম্পর্ক যা দুটি জনগোষ্ঠীর মধ্যে পৃথক) তবে আমরা নিম্নলিখিত দুটি মডেলকে ফিট করতে পারি:এক্সYএক্সY

Y^=0+ +1এক্স+ +2

এবং

Y^=0+ +1এক্স+ +2+ +3এক্স

যেখানে মডেল সহগ, এবং একটি গ্রুপিং ভেরিয়েবল / ফ্যাক্টর যা প্রতিটি পর্যবেক্ষণের অন্তর্গত কোন ডেটা সেট করে তা নির্দেশ করে।আমি

আমরা যদি দ্বিতীয়, আরও জটিল মডেলটিকে সহজ মডেলের চেয়ে আরও ভালভাবে ডেটা ফিট করে তবে এটি পরীক্ষা করতে আমরা একটি এনওোয়া টেবিল বা এফ-অনুপাত ব্যবহার করতে পারি। সহজ মডেলটিতে বলা হয়েছে যে দুটি লাইনের একই ( ) তবে লাইনগুলি একে অপরের থেকে পরিমাণে ।12

আরও জটিল মডেলের মধ্যে লাইনের opeাল এবং গ্রুপিং ভেরিয়েবলের মধ্যে একটি ইন্টারঅ্যাকশন অন্তর্ভুক্ত রয়েছে। যদি এই ইন্টারঅ্যাকশন শব্দটির জন্য সহগ শূন্যের থেকে উল্লেখযোগ্যভাবে আলাদা হয় বা এএনওওএ / এফ-অনুপাত নির্দেশ করে যে আরও জটিল মডেল আরও ভালভাবে ডেটা ফিট করে তবে আমাদের অবশ্যই নাল অনুমানটিকে প্রত্যাখ্যান করতে হবে যে দুটি লাইন সমান্তরাল।

এখানে ডামি ডেটা ব্যবহার করে আর এর একটি উদাহরণ। প্রথমত, সমান opালু সহ ডেটা:

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

ইঙ্গিত করে যে আমরা তথ্যের এই নমুনায় সমান opালুগুলির নাল অনুমানটি বাতিল করতে ব্যর্থ হই। অবশ্যই আমরা আমাদের নিশ্চিত করতে চাই যে সত্যই যদি কিছু থাকে তবে আমাদের মধ্যে পার্থক্য সনাক্ত করার পর্যাপ্ত ক্ষমতা ছিল যাতে আমরা ভুলভাবে নালটিকে প্রত্যাখ্যান করতে না পারি কারণ প্রত্যাশিত প্রভাবের জন্য আমাদের নমুনার আকারটি খুব ছোট ছিল।

এখন বিভিন্ন opালু সহ।

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

এখানে নাল অনুমানের বিরুদ্ধে আমাদের কাছে যথেষ্ট প্রমাণ রয়েছে এবং এভাবে আমরা বিকল্পের পক্ষে এটি প্রত্যাখ্যান করতে পারি (অন্য কথায়, আমরা দুটি লাইনের opাল সমান যে অনুমানটি বাতিল করি)।

আমি যে দুটি মডেল লাগিয়েছি ( ) এর ইন্টারঅ্যাকশন শর্তাদি দুটি আনুমানিক পার্থক্য দেয়। প্রথম মডেলের জন্য, opালুগুলির মধ্যে পার্থক্যের অনুমানটি ছোট (~ 0.003)3এক্স

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

এবং একটি এই -test নাল হাইপোথিসিস প্রত্যাখ্যান করার যে ঢালে এই পার্থক্য 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 

আমরা যদি দ্বিতীয় ডেটা সেটগুলিতে লাগানো মডেলটির দিকে ঘুরে যাই, যেখানে আমরা দুটি গ্রুপের theালু আলাদা করে দিয়েছি, আমরা দেখতে পাচ্ছি যে দুটি লাইনের opালুতে আনুমানিক পার্থক্য ~ 1 ইউনিট is

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

গ্রুপ "এ" এর slাল ~ 0.49 ( xউপরের আউটপুটে), যদিও গ্রুপ "বি" এর theাল পেতে আমাদের "এ" গ্রুপের opeালুতে পার্থক্য opাল (ইন্টারঅ্যাকশন শব্দটি দিয়ে মনে রাখতে হবে) যুক্ত করতে হবে st ; ~ 0.49 + ~ 1 = ~ 1.49। এটি "বি" গ্রুপের 1.5 টির জন্য বর্ণিত opeালের খুব কাছেই। Opালু এই পার্থক্যের উপর একটি টেস্ট এছাড়াও ইঙ্গিত দেয় যে পার্থক্যের জন্য অনুমান 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

এই খুব ভাল ব্যাখ্যার জন্য আপনাকে অনেক ধন্যবাদ। আমার লক্ষ্যটি বুঝতে হবে যে স্লপারটি কম বা বেশি একইরূপে রয়েছে তাই আমি মনে করি এটি পরীক্ষা করার জন্য আমি আনোভা ব্যবহার করব।
দাইল

আমার যদি দুটি সুস্পষ্ট ভেক্টর থাকে এবং আমি তাদের slালগুলি তুলনা করতে চাই তবে আমার কাছে y (lm (x ~ y) নেই, আমি কীভাবে আনোভা ব্যবহার করতে পারি? আমি আনোভা (এলএম (x ~ 1), এলএম (y) চেষ্টা করেছি ~ 1)) তবে আমি একটি সতর্কতা পেয়েছি
ডেইল

এখানে ভেক্টর বলতে কী বোঝ? আর অর্থে নাকি গাণিতিক অর্থে? এটি আপনার উত্থাপিত প্রশ্নের তুলনায় খুব আলাদা, সুতরাং দয়া করে একটি নতুন প্রশ্ন শুরু করুন - এটিকে সম্পাদনা করবেন না - মন্তব্যে এই জাতীয় কোনও প্রকৃতির ফলো-আপ পরিচালনা করা অসম্ভব।
গ্যাভিন সিম্পসন

অপেক্ষা নেই, আমাকে আনোভা দিয়ে দুটি মডেল তুলনা করতে হবে ... ঠিক আছে, তবে আমি যদি এই সূত্রটি দিয়ে কোনও মডেল তৈরি করি: x ~ 1 এবং y y 1 সহ অন্য একটি মডেল আমি সতর্কতা পেয়েছি। আমি আর অর্থে কথা বলছি। আমি কিভাবে করব?
দাইল

1
@ ডেইল যদি আপনি দুটি opালু / লাইন পেতে দুটি রিগ্রেশন ফিট করে থাকেন তবে উভয় ডেটা সেটের জন্য আপনার কাছে এক্স এবং ওয়াই ডেটা রয়েছে। আমি আমার উত্তরে যেমনটি বলেছি, যদি দুটি ডাটা সেটগুলিতে এক্স এবং ওয়াইসের তুলনা করা যায় তবে আপনি কেবল সমস্ত ডেটা একত্রিত করতে এবং একটি গ্রুপিং ভেরিয়েবল যুক্ত করতে পারেন । আমার উদাহরণটি দেখায় যে ডামি ডেটা ব্যবহার করে এটি কীভাবে করা যায় তবে আপনার কাছে ইতিমধ্যে এক্স এবং ওয়াই ডেটা রয়েছে, এটি সেই ডেটা যা আপনি পৃথক প্রবিধানগুলিতে ফিট করতে ব্যবহার করেছিলেন।
গ্যাভিন সিম্পসন

8

প্রথম প্রশ্নটি আসলে জ্যামিতির। আপনার যদি ফর্মের দুটি লাইন থাকে:

Y=একটি1এক্স+ +1
Y=একটি2এক্স+ +2

তাহলে তারা সমান্তরাল হয় যদি একটি1=একটি2। সুতরাং theালু সমান হলে লাইনগুলি সমান্তরাল হয়।

দ্বিতীয় প্রশ্নের জন্য, সত্যটি ব্যবহার করুন কষাα=একটি1, কোথায় α রেখাটি কোণ দিয়ে তৈরি করে এক্স-ম্যাকিস, এবং একটি1লাইন theাল। সুতরাং

α=arctanএকটি1

এবং ডিগ্রীতে রূপান্তর করতে, এটি মনে করুন 2π=360। সুতরাং ডিগ্রিগুলিতে উত্তর হবে

α=arctanএকটি13602π

জন্য আর ফাংশন 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 

শেষ লাইনটি ডিগ্রি।

হালনাগাদ. নেতিবাচক opeাল মানগুলি ডিগ্রীতে রূপান্তর করার জন্য বিভিন্ন বিধি অনুসরণ করা উচিত। নোট করুন যে এক্স-অক্ষের কোণটি 0 থেকে 180 পর্যন্ত মান পেতে পারে, যেহেতু আমরা ধরে নিই যে কোণটি এক্স-অক্ষের উপরে। এর নেতিবাচক মানের জন্যএকটি1সূত্রটি হ'ল:

α=180-arctanএকটি13602π

বিঃদ্রঃ. হাইস্কুল ত্রিকোণমিতিটি স্মরণ করা আমার পক্ষে মজাদার হলেও, সত্যিই দরকারী উত্তরটি গ্যাভিন সিম্পসন দিয়েছেন। যেহেতু রিগ্রেশন লাইনের opালগুলি এলোমেলো পরিবর্তনশীল, তাদের তুলনা করার জন্য পরিসংখ্যান অনুমানের কাঠামোটি ব্যবহার করা উচিত।


ধন্যবাদ! রিগ্রেশন থেকে opeালু কীভাবে পাবেন? আমি কি সহগ এবং ইন্টারসেপ্ট পেতে হবে?
ডেইল

সম্ভবত লিনিয়ার রিগ্রেশন কিছু ফাংশন দিয়ে সরাসরি ডিগ্রি ফিরিয়ে দেয়?
ডেইল করুন

অবজ্ঞান = +45 এবং অবজ্ঞান = -315 একই লাইন নয়? একই লাইনের কথা বলছেন না?
ডেইল

1

... @ এমপিক্টাসের উত্তর অনুসরণ করে আপনি এখানে কোনও উপায়ে slালু বের 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?
ডেইল

হ্যাঁ. আপনি যদি মনে করেন যে আপনার সমস্যাটি সমাধান হয়ে গেছে, @ এমপিক্টাসের উত্তরটিকে সঠিক হিসাবে চিহ্নিত করুন, ধন্যবাদ।
রোমান Luštrik

@ রোমানলুউট্রিক, আপনি বিভাজনটি মিস করেছেন 2π
এমপিটকাস

1
@ রোমানলুস্ট্রিক, আমি কোডটি ঠিক করেছি এবং সঠিক আউটপুট যুক্ত করেছি। সংশোধন অপসারণ নির্দ্বিধায়।
এমপিটাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.