2014-10-20 14 views
3

不工作我不能在這個模型lme4插入隨機斜率(1.1-7):爲主題的時間隨機斜率lme4

> difJS<-lmer(JS~Tempo+(Tempo|id),dat,na.action=na.omit) 
Error: number of observations (=274) <= number of random effects (=278) for term 
(Tempo | id); the random-effects parameters and the residual variance (or scale 
parameter) are probably unidentifiable 

隨着NLME它工作:

> JSprova<-lme(JS~Tempo,random=~1+Tempo|id,data=dat,na.action=na.omit) 
    > summary(JSprova) 
Linear mixed-effects model fit by REML Data: dat 
AIC  BIC logLik 
769.6847 791.3196 -378.8424 

Random effects: 
Formula: ~1 + Tempo | id 
Structure: General positive-definite, Log-Cholesky parametrization 
      StdDev Corr 
(Intercept) 1.1981593 (Intr) 
Tempo  0.5409468 -0.692 
Residual 0.5597984  

Fixed effects: JS ~ Tempo 
       Value Std.Error DF t-value p-value 
(Intercept) 4.116867 0.14789184 138 27.837013 0.0000 
Tempo  -0.207240 0.08227474 134 -2.518874 0.0129 
Correlation: 
     (Intr) 
Tempo -0.837 

Standardized Within-Group Residuals: 
     Min   Q1   Med   Q3   Max 
-2.79269550 -0.39879115 0.09688881 0.41525770 2.32111142 

Number of Observations: 274 
Number of Groups: 139 

我認爲這是一個缺少數據的問題,因爲我有幾個案例,其中有兩個DV中缺少數據,但na.action=na.omit不應該這兩個包的行爲方式相同?

+0

您使用的是什麼版本的lme4?是否運行:'sleepstudy $ Reaction [1:10] < - NA;(fm1 < - lmer(Reaction〜Days +(Days | Subject),sleepstudy))' – user20650 2014-10-20 12:22:02

+0

是的,它正在工作。我在帖子中添加了lme4的版本。 – 2014-10-20 13:18:09

+1

一旦我明白了這個問題,我發現這個討論非常有用:[每個級別有一個觀察的混合模型](http://stats.stackexchange.com/q/65371/58940)。 – 2014-10-20 17:00:58

回答

6

它與lme「工作」,但我99%確定您的隨機斜率確實與殘差變化混淆。問題在於,每個受試者只有兩次測量(或者每個受試者只有一次測量 - 在這種情況下這並不重要),因此每個個體隨機斜率加隨機截距爲每次觀察提供一個隨機效應。

如果您在lme擬合上嘗試intervals(),它會給您一個錯誤,說明方差 - 協方差矩陣是無法識別的。

您可以強制lmer通過禁用某些可識別性檢查(參見下文)來完成此操作。

library("lme4") 
library("nlme") 
library("plyr") 

的數據限制每個個體只有兩點:

如果你願意,你可以強制lmer,以適應這種模式:

m2B <- lmer(Reaction~Days+(Days|Subject),data=sleepstudy0, 
     control=lmerControl(check.nobs.vs.nRE="ignore")) 
## warning messages 

估計方差估計不同由lme估計,但這並不奇怪,因爲一些參數是不可識別的。

如果您只對固定效果的推論感興趣,那麼可能可以忽略這些問題,但我不會推薦它。

明智的做法是認識到斜坡之間的變化是無法識別的;有可能是斜坡之間的個體差異,但你不能用這個模型估計它。不要試圖;擬合一個隨機截距模型,並讓隱式/默認隨機誤差項處理斜率之間的變化。

有一個recent related question on CrossValidated;那裏我也提到another example

+1

感謝本,現在我明白了這一點。但現在做什麼更好?在我看來,使用具有不可靠估計的更精細的模型是沒有用的。我應該使用隨機攔截模型嗎?對於我所能理解的,這是一個很大的限制,因爲時間的變化可以,而且可能不同於主題。這不正確嗎? – 2014-10-20 16:21:58