Hệ số tương quan nội bộ (ICC) với nhiều biến


13

Giả sử tôi đã đo một số biến ở anh chị em, được lồng trong các gia đình. Cấu trúc dữ liệu trông như thế này:

giá trị anh chị em
------ ------- -----
1 1 y_11
1 2 y_12
2 1 y_21
2 2 y_22
2 3 y_23
... ... ...

Tôi muốn biết mối tương quan giữa các phép đo được thực hiện trên anh chị em trong cùng một gia đình. Cách thông thường để làm điều đó là tính toán ICC dựa trên mô hình chặn ngẫu nhiên:

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

Điều này sẽ tương đương với:

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

ngoại trừ cách tiếp cận sau cũng cho phép ICC âm.

Bây giờ giả sử tôi đã đo ba vật phẩm trong anh chị em được lồng trong các gia đình. Vì vậy, cấu trúc dữ liệu trông như thế này:

giá trị mục anh chị em
------ ------- ---- -----
1 1 1 y_11
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_21
2 2 2 y_ 222
2 2 3 y_223
2 3 1 y_231
2 3 2 y_232
2 3 3 y_233
... ... ... ...

Bây giờ, tôi muốn tìm hiểu về:

  1. mối tương quan giữa các phép đo được thực hiện trên anh chị em trong cùng một gia đình cho cùng một mặt hàng
  2. mối tương quan giữa các phép đo được thực hiện trên anh chị em trong cùng một gia đình cho các mặt hàng khác nhau

Nếu tôi chỉ có cặp anh chị em trong gia đình, tôi sẽ làm:

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

cung cấp cho tôi ma trận var-cov trên các phần dư của biểu mẫu: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]

dựa vào đó tôi có thể dễ dàng ước tính các mối tương quan anh chị em đó (các giá trị là các ICC cho cùng một mục; các giá trị là các ICC cho các mục khác nhau). Tuy nhiên, như hình trên, đối với một số gia đình, tôi chỉ có hai anh chị em, nhưng đối với các gia đình khác thì hơn hai. Vì vậy, điều đó khiến tôi nghĩ rằng tôi cần quay lại kiểu mô hình thành phần phương sai. Tuy nhiên, mối tương quan giữa các mục có thể là tiêu cực, vì vậy tôi không muốn sử dụng một mô hình ràng buộc các mối tương quan là tích cực.φjjφjj'

Bất kỳ ý tưởng / đề xuất về cách tôi có thể tiếp cận điều này? Cảm ơn trước sự giúp đỡ nào!

Câu trả lời:


1

Gói MCMCglmm có thể dễ dàng xử lý và ước tính các cấu trúc hiệp phương sai và các hiệu ứng ngẫu nhiên. Tuy nhiên, nó sử dụng số liệu thống kê bayes có thể khiến người dùng mới sợ hãi. Xem Ghi chú khóa học MCMCglmm để biết hướng dẫn kỹ lưỡng về MCMCglmm và đặc biệt là chương 5 cho câu hỏi này. Tôi hoàn toàn khuyên bạn nên đọc về việc đánh giá sự hội tụ mô hình và trộn chuỗi trước khi phân tích dữ liệu thực trong MCMCglmm.

library(MCMCglmm)

MCMCglmm sử dụng các linh mục, đây là một điều ước nghịch đảo không chính xác trước đó.

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

Phù hợp với mô hình

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)

Trong tóm tắt mô hình summary(m), cấu trúc G mô tả phương sai và hiệp phương sai của các lần chặn ngẫu nhiên. Cấu trúc R mô tả phương sai mức quan sát và hiệp phương sai của giao thoa, có chức năng như phần dư trong MCMCglmm.

Nếu bạn là người thuyết phục Bayes, bạn có thể nhận được toàn bộ phân phối sau của các điều khoản đồng / phương sai m$VCV. Lưu ý rằng đây là những phương sai sau khi tính các hiệu ứng cố định.

mô phỏng dữ liệu

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]

