我想为不平衡的数据集创建一个混合线性模型(每个主题的事件数量不同,某些时间点的一些缺失值)。我正在使用R version 3.2.1 (2015-06-18), package: nlme_3.1-120。
模拟数据来了:
library(nlme)
set.seed(1)
subject <- factor(rep(c(1, 1, 2, 3, 4, 4, 4, 5, 6, 7, 7, 8, 9, 9, 10,
11, 11, 11, 12, 13), 10))
event <- factor(rep(1:20, 10))
timepoint <- rep(1:10, each = 20)
measure <- rnorm(length(timepoint)) + timepoint*0.3
timepoint <- factor(timepoint)
measure[sample(1:length(measure), rpois(5,4))] <- NA
data <- data.frame(subject=subject, event=event, timepoint=timepoint,
measure=measure)
str(data)
该模型应将不同时间点的变量“测量”预测为固定效应,并将受试者和事件预测为随机效应。
base <- lme(measure ~ 1, data=data, random= ~ 1|subject,
na.action=na.exclude, method="ML")
intercept <- lme(measure ~ timepoint, data=data, random= ~ 1|subject,
na.action=na.exclude, method="ML")
nested <- lme(measure ~ timepoint, data=data, random= ~ 1|subject/event,
na.action=na.exclude, method="ML")
anova(base, intercept, nested)
我想拟合随机截距和斜率,因为截距和斜率可能因主题和事件而异。但是,当我添加随机斜率效应时,模型不会收敛。它没有通过任何错误消息,但它运行到无穷大。我能做些什么来创建一个随机斜率收敛的模型?
洞穴模型无穷无尽
slope <- lme(measure ~ timepoint, data=data, random= ~ timepoint|subject,
na.action=na.exclude, method="ML")
我也试过这个
洞穴模型无穷无尽
slope2 <- lme(measure ~ timepoint, data=data, random= ~ timepoint|subject,
na.action=na.exclude, method="ML", control=list(opt="optim"))
洞穴某些模型可能会无休止地运行
slope3 <- lme(measure ~ timepoint, data=data, random= ~ timepoint|subject/event,
na.action=na.exclude, method="ML", control = list(opt="optim"))
covariance <- lme(measure ~ timepoint, data=data, random= ~ timepoint|subject,
correlation=corAR1(),na.action = na.exclude, method="ML")
covariance2 <- lme(measure ~ timepoint, data=data, random= ~ timepoint|subject,
correlation=corAR1(0), na.action=na.exclude, method="ML",
control=list(opt="optim"))
covariance3 <- lme(measure ~ timepoint, data=data, random= ~ timepoint|subject,
correlation=corAR1(0), na.action=na.exclude, method="ML",
control=list(maxlter=1000))