如果您希望获得“家庭效果”和“项目效果”,我们可以考虑对这两种方法进行随机拦截,然后使用“ lme4”包对其进行建模。
但是,首先我们必须给每个同级唯一的ID,而不是一个唯一的ID 内的家庭。
然后,对于“对同一个家族中不同项目的兄弟姐妹进行的测量之间的相关性”,我们可以指定以下内容:
mod<-lmer(value ~ (1|family)+(1|item), data=family)
这将给我们所有兄弟姐妹一个固定的效果拦截器,然后是家庭和物品的两个随机效果拦截器(有差异)。
然后,对于“ 同一项目中对同一个家族中的兄弟姐妹进行的测量之间的相关性”,我们可以做同样的事情,只是对数据进行子集化,所以我们有类似的东西:
mod2<-lmer(value ~ (1|family), data=subset(family,item=="1"))
我认为这可能是解决您问题的简便方法。但是,如果您只想为商品或家庭提供ICC,则“ psych”程序包具有ICC()函数-请谨慎对待示例数据中商品和价值的融合方式。
更新资料
以下内容对我来说是新手,但是我很喜欢解决它。我真的不熟悉否定类内相关的想法。尽管我确实在Wikipedia上看到“早期ICC定义”允许与配对数据负相关。但是,正如现在最常用的那样,ICC被理解为是组间方差中总方差的比例。该值始终为正。尽管Wikipedia可能不是最权威的参考书,但此摘要与我一直看到ICC使用的方式相对应:
此ANOVA框架的优点在于,不同的组可以具有不同数量的数据值,使用较早的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")
现在,我们可以像以前一样使用家庭随机截距对例如item1和item3之间的相关性进行建模。但首先,也许值得回想一下,对于简单的线性回归,模型的r平方的平方根与item1和item2的类间相关系数(皮尔逊r)相同。
# 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
item1和item3之间的关系是正的。但是,只是为了检查我们在这里可以得到负相关,我们来处理数据:
# 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
所以是的,项目之间的关系可以是负的。但是,如果我们看一下这种关系中家庭之间的差异比例,即ICC(家庭),那么这个数字仍然是正的。像之前一样:
temp2<-as.data.frame(VarCorr(mod4))$vcov
(temp2[1]^2)/(temp2[1]^2+temp2[2]^2)
## [1] 0.1694989
因此,对于第1项和第3项之间的关系,这种差异的大约17%是由于家庭之间的差异引起的。而且,我们仍然允许项目之间存在负相关。