Ước tính đồng / phương sai ban đầu của các hiệu ứng ngẫu nhiên đòi hỏi một số lượng lớn các mức cho hiệu ứng ngẫu nhiên. Thay vào đó, mô hình của bạn có thể sẽ ước tính các đồng phương sai được quan sát có thể được tính bằngcov(group_var)


0

Nếu bạn đang tìm kiếm để có được "hiệu ứng gia đình" và "hiệu ứng vật phẩm", chúng ta có thể nghĩ đến việc có những lần chặn ngẫu nhiên cho cả hai điều này, và sau đó mô hình hóa điều này với gói 'lme4'.

Nhưng, trước tiên chúng ta phải cho mỗi anh chị em một id duy nhất, thay vì một id duy nhất trong gia đình.

Sau đó, đối với "mối tương quan giữa các phép đo được thực hiện đối với anh chị em trong cùng một gia đình đối với các mặt hàng khác nhau ", chúng ta có thể chỉ định một số thứ như:

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

Điều này sẽ cung cấp cho chúng tôi một hiệu ứng đánh chặn cố định cho tất cả anh chị em, và sau đó hai hiệu ứng ngẫu nhiên chặn (với phương sai), cho gia đình và vật phẩm.

Sau đó, đối với "mối tương quan giữa các phép đo đối với anh chị em trong cùng một gia đình cho cùng một mặt hàng", chúng ta có thể làm điều tương tự nhưng chỉ cần đặt lại dữ liệu của mình, vì vậy chúng ta có một cái gì đó như:

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

Tôi nghĩ rằng đây có thể là một cách tiếp cận dễ dàng hơn cho câu hỏi của bạn. Nhưng, nếu bạn chỉ muốn ICC cho vật phẩm hoặc gia đình, gói 'tâm lý' có chức năng ICC () - hãy thận trọng về cách làm tan chảy vật phẩm và giá trị trong dữ liệu mẫu của bạn.

Cập nhật

Một số điều dưới đây là mới đối với tôi, nhưng tôi thích làm việc đó. Tôi thực sự không quen thuộc với ý tưởng về tương quan nội hàm tiêu cực. Mặc dù tôi thấy trên Wikipedia rằng những khiếm khuyết ban đầu của ICC đã cho phép một mối tương quan tiêu cực với dữ liệu được ghép nối. Nhưng vì nó được sử dụng phổ biến nhất hiện nay, ICC được hiểu là tỷ lệ của tổng phương sai giữa phương sai giữa các nhóm. Và giá trị này luôn luôn tích cực. Mặc dù Wikipedia có thể không phải là tài liệu tham khảo có thẩm quyền nhất, nhưng tóm tắt này tương ứng với cách tôi luôn thấy ICC được sử dụng:

Một lợi thế của khung ANOVA này là các nhóm khác nhau có thể có số lượng giá trị dữ liệu khác nhau, rất khó xử lý bằng cách sử dụng số liệu thống kê ICC trước đó. Cũng lưu ý rằng ICC này luôn không âm, cho phép nó được hiểu là tỷ lệ của tổng phương sai là giữa các nhóm. Đây là ICC có thể được khái quát hóa để cho phép các hiệu ứng đồng biến, trong trường hợp đó ICC được hiểu là bắt giữ độ tương tự trong lớp của các giá trị dữ liệu được điều chỉnh đồng biến.

Điều đó nói rằng, với dữ liệu như bạn đã đưa ra ở đây, mối tương quan giữa các lớp giữa các mục 1, 2 và 3 rất có thể là âm. Và chúng ta có thể mô hình hóa điều này, nhưng tỷ lệ phương sai được giải thích giữa các nhóm vẫn sẽ dương.

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

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

Vì vậy, bao nhiêu phần trăm của phương sai giữa các gia đình, cũng kiểm soát giữa phương sai nhóm giữa các nhóm mục? Chúng tôi có thể sử dụng mô hình chặn ngẫu nhiên như bạn đề xuất:

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

Chúng tôi tính toán ICC bằng cách lấy phương sai từ hai hiệu ứng ngẫu nhiên chặn và từ phần dư. Sau đó, chúng tôi tính bình phương của phương sai gia đình trên tổng bình phương của tất cả các phương sai.

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

