मल्टीपल चर के साथ इंट्राक्लास सहसंबंध गुणांक (आईसीसी)


13

मान लीजिए कि मैंने भाई-बहनों में कुछ चर मापा है, जो परिवारों में निहित हैं। डेटा संरचना इस तरह दिखती है:

पारिवारिक सहोदर मूल्य
------ ------- -----
१ १ य_११
१ २ य_१२
2 1 y_21
२ २ य_२२
2 3 y_23
... ... ...

मैं एक ही परिवार के भीतर भाई-बहनों पर किए गए माप के बीच संबंध जानना चाहता हूं। रैंडम-इंटरसेप्ट मॉडल के आधार पर ICC की गणना करने का सामान्य तरीका है:

res <- lme(yij ~ 1, random = ~ 1 | family, data=dat)
getVarCov(res)[[1]] / (getVarCov(res)[[1]] + res$s^2)

यह इसके बराबर होगा:

res <- gls(yij ~ 1, correlation = corCompSymm(form = ~ 1 | family), data=dat)

सिवाय इसके कि उत्तरार्द्ध दृष्टिकोण एक नकारात्मक आईसीसी के लिए भी अनुमति देता है।

अब मान लें कि मैंने परिवारों में निहित भाई-बहनों में तीन वस्तुओं को मापा है। तो, डेटा संरचना इस तरह दिखती है:

परिवार भाई आइटम का मूल्य
------ ------- ---- -----
1 1 1 y_111
1 1 2 y_112
1 1 3 y_113
1 2 1 y_121
1 2 2 y_122
1 2 3 y_123
2 1 1 y_211
2 1 2 y_212
2 1 3 y_213
2 2 1 y_221
२ २ २ य_२२२
2 2 3 y_223
2 3 1 y_231
2 3 2 y_232
2 3 3 y_233
... ... ... ...

अब, मैं इस बारे में पता लगाना चाहता हूं:

  1. एक ही आइटम के लिए एक ही परिवार के भीतर भाई बहन पर किए गए माप के बीच संबंध
  2. विभिन्न वस्तुओं के लिए एक ही परिवार के भीतर भाई-बहनों पर किए गए माप के बीच संबंध

यदि मैं केवल परिवारों में भाई-बहन के जोड़े रखता, तो मैं बस यही करता:

res <- gls(yijk ~ item, correlation = corSymm(form = ~ 1 | family), 
           weights = varIdent(form = ~ 1 | item), data=dat)

जो मुझे फॉर्म के अवशिष्ट पर var-cov मैट्रिक्स देता है:6×6

[σ12ρ12σ1σ2ρ13σ1σ3ϕ11σ12ϕ12σ1σ2ϕ13σ1σ3σ22ρ23σ2σ3ϕ22σ22ϕ23σ2σ3σ32ϕ33σ32σ12ρ12σ1σ2ρ13σ1σ3σ22ρ23σ2σ3σ32]

जिसके आधार पर मैं आसानी से उन क्रॉस-सिबलिंग सहसंबंधों का अनुमान लगा सकता था ( मान समान आइटम के लिए ; मान विभिन्न मदों के लिए हैं)। हालांकि, जैसा कि ऊपर दिखाया गया है, कुछ परिवारों के लिए, मेरे केवल दो भाई-बहन हैं, लेकिन दो से अधिक परिवारों के लिए। तो, इससे मुझे लगता है कि मुझे एक विचरण-घटक प्रकार के मॉडल पर वापस जाने की आवश्यकता है। हालांकि, वस्तुओं के बीच सहसंबंध नकारात्मक हो सकता है, इसलिए मैं एक मॉडल का उपयोग नहीं करना चाहता हूं जो सहसंबंधों को सकारात्मक होने के लिए विवश करता है। φ जे जे 'ϕjjϕjj

कोई विचार / सुझाव कि मैं यह कैसे कर सकता हूं? किसी भी सहायता के लिए अग्रिम रूप से धन्यवाद!

जवाबों:


1

