我有不同年份的儿童考试成绩和人口统计数据(纵向数据),需要对其运行几个比较模型。我对如何在R
中设置级别 1 和级别 2 变量感到困惑。
我的数据帧 (df):
Student Year Gender Race MathScore DepressionScore MemoryScore
1 1999 M C 80 15 80
1 2000 M C 81 25 60
1 2001 M C 70 50 75
2 1999 F C 65 15 99
2 2000 F C 70 31 98
2 2001 F C 71 30 99
3 1999 F AA 92 10 90
3 2000 F AA 89 10 91
3 2001 F AA 85 26 80
我想运行至少两个模型并进行比较,但我不确定如何将时变协变量与时变协变量分开。我试过这些:
summary(fix <-lme(MathScore ~ Gender+Race+DepressionScore+MemoryScore, random= Year|Student, data=df, na.action="na.omit")
summary(fix2 <- lme(MathScore ~ 1+Gender+Race+DepressionScore+MemoryScore, random=~1|Year, data=df, na.action=na.omit))
我的问题是: 1. 在"修复"中,所有协变量都应该遵循第一个 tilda,random~ be Year|Student
应该吗?
如何指定抑郁分数和记忆分数也因年级和学生而异?
fix2 应该有"
random=~1+Student|Year" or just "random=~1|Year
"吗?
你有多年的学生嵌套,所以随机截取模型的命令应该是:
summary(fix <-lme(MathScore ~ Gender+Race+DepressionScore+MemoryScore, random= ~1|Student/Years, data=df, na.action="na.omit")
要分离时变效应和时变效应,您需要分离时变因子中的估计值(参见:Fairbrother,M.,2014。用于分析比较纵向调查数据集的两种多级建模技术。政治学研究与方法2,119-140。DOI:10.1017/PSRM.2013.24)
这需要的是让学生将时变变量居中,以估计持续"学生"效应的影响,并从原始变量中减去它们以分离时变部分。如果没有数据集,我不确定这是否有效,但请尝试类似
ddply(dat, "Student", transform, mean.std.DepressionScore = mean(DepressionScore))
ddply(dat, "Student", transform, mean.std.MemoryScore= mean(MemoryScore))
df$time.DepressionScore <- df$DepressionScore-df$mean.std.DepressionScore
df$time.MemoryScore<- df$MemoryScore-df$mean.std.MemoryScore
然后模型变为:
summary(fix <-lme(MathScore ~ Gender+Race+mean.std.DepressionScore+time.DepressionScore+mean.std.MemoryScore+time.MemoryScore + Year, random= ~1|Year/Student, data=df, na.action="na.omit")
在此模型中,mean.std 值提供了学生之间"持续存在的时间差异的估计值,而时间。 估计值是衡量学生"内部"加班变化的指标。您需要多年的固定效应估计,以控制可能同样影响时间持久性和时间变化效应的趋势。