2016-07-24 7 views
5

मेरे पास R में 10 चर के data.frame हैं। चलो उन्हें var1var2 ... फोन var10डेटा फ्रेम के कई चर के बीच सहसंबंध

मैं var2, var3 के संबंध में var1 में से एक के सह-संबंध को खोजने के लिए चाहते हैं ... var10

हम ऐसा कैसे कर सकता है?

cor फ़ंक्शन एक समय में 2 चर के बीच सहसंबंध पा सकता है। इसका उपयोग करके मुझे cor प्रत्येक विश्लेषण

+0

: 'लागू (आईरिस [, 2: 4], 2, फ़ंक्शन (एक्स) कोर (एक्स, आईरिस $ सेपल। लम्बाई)) ' –

+6

आप' cor (data.frame) 'का उपयोग कर सकते हैं जो आपको सभी चर के बीच सहसंबंध का मैट्रिक्स देगा । बस इस मैट्रिक्स से प्रासंगिक पंक्ति/कॉलम निकालें। – Sumedh

+0

'कोर (डेटा $ var1, डेटा [सी (" var2 "," var3 "," var4 ")])। तो फिलिप के उदाहरण का उपयोग करते हुए, 'कोर (आईरिस $ सेपल। लम्बाई, आईरिस [2: 4]) ' – user20650

उत्तर

3

मेरा पैकेज corrr, जो सहसंबंधों का पता लगाने में मदद करता है, के लिए एक सरल समाधान है। मैं एक उदाहरण के रूप में mtcars डेटा सेट का उपयोग करूंगा, और कहूंगा कि हम सभी अन्य चर के साथ mpg के सहसंबंध पर ध्यान केंद्रित करना चाहते हैं।

install.packages("corrr") # though keep eye out for new version coming soon 
library(corrr) 
mtcars %>% correlate() %>% focus(mpg) 


#> rowname  mpg 
#>  <chr>  <dbl> 
#> 1  cyl -0.8521620 
#> 2  disp -0.8475514 
#> 3  hp -0.7761684 
#> 4  drat 0.6811719 
#> 5  wt -0.8676594 
#> 6  qsec 0.4186840 
#> 7  vs 0.6640389 
#> 8  am 0.5998324 
#> 9  gear 0.4802848 
#> 10 carb -0.5509251 

यहाँ, correlate() एक संबंध डेटा फ्रेम पैदा करता है, और focus() आप सभी अन्य लोगों के साथ कुछ चर के परस्पर संबंधों पर केंद्रित कर सकते हैं।

एफवाईआई, focus()dplyr पैकेज से select() के समान काम करता है, सिवाय इसके कि यह पंक्तियों के साथ-साथ कॉलम को भी बदल देता है। तो यदि आप select() से परिचित हैं, तो आपको focus() का उपयोग करना आसान लगेगा। उदाहरण के लिए:

mtcars %>% correlate() %>% focus(mpg:drat) 

#> rowname  mpg  cyl  disp   hp  drat 
#>  <chr>  <dbl>  <dbl>  <dbl>  <dbl>  <dbl> 
#> 1  wt -0.8676594 0.7824958 0.8879799 0.6587479 -0.71244065 
#> 2 qsec 0.4186840 -0.5912421 -0.4336979 -0.7082234 0.09120476 
#> 3  vs 0.6640389 -0.8108118 -0.7104159 -0.7230967 0.44027846 
#> 4  am 0.5998324 -0.5226070 -0.5912270 -0.2432043 0.71271113 
#> 5 gear 0.4802848 -0.4926866 -0.5555692 -0.1257043 0.69961013 
#> 6 carb -0.5509251 0.5269883 0.3949769 0.7498125 -0.09078980 
0

एक और तरीका है Hmisc और corrplot पुस्तकालयों का उपयोग करने के लिए सभी जोड़ों को, महत्व और इतने की तरह एक सुंदर साजिश के बीच सह-संबंध प्राप्त करने के लिए किया जाएगा: आप एक बयान लागू इस्तेमाल कर सकते हैं

#Your data frame (4 variables instead of 10)  
df<-data.frame(a=c(1:100),b=rpois(1:100,.2),c=rpois(1:100,.4),d=rpois(1:100,.8),e=2*c(1:100)) 

#setup 
library(Hmisc) 
library(corrplot) 

df<-scale(df)# normalize the data frame. This will also convert the df to a matrix. 

corr<-rcorr(df) # compute Pearson's (or spearman's corr) with rcorr from Hmisc package. I like rcorr as it allows to separately access the correlations, the # or observations and the p-value. ?rcorr is worth a read. 
corr_r<-as.matrix(corr[[1]])# Access the correlation matrix. 
corr_r[,1]# subset the correlation of "a" (=var1) with the rest if you want. 
pval<-as.matrix(corr[[3]])# get the p-values 

corrplot(corr_r,method="circle",type="lower",diag=FALSE,tl.col="black",tl.cex=1,tl.offset=0.1,tl.srt=45)# plot all pairs 

corrplot(corr_r,p.mat = pval,sig.level=0.05,insig = "blank",method="circle",type="lower",diag=FALSE,tl.col="black",tl.cex=1,tl.offset=0.1,tl.srt=45)# plot pairs with significance cutoff defined by "p.mat" 
संबंधित मुद्दे