पैकेज MCMCglmm आसानी से covariance संरचनाओं और यादृच्छिक प्रभावों को संभाल और अनुमान लगा सकता है। हालाँकि यह बायेसियन आँकड़ों का उपयोग करता है जो नए उपयोगकर्ताओं को भयभीत कर सकता है। MCMCglmm कोर्स नोट्स MCMCglmm के लिए एक पूरी तरह से गाइड के लिए देखें, और इस प्रश्न के लिए विशेष रूप से अध्याय 5। मैं MCMCglmm में वास्तविक के लिए डेटा का विश्लेषण करने से पहले मॉडल अभिसरण और चेन मिक्सिंग का आकलन करने की पूरी सलाह देता हूं।

library(MCMCglmm)

MCMCglmm पुजारियों का उपयोग करता है, यह एक अनइनफॉर्मेटिव व्युत्क्रम पूर्ववर्ती है।

p<-list(G=list(
  G1=list(V=diag(2),nu=0.002)),
R=list(V=diag(2),nu=0.002))

मॉडल को फिट करें

m<-MCMCglmm(cbind(x,y)~trait-1,
#trait-1 gives each variable a separate intercept
        random=~us(trait):group,
#the random effect has a separate intercept for each variable but allows and estiamtes the covariance between them.
        rcov=~us(trait):units,
#Allows separate residual variance for each trait and estimates the covariance between them
        family=c("gaussian","gaussian"),prior=p,data=df)

मॉडल सारांश summary(m)में जी संरचना यादृच्छिक अंतरों के विचरण और सहसंयोजक का वर्णन करती है। आर संरचना अवलोकन स्तर के विचरण और अवरोधन के सहसंयोजक का वर्णन करती है, जो MCMCglmm में अवशिष्ट के रूप में कार्य करते हैं।

यदि आप एक बायेसियन अनुनय के हैं तो आप सह / प्रसरण शर्तों के पूरे पश्च वितरण प्राप्त कर सकते हैं m$VCV। ध्यान दें कि ये निश्चित प्रभावों के लिए लेखांकन के बाद के संस्करण हैं।

डेटा का अनुकरण करें

library(MASS)
n<-3000

#draws from a bivariate distribution
df<-data.frame(mvrnorm(n,mu=c(10,20),#the intercepts of x and y
                   Sigma=matrix(c(10,-3,-3,2),ncol=2)))
#the residual variance covariance of x and y


#assign random effect value
number_of_groups<-100
df$group<-rep(1:number_of_groups,length.out=n)
group_var<-data.frame(mvrnorm(number_of_groups, mu=c(0,0),Sigma=matrix(c(3,2,2,5),ncol=2)))
#the variance covariance matrix of the random effects. c(variance of x,
#covariance of x and y,covariance of x and y, variance of y)

#the variables x and y are the sum of the draws from the bivariate distribution and the random effect
df$x<-df$X1+group_var[df$group,1]
df$y<-df$X2+group_var[df$group,2]

यादृच्छिक प्रभावों के मूल सह / विचरण का अनुमान लगाने के लिए यादृच्छिक प्रभाव के लिए बड़ी संख्या में स्तरों की आवश्यकता होती है। इसके बजाय आपके मॉडल में संभावित रूप से देखे गए सह / भिन्नताओं का अनुमान लगाया जाएगा, जिनके द्वारा गणना की जा सकती हैcov(group_var)


0

यदि आप एक "पारिवारिक प्रभाव" और एक "आइटम प्रभाव" प्राप्त करना चाहते हैं, तो हम इन दोनों के लिए यादृच्छिक अवरोधक होने के बारे में सोच सकते हैं और फिर इसे 'lme4' पैकेज के साथ मॉडल कर सकते हैं।

लेकिन, पहले हमें प्रत्येक भाई-बहनों को परिवार के भीतर एक अनोखी आईडी के बजाय एक अनोखी आईडी देनी होगी ।

फिर " विभिन्न वस्तुओं के लिए एक ही परिवार के भीतर भाई-बहनों पर किए गए माप के बीच संबंध" के लिए , हम कुछ इस तरह निर्दिष्ट कर सकते हैं:

mod<-lmer(value ~ (1|family)+(1|item), data=family)

यह हमें सभी भाई-बहनों के लिए एक निश्चित प्रभाव अवरोधन देगा, और फिर परिवार और आइटम के लिए दो यादृच्छिक प्रभाव (विचरण के साथ) स्वीकार करता है।

