Bart
Bart

Reputation: 81

SAS PROC MIXED vs lmerTest output

I am trying to reproduce output from the PROC MIXED procedure using the Satterwaithe approximation in SAS using the lmerTest package in R.

This is my data:

Participant Condition   Data
1   0   -1,032941629
1   0   0,869267841
1   0   -1,636722191
1   0   -1,15451393
1   0   0,340454836
1   0   -0,399315906
1   1   0,668983169
1   1   1,937817592
1   1   3,110013393
1   1   3,23409718
2   0   0,806881925
2   1   2,71020911
2   1   3,406864275
2   1   1,494288182
2   1   0,741827047
2   1   2,532062685
2   1   3,702118917
2   1   1,825046681
2   1   4,37167021
2   1   1,85125279
3   0   0,288743786
3   0   1,024396121
3   1   2,051281876
3   1   0,24543851
3   1   3,349677964
3   1   1,565395822
3   1   3,077031712
3   1   1,087494708
3   1   1,546150033
3   1   0,440249347

Using the following statement in SAS:

proc mixed data=mbd;
        class participant;
        model data = condition / solution ddfm=sat;
        random intercept condition / sub=participant;
        run;

I get this output:

enter image description here

My problem is that I can't seem to reproduce these results using lmerTest in R.

I thought that lmer(Data ~ Condition + (1 | Participant) + (Condition | Participant), REML=TRUE) was the equivalent statement of what I did in SAS but this gives different results. Note that the degrees of freedom are way off from the SAS output so I think I'm estimating parameters in R that I'm not estimating in SAS. I tried several other statements in R but I didn't manage to get the exact same output. However this should be possible as the lmer() function from the lmerTest package also uses the Satterwaithe approximation and should be exactly the same as the SAS PROC MIXED procedure.

Does anybody know what I'm doing wrong in R?

Thanks a lot!

Bart

Upvotes: 2

Views: 1272

Answers (1)

Roland
Roland

Reputation: 132989

You don't specify the same random effects as in your SAS example. (Condition | Participant) is expanded internally to (1 + Condition | Participant), which fits a random intercept, a random slope and the covariance between them [1]. So, you have two additional parameters (an intercept variance and the covariance) in your model. Uncorrelated random effects can be specified using || in lme4 syntax. Note how the formula gets expanded in the summary output.

library(lmerTest)
fit <- lmer(Data ~ Condition + (Condition || Participant), REML=TRUE, data = DF)
summary(fit)
#Linear mixed model fit by REML 
#t-tests use  Satterthwaite approximations to degrees of freedom ['lmerMod']
#Formula: Data ~ Condition + ((1 | Participant) + (0 + Condition | Participant))
#   Data: DF
#
#REML criterion at convergence: 90.6
#
#Scaled residuals: 
#     Min       1Q   Median       3Q      Max 
#-1.58383 -0.78970 -0.06993  0.87801  1.91237 
#
#Random effects:
# Groups        Name        Variance Std.Dev.
# Participant   (Intercept) 0.00000  0.000   
# Participant.1 Condition   0.07292  0.270   
# Residual                  1.20701  1.099   
#Number of obs: 30, groups:  Participant, 3
#
#Fixed effects:
#            Estimate Std. Error       df t value Pr(>|t|)    
#(Intercept) -0.09931    0.36621 26.50400  -0.271 0.788363    
#Condition    2.23711    0.46655 12.05700   4.795 0.000432 ***
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
#Correlation of Fixed Effects:
#          (Intr)
#Condition -0.785

Upvotes: 5

Related Questions