Wenn Sie einen "Familieneffekt" und einen "Gegenstandseffekt" erzielen möchten, können wir uns vorstellen, dass es für beide zufällige Abschnitte gibt, und diese dann mit dem Paket "lme4" modellieren.
Aber zuerst müssen wir jedem Geschwister eine eindeutige ID geben, anstatt einer eindeutigen ID innerhalb der Familie.
Dann können wir für "die Korrelation zwischen Messungen an Geschwistern innerhalb derselben Familie für verschiedene Elemente" Folgendes angeben:
mod<-lmer(value ~ (1|family)+(1|item), data=family)
Dies gibt uns einen festen Effektabschnitt für alle Geschwister und dann zwei zufällige Effektabschnitte (mit Varianz) für Familie und Gegenstand.
Dann können wir für "die Korrelation zwischen Messungen, die an Geschwistern innerhalb derselben Familie für denselben Gegenstand vorgenommen wurden" dasselbe tun, aber nur unsere Daten unterteilen, so dass wir ungefähr Folgendes haben:
mod2<-lmer(value ~ (1|family), data=subset(family,item=="1"))
Ich denke, dies könnte eine einfachere Herangehensweise an Ihre Frage sein. Wenn Sie jedoch nur den ICC für einen Artikel oder eine Familie haben möchten, verfügt das "psych" -Paket über eine ICC () -Funktion - seien Sie nur vorsichtig, wie Artikel und Wert in Ihren Beispieldaten verschmolzen werden.
Aktualisieren
Einige der folgenden Punkte sind neu für mich, aber ich habe es genossen, daran zu arbeiten. Ich kenne die Idee der negativen Intraclass-Korrelation wirklich nicht. Auf Wikipedia sehe ich allerdings, dass „frühe ICC-Definitionen“ eine negative Korrelation mit gepaarten Daten zuließen. Aber wie es derzeit am häufigsten verwendet wird, versteht man unter ICC den Anteil der Gesamtvarianz zwischen den Gruppen. Und dieser Wert ist immer positiv. Während Wikipedia möglicherweise nicht die maßgeblichste Referenz ist, entspricht diese Zusammenfassung der bisherigen Verwendung von ICC:
Ein Vorteil dieses ANOVA-Frameworks besteht darin, dass verschiedene Gruppen unterschiedliche Anzahlen von Datenwerten aufweisen können, was mit den früheren ICC-Statistiken schwierig zu handhaben ist. Beachten Sie auch, dass dieser ICC immer nicht negativ ist, sodass er als Anteil der Gesamtvarianz interpretiert werden kann, der „zwischen Gruppen“ liegt. Dieser ICC kann verallgemeinert werden, um kovariate Effekte zu berücksichtigen. In diesem Fall wird der ICC als Erfassung des ICC interpretiert klasseninterne Ähnlichkeit der kovariatenbereinigten Datenwerte.
Bei Daten wie den hier angegebenen kann die Korrelation zwischen den Klassen zwischen den Elementen 1, 2 und 3 durchaus negativ sein. Und wir können dies modellieren, aber der Anteil der erklärten Varianz zwischen den Gruppen wird immer noch positiv sein.
# load our data and lme4
library(lme4)
## Loading required package: Matrix
dat<-read.table("http://www.wvbauer.com/fam_sib_item.dat", header=TRUE)
Welcher Prozentsatz der Varianz ist also zwischen Familien, wobei auch die Varianz zwischen Gruppen zwischen Artikelgruppen kontrolliert wird? Wir können ein zufälliges Abfangmodell verwenden, wie Sie es vorgeschlagen haben:
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
Wir berechnen den ICC, indem wir die Varianz aus den beiden zufälligen Effektabschnitten und aus den Residuen ermitteln. Wir berechnen dann das Quadrat der Familienvarianz über die Summe der Quadrate aller Varianzen.
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
Wir können dann dasselbe für die beiden anderen Varianzschätzungen tun:
# 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
Diese Ergebnisse legen nahe, dass nur sehr wenig von der Gesamtvarianz durch die Varianz zwischen Familien oder zwischen Artikelgruppen erklärt wird. Wie oben erwähnt, kann die Korrelation zwischen den Klassen zwischen den Elementen jedoch immer noch negativ sein. Lassen Sie uns zuerst unsere Daten in einem breiteren Format erhalten:
# 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")
Jetzt können wir die Korrelation zwischen beispielsweise item1 und item3 mit einem zufälligen Achsenabschnitt für family wie zuvor modellieren. Zunächst sollte jedoch daran erinnert werden, dass für eine einfache lineare Regression die Quadratwurzel des r-Quadrats des Modells dieselbe ist wie der Korrelationskoeffizient zwischen den Klassen (Pearson-r) für Element1 und Element2.
# 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
Die Beziehung zwischen item1 und item3 ist positiv. Um jedoch zu überprüfen, ob wir hier eine negative Korrelation erhalten können, manipulieren wir unsere Daten:
# 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
Die Beziehung zwischen Elementen kann also negativ sein. Betrachtet man jedoch den Anteil der Varianz zwischen den Familien in dieser Beziehung, dh ICC (Familie), so ist diese Zahl immer noch positiv. Wie vorher:
temp2<-as.data.frame(VarCorr(mod4))$vcov
(temp2[1]^2)/(temp2[1]^2+temp2[2]^2)
## [1] 0.1694989
Für die Beziehung zwischen Punkt 1 und Punkt 3 sind also etwa 17% dieser Varianz auf die Varianz zwischen den Familien zurückzuführen. Wir haben weiterhin eine negative Korrelation zwischen Elementen zugelassen.
var(family)^2/(var(family)^2+var(item)^2)+var(residual)^2)
entspricht das? Und ja, ICCs können negativ sein. Wie ich zu Beginn meiner Frage beschrieben habe, kann man den ICC mit demgls()
Modell direkt abschätzen , was negative Schätzungen ermöglicht. Andererseits erlauben Varianzkomponentenmodelle keine negativen Schätzungen.