फिर, "एक ही आइटम के लिए एक ही परिवार के भीतर भाई-बहन पर किए गए माप के बीच संबंध" के लिए , हम एक ही काम कर सकते हैं लेकिन हमारे डेटा को कम कर सकते हैं, इसलिए हमारे पास कुछ ऐसा है:

mod2<-lmer(value ~ (1|family), data=subset(family,item=="1")) 

मुझे लगता है कि यह आपके प्रश्न का आसान तरीका हो सकता है। लेकिन, यदि आप केवल आइटम या परिवार के लिए ICC चाहते हैं, तो 'साइक' पैकेज में ICC () फ़ंक्शन है - बस इस बात से सावधान रहें कि आपके उदाहरण डेटा में आइटम और मूल्य कैसे पिघले हैं।

अपडेट करें

नीचे कुछ मेरे लिए नया है, लेकिन मुझे इसे पूरा करने में मज़ा आया। मैं वास्तव में नकारात्मक इंट्राक्लास सहसंबंध के विचार से परिचित नहीं हूं। हालाँकि मैं विकिपीडिया पर देखता हूँ कि "आरंभिक आईसीसी बचावों" ने युग्मित डेटा के साथ नकारात्मक सहसंबंध के लिए अनुमति दी थी। लेकिन जैसा कि अब इसका सबसे अधिक उपयोग किया जाता है, ICC को कुल विचरण के अनुपात के रूप में समझा जाता है जो कि समूह-विचरण के बीच है। और यह मान हमेशा सकारात्मक होता है। हालांकि विकिपीडिया सबसे अधिक आधिकारिक संदर्भ नहीं हो सकता है, यह सारांश इस बात से मेल खाता है कि मैंने हमेशा ICC का उपयोग कैसे देखा है:

इस एनोवा संरचना का एक फायदा यह है कि विभिन्न समूहों में विभिन्न डेटा मान हो सकते हैं, जो पहले के आईसीसी आंकड़ों का उपयोग कर संभालना मुश्किल है। यह भी ध्यान दें कि यह ICC हमेशा गैर-नकारात्मक होता है, इसकी व्याख्या कुल विचरण के अनुपात के रूप में की जाती है, जो "समूहों के बीच" होता है। इस आईसीसी को कोवरिएट प्रभावों की अनुमति देने के लिए सामान्यीकृत किया जा सकता है, जिस स्थिति में आईसीसी को कोवेरिएट-एडजस्टेड डेटा मानों के भीतर-वर्ग समानता को कैप्चर करने के रूप में व्याख्या की जाती है।

उन्होंने कहा कि आपके द्वारा दिए गए डेटा की तरह, आइटम 1, 2 और 3 के बीच का अंतर-वर्ग सहसंबंध बहुत अच्छी तरह से नकारात्मक हो सकता है। और हम इसे मॉडल कर सकते हैं, लेकिन समूहों के बीच समझाया गया विचरण का अनुपात अभी भी सकारात्मक होगा।

# load our data and lme4
library(lme4)    
## Loading required package: Matrix    

dat<-read.table("http://www.wvbauer.com/fam_sib_item.dat", header=TRUE)

तो परिवारों के बीच कितने प्रतिशत विचरण होता है , आइटम-समूहों के बीच समूह विचरण के लिए भी नियंत्रित करना? हम आपके द्वारा सुझाए गए जैसे एक यादृच्छिक अंतर मॉडल का उपयोग कर सकते हैं:

mod<-lmer(yijk ~ (1|family)+(1|item), data=dat)
summary(mod)    
## Linear mixed model fit by REML ['lmerMod']
## Formula: yijk ~ (1 | family) + (1 | item)
##    Data: dat
## 
## REML criterion at convergence: 4392.3
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -3.6832 -0.6316  0.0015  0.6038  3.9801 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  family   (Intercept) 0.3415   0.5843  
##  item     (Intercept) 0.8767   0.9363  
##  Residual             4.2730   2.0671  
## Number of obs: 1008, groups:  family, 100; item, 3
## 
## Fixed effects:
##             Estimate Std. Error t value
## (Intercept)    2.927      0.548   5.342

