मार्क व्हाइट से उपयोगी प्रतिक्रिया के बाद संपादित (धन्यवाद!)
एक विकल्प एक ही मॉडल में दोनों संबंधों (बी 1, ए और बी 2 ए के साथ) की गणना करना है जो उनके बीच अंतर का भी अनुमान लगाता है। यह कई प्रतिगमन के साथ पूरा करना आसान है । आप ए के साथ एक मॉडल को आश्रित चर के रूप में चलाएंगे, और फिर बी 1 और बी 2 के लिए सभी अंकों के साथ एक निरंतर चर, एक श्रेणीगत चर यह दर्शाता है कि यह किस चर (बी 1 या बी 2) था, और उनके बीच बातचीत। आर में:
> set.seed(24601)
>
> library(tidyverse)
> library(mvtnorm)
> cov <- matrix(c(1, .4, .16,.4, 1, .4, .16, .4, 1), ncol=3, byrow=TRUE)
> mydata <- rmvnorm(n=100, sigma = cov)
> colnames(mydata) = c("A", "B1", "B2")
> head(mydata)
A B1 B2
[1,] -0.1046382 0.6031253 0.5641158
[2,] -1.9303293 -0.7663828 -0.7921836
[3,] 0.1244192 -0.4413581 -1.2376256
[4,] -3.2822601 -1.2512055 -0.5586773
[5,] -0.9543368 -0.1743740 1.1884185
[6,] -0.4843183 -0.2612668 -0.7161938
यहां मेरे द्वारा उत्पन्न डेटा से सहसंबंध हैं:
> cor(mydata)
A B1 B2
A 1.0000000 0.4726093 0.3043496
B1 0.4726093 1.0000000 0.3779376
B2 0.3043496 0.3779376 1.0000000
>
मॉडल की जरूरतों को पूरा करने के लिए डेटा का प्रारूप बदलना ("लंबे समय तक सुधार"):
> mydata <- as.data.frame(mydata) %>%
+ gather("var", "value", B1, B2)
>
यहाँ मॉडल है:
सारांश (lm (A ~ मान * var, डेटा = mydata))
Call:
lm(formula = A ~ value * var, data = mydata)
Residuals:
Min 1Q Median 3Q Max
-2.89310 -0.52638 0.02998 0.64424 2.85747
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.09699 0.09014 -1.076 0.283
value 0.47445 0.09305 5.099 8.03e-07 ***
varB2 -0.10117 0.12711 -0.796 0.427
value:varB2 -0.13256 0.13965 -0.949 0.344
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.891 on 196 degrees of freedom
Multiple R-squared: 0.158, Adjusted R-squared: 0.1451
F-statistic: 12.26 on 3 and 196 DF, p-value: 2.194e-07
यहां परिणाम (मेरे किए गए डेटा से) बताते हैं कि बी 1 और ए ("मूल्य" गुणांक की परीक्षा के बीच एक महत्वपूर्ण संबंध है, क्योंकि बी 1 "var" गुणांक के लिए संदर्भ समूह है), लेकिन यह अंतर है A के साथ B1 संबंध और A के साथ B2 संबंध महत्वपूर्ण नहीं है ("मान: varB2" गुणांक का परीक्षण)।
यदि आप प्रतिगमन गुणांक के बजाय सहसंबंध के संदर्भ में सोचना पसंद करते हैं, तो मॉडल को चलाने से पहले अपने सभी चर (ए, बी 1, और बी 2) को मानकीकृत करें और आपके द्वारा प्राप्त किए गए प्रतिगमन गुणांक को मानकीकृत किया जाएगा (बिल्कुल एक जैसी बात नहीं है शून्य-क्रम सहसंबंध, लेकिन व्याख्या के संदर्भ में बहुत करीब)।
यह भी ध्यान दें कि यह आपके विश्लेषण को केवल उन मामलों तक सीमित कर देगा जिनमें बी 1 और बी 2 दोनों हैं ( सूचीवार विलोपन )। जब तक कि आप को कम करने के लिए पर्याप्त डेटा के साथ छोड़ दिया जाता है, और जब तक कि लापता डेटा बेतरतीब ढंग से गायब हो (या कुल डेटा का एक छोटा सा पर्याप्त अनुपात ज्यादा मायने नहीं रखता है भले ही वे गैर-आयामी हैं), तो यह ठीक है।
तथ्य यह है कि आप B1 और B2 दोनों के प्रभावों के आकलन के लिए एक ही डेटासेट के लिए अपने विश्लेषण को प्रतिबंधित कर रहे हैं (बजाय थोड़ा अलग डेटासेट का उपयोग करते हुए, गायब होने के विभिन्न पैटर्न के आधार पर) सहसंबंधों के बीच अंतर की व्याख्या को थोड़ा करने का लाभ है अधिक सीधा। यदि आप प्रत्येक के लिए अलग-अलग सहसंबंधों की गणना करते हैं और फिर उनके बीच के अंतर का परीक्षण करते हैं , तो आप इस समस्या में भाग लेते हैं कि अंतर्निहित डेटा प्रत्येक मामले में थोड़ा अलग है --- आपके द्वारा देखे जाने वाले किसी भी अंतर के कारण नमूनों में अंतर जितना हो सकता है। चर के बीच वास्तविक संबंधों में।