Se stai cercando di ottenere un "effetto famiglia" e un "effetto oggetto", possiamo pensare che ci siano intercettazioni casuali per entrambi, e quindi modellarlo con il pacchetto 'lme4'.
Ma prima dobbiamo dare a ciascun fratello un ID unico, piuttosto che un ID unico all'interno della famiglia.
Quindi per "la correlazione tra le misure prese sui fratelli della stessa famiglia per oggetti diversi ", possiamo specificare qualcosa come:
mod<-lmer(value ~ (1|family)+(1|item), data=family)
Questo ci darà un'intercettazione di effetti fissi per tutti i fratelli e poi due intercettazioni di effetti casuali (con varianza), per famiglia e oggetto.
Quindi, per "la correlazione tra le misurazioni prese sui fratelli della stessa famiglia per lo stesso oggetto", possiamo fare la stessa cosa ma semplicemente sottoinsieme i nostri dati, quindi abbiamo qualcosa di simile:
mod2<-lmer(value ~ (1|family), data=subset(family,item=="1"))
Penso che questo potrebbe essere un approccio più semplice alla tua domanda. Ma, se vuoi solo l'ICC per oggetto o famiglia, il pacchetto 'psych' ha una funzione ICC () - stai solo attento a come si fondono oggetto e valore nei tuoi dati di esempio.
Aggiornare
Alcune delle seguenti sono nuove per me, ma mi è piaciuto elaborarlo. Non ho davvero familiarità con l'idea di correlazione intraclasse negativa. Tuttavia, vedo su Wikipedia che le "prime definizioni ICC" consentivano una correlazione negativa con i dati associati. Ma poiché è più comunemente usato ora, ICC è intesa come la proporzione della varianza totale che è varianza tra i gruppi. E questo valore è sempre positivo. Mentre Wikipedia potrebbe non essere il riferimento più autorevole, questo riassunto corrisponde a come ho sempre visto l'ICC usato:
Un vantaggio di questo framework ANOVA è che gruppi diversi possono avere un numero diverso di valori di dati, che è difficile da gestire usando le statistiche ICC precedenti. Nota anche che questo ICC è sempre non negativo, permettendogli di essere interpretato come la proporzione della varianza totale che è "tra i gruppi". Questo ICC può essere generalizzato per consentire effetti covariati, nel qual caso l'ICC viene interpretato come una cattura della somiglianza all'interno della classe dei valori dei dati adeguati alla covariata.
Detto questo, con dati come quelli forniti qui, la correlazione tra le classi tra gli elementi 1, 2 e 3 potrebbe benissimo essere negativa. E possiamo modellarlo, ma la proporzione della varianza spiegata tra i gruppi sarà comunque positiva.
# load our data and lme4
library(lme4)
## Loading required package: Matrix
dat<-read.table("http://www.wvbauer.com/fam_sib_item.dat", header=TRUE)
Quindi, quale percentuale della varianza è tra le famiglie, controllando anche tra la varianza di gruppo tra gruppi di articoli? Possiamo usare un modello di intercettazione casuale come hai suggerito:
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
Calcoliamo l'ICC ottenendo la varianza dalle due intercettazioni di effetti casuali e dai residui. Calcoliamo quindi il quadrato della varianza familiare sulla somma dei quadrati di tutte le varianze.
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
Possiamo quindi fare lo stesso per le altre due stime di varianza:
# 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
Questi risultati suggeriscono che molto poco della varianza totale è spiegata dalla varianza tra famiglie o tra gruppi di articoli. Ma, come notato sopra, la correlazione tra classi tra gli elementi potrebbe ancora essere negativa. Innanzitutto otteniamo i nostri dati in un formato più ampio:
# 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")
Ora possiamo modellare la correlazione tra, ad esempio, item1 e item3 con un'intercettazione casuale per la famiglia come prima. Ma prima, forse vale la pena ricordare che per una semplice regressione lineare, la radice quadrata del quadrato r del modello è la stessa del coefficiente di correlazione tra le classi (r di Pearson) per l'elemento 1 e l'elemento2.
# 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
La relazione tra item1 e item3 è positiva. Ma, solo per verificare che qui possiamo ottenere una correlazione negativa, manipoliamo i nostri dati:
# 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
Quindi sì, la relazione tra gli articoli può essere negativa. Ma se osserviamo la proporzione di varianza tra le famiglie in questa relazione, cioè ICC (famiglia), quel numero sarà comunque positivo. Come prima:
temp2<-as.data.frame(VarCorr(mod4))$vcov
(temp2[1]^2)/(temp2[1]^2+temp2[2]^2)
## [1] 0.1694989
Quindi, per la relazione tra item1 e item3, circa il 17% di questa varianza è dovuto alla varianza tra famiglie. E abbiamo ancora permesso che ci sia una correlazione negativa tra gli articoli.