हम दो यादृच्छिक प्रभावों के अंतर और अवशिष्टों से विचरण प्राप्त करके ICC की गणना करते हैं। हम तब सभी प्रकार के वर्गों के योग पर परिवार के विचरण के वर्ग की गणना करते हैं।

temp<-as.data.frame(VarCorr(mod))$vcov
temp.family<-(temp[1]^2)/(temp[1]^2+temp[2]^2+temp[3]^2)
temp.family    
## [1] 0.006090281

फिर हम अन्य दो भिन्न अनुमानों के लिए भी ऐसा कर सकते हैं:

# variance between item-groups
temp.items<-(temp[2]^2)/(temp[1]^2+temp[2]^2+temp[3]^2)
temp.items    
## [1] 0.04015039    
# variance unexplained by groups
temp.resid<-(temp[3]^2)/(temp[1]^2+temp[2]^2+temp[3]^2)
temp.resid    
## [1] 0.9537593    
# clearly then, these will sum to 1
temp.family+temp.items+temp.resid    
## [1] 1

ये परिणाम बताते हैं कि कुल विचलन में से बहुत कम परिवारों के बीच या आइटम-समूहों के बीच विचरण द्वारा समझाया गया है। लेकिन, जैसा कि ऊपर उल्लेख किया गया है, वस्तुओं के बीच अंतर-श्रेणी का संबंध अभी भी नकारात्मक हो सकता है। पहले अपना डेटा एक व्यापक प्रारूप में प्राप्त करें:

# not elegant but does the trick
dat2<-cbind(subset(dat,item==1),subset(dat,item==2)[,1],subset(dat,item==3)[,1])
names(dat2)<-c("item1","family","sibling","item","item2","item3")

अब हम सह-संबंध को मॉडल कर सकते हैं, उदाहरण के लिए, आइटम 1 और आइटम 3 पहले की तरह परिवार के लिए एक यादृच्छिक अवरोधन के साथ। लेकिन पहले, शायद यह याद रखने योग्य है कि एक साधारण रेखीय प्रतिगमन के लिए, मॉडल 1 के आर-स्क्वैयर का वर्गमूल आइटम 1 और आइटम 2 के लिए इंटर-क्लास सहसंबंध गुणांक (पीयरसन की आर) के समान है।

# a simple linear regression
mod2<-lm(item1~item3,data=dat2)
# extract pearson's r 
sqrt(summary(mod2)$r.squared)    
## [1] 0.6819125    
# check this 
cor(dat2$item1,dat2$item3)    
## [1] 0.6819125    
# yep, equal

# now, add random intercept to the model
mod3<-lmer(item1 ~ item3 + (1|family), data=dat2)
summary(mod3)    

## Linear mixed model fit by REML ['lmerMod']
## Formula: item1 ~ item3 + (1 | family)
##    Data: dat2
## 
## REML criterion at convergence: 1188.8
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.3148 -0.5348 -0.0136  0.5724  3.2589 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  family   (Intercept) 0.686    0.8283  
##  Residual             1.519    1.2323  
## Number of obs: 336, groups:  family, 100
## 
## Fixed effects:
##             Estimate Std. Error t value
## (Intercept) -0.07777    0.15277  -0.509
## item3        0.52337    0.02775  18.863
## 
## Correlation of Fixed Effects:
##       (Intr)
## item3 -0.699

आइटम 1 और आइटम 3 के बीच संबंध सकारात्मक है। लेकिन, सिर्फ यह जांचने के लिए कि हम यहां नकारात्मक सहसंबंध प्राप्त कर सकते हैं, आइए अपने डेटा में हेरफेर करें:

# just going to multiply one column by -1
# to force this cor to be negative

dat2$neg.item3<-dat2$item3*-1
cor(dat2$item1, dat2$neg.item3)    
## [1] -0.6819125    

# now we have a negative relationship
# replace item3 with this manipulated value

mod4<-lmer(item1 ~ neg.item3 + (1|family), data=dat2)
summary(mod4)    