Sau đó chúng ta có thể làm tương tự cho hai ước tính phương sai khác:

# 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

Những kết quả này cho thấy rằng rất ít trong tổng phương sai được giải thích bởi phương sai giữa các gia đình hoặc giữa các nhóm vật phẩm. Nhưng, như đã lưu ý ở trên, mối tương quan giữa các lớp giữa các mặt hàng vẫn có thể là âm. Trước tiên, hãy lấy dữ liệu của chúng tôi ở định dạng rộng hơn:

# 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")

Bây giờ chúng ta có thể mô hình hóa mối tương quan giữa, ví dụ, item1 và item3 với một đánh chặn ngẫu nhiên cho gia đình như trước đây. Nhưng trước tiên, có lẽ đáng nhớ là đối với hồi quy tuyến tính đơn giản, căn bậc hai của bình phương r của mô hình giống như hệ số tương quan giữa các lớp (pearson's r) cho mục 1 và mục2.

# 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

Mối quan hệ giữa item1 và item3 là tích cực. Nhưng, chỉ để kiểm tra xem chúng ta có thể có mối tương quan tiêu cực ở đây không, hãy thao túng dữ liệu của chúng tôi:

# 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

Vì vậy, có, mối quan hệ giữa các mặt hàng có thể là tiêu cực. Nhưng nếu chúng ta xem xét tỷ lệ phương sai giữa các gia đình trong mối quan hệ này, tức là ICC (gia đình), con số đó vẫn sẽ dương. Như trước:

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

Vì vậy, đối với mối quan hệ giữa item1 và item3, khoảng 17% phương sai này là do phương sai giữa các gia đình. Và, chúng tôi vẫn cho phép có mối tương quan ngược chiều giữa các mục.


Cảm ơn lời đề nghị, nhưng tôi không thấy cách này thực sự sẽ cung cấp các mối tương quan. Tôi đã đăng một số dữ liệu ở đây: wvbauer.com/fam_sib_item.dat Lưu ý rằng tôi muốn ước tính 9 mối tương quan khác nhau (cộng với 3 phương sai của mục).
Wolfgang

Sau đó, tôi khuyên bạn nên xem qua danh sách đầu tiên của Câu hỏi liên quan ở đây . Câu trả lời trong bài viết này là rất tốt nếu điều cuối cùng bạn tìm kiếm chỉ là chín ICC khác nhau.
5ayat

Cảm ơn một lần nữa, nhưng vẫn vậy - làm thế nào mà cung cấp chín ICC? Mô hình thảo luận ở đó không cung cấp điều đó. Ngoài ra, đây là mô hình thành phần phương sai không cho phép các ICC âm, nhưng như tôi đã đề cập, tôi không hy vọng tất cả các ICC đều dương.
Wolfgang

Tôi không quen với vấn đề ICC âm trong một mô hình như thế này - không có ràng buộc nào như vậy ở đây. Nhưng để tính toán mối tương quan này, khi bạn nhìn vào bản tóm tắt mô hình của mình với mã ở trên, bạn có ba ước tính phương sai: gia đình, vật phẩm và số dư. Vì vậy, ví dụ, như được giải thích trong bài đăng khác, ICC (gia đình), sẽ là var (gia đình) ^ 2 / (var (gia đình) ^ 2 + var (mục) ^ 2) + var (dư) ^ 2). Nói cách khác, phương sai của kết quả của bạn bình phương trên tổng phương sai bình phương cho hai hiệu ứng ngẫu nhiên và phần dư. Lặp lại cho bạn 9 kết hợp của gia đình và các mặt hàng.
5ayat

1
Mà trong số 9 ICC khác nhau không var(family)^2/(var(family)^2+var(item)^2)+var(residual)^2)tương ứng với? Và vâng, ICC có thể âm tính. Như tôi đã mô tả ở đầu câu hỏi của mình, người ta có thể ước tính trực tiếp ICC với gls()mô hình, cho phép ước tính âm. Mặt khác, các mô hình thành phần phương sai không cho phép ước tính âm.
Wolfgang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.