## Linear mixed model fit by REML ['lmerMod']
## Formula: item1 ~ neg.item3 + (1 | family)
##    Data: dat2
## 
## REML criterion at convergence: 1188.8
## 
## Scaled residuals: 
##     Min      1Q  Median      3Q     Max 
## -2.3148 -0.5348 -0.0136  0.5724  3.2589 
## 
## Random effects:
##  Groups   Name        Variance Std.Dev.
##  family   (Intercept) 0.686    0.8283  
##  Residual             1.519    1.2323  
## Number of obs: 336, groups:  family, 100
## 
## Fixed effects:
##             Estimate Std. Error t value
## (Intercept) -0.07777    0.15277  -0.509
## neg.item3   -0.52337    0.02775 -18.863
## 
## Correlation of Fixed Effects:
##           (Intr)
## neg.item3 0.699

तो हाँ, आइटम के बीच का संबंध नकारात्मक हो सकता है। लेकिन अगर हम इस संबंध में परिवारों के बीच के विचरण के अनुपात को देखें, यानी आईसीसी (परिवार), तो वह संख्या अभी भी सकारात्मक होगी। पहले जैसा:

temp2<-as.data.frame(VarCorr(mod4))$vcov
(temp2[1]^2)/(temp2[1]^2+temp2[2]^2)    
## [1] 0.1694989

तो आइटम 1 और आइटम 3 के बीच संबंध के लिए, इस विचरण का लगभग 17% परिवारों के बीच विचरण के कारण है। और, हमने अभी भी आइटम के बीच नकारात्मक सहसंबंध होने की अनुमति दी है।


सुझाव के लिए धन्यवाद, लेकिन मैं नहीं देखता कि यह वास्तव में सहसंबंध कैसे प्रदान करेगा। मैंने कुछ डेटा यहां पोस्ट किया: wvbauer.com/fam_sib_item.dat ध्यान दें कि मैं 9 अलग-अलग सहसंबंधों (3 आइटम संस्करण) के साथ अनुमान लगाना चाहता हूं।
वोल्फगैंग

फिर मैं यहां संबंधित प्रश्नों की पहली सूची पर एक नज़र डालने का सुझाव देता हूं । इस पोस्ट में उत्तर बहुत अच्छा है यदि आप अंततः जो खोज रहे हैं वह केवल नौ अलग-अलग आईसीसी है।
5

धन्यवाद फिर से, लेकिन फिर भी - यह कैसे नौ ICCs प्रदान करता है? जिस मॉडल पर चर्चा की गई है, वह प्रदान नहीं करता है। इसके अलावा, यह एक विचरण घटक मॉडल है जो नकारात्मक ICCs के लिए अनुमति नहीं देगा, लेकिन जैसा कि मैंने उल्लेख किया है, मैं सभी ICCs के सकारात्मक होने की उम्मीद नहीं करता हूं।
वोल्फगैंग

मैं इस तरह के एक मॉडल में नकारात्मक आईसीसी की समस्या से परिचित नहीं हूं - यहां ऐसी कोई अड़चन नहीं हैं। लेकिन इस सहसंबंध की गणना करने के लिए, जब आप उपरोक्त कोड के साथ अपने मॉडल का सारांश देखते हैं, तो आपके पास तीन भिन्नताएं अनुमान हैं: परिवार, आइटम और अवशिष्ट। उदाहरण के लिए, जैसा कि अन्य पोस्ट में बताया गया है, ICC (परिवार), var (परिवार) ^ 2 / (var (परिवार) ^ 2 + var (आइटम) ^ 2) + var (अवशिष्ट) ^ 2) होगा। दूसरे शब्दों में, आपके परिणाम का विचरण दो यादृच्छिक प्रभावों और अवशिष्ट के लिए विचरण-वर्ग की राशि से अधिक है। आपके लिए परिवार और वस्तुओं के 9 संयोजनों को दोहराएं।
5

1
9 अलग-अलग ICC में से कौन-कौन से var(family)^2/(var(family)^2+var(item)^2)+var(residual)^2)अनुरूप हैं? और हाँ, ICCs नकारात्मक हो सकता है। जैसा कि मैंने अपने प्रश्न की शुरुआत में वर्णित किया है, कोई सीधे gls()मॉडल के साथ आईसीसी का अनुमान लगा सकता है , जो नकारात्मक अनुमान लगाने की अनुमति देता है। दूसरी ओर, विचरण घटक मॉडल नकारात्मक अनुमानों की अनुमति नहीं देते हैं।
वोल्फगैंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.