[R-sig-ME] Cross-over Data with Kenward-Roger correction

Lenth, Russell V russell-lenth at uiowa.edu
Wed Jun 10 18:55:54 CEST 2015


For some reason, there were scads of "?"s in your posting; I removed them in the quote below so it's easier to read.

You did not fit the same model in R as you did in SAS. The SAS one has unstructured covariance (3 covariance parameters plus residual error), whereas the R one has just one, and corresponds to the SAS model with the REPEATED statement replaced by "RANDOM SBJ;" 

I don't think you can fit the unstructured model with lmer (but I'm sure somebody will correct me if I'm wrong). It is possible to do that with lme in the nlme package, but you can't get the K-R d.f. with that.

Russ

Russell V. Lenth  -  Professor Emeritus
Department of Statistics and Actuarial Science   
The University of Iowa  -  Iowa City, IA 52242  USA   
Voice (319)335-0712 (Dept. office)  -  FAX (319)335-3017



-----Original Message-----

Message: 1
Date: Wed, 10 Jun 2015 04:18:00 +0000 (UTC)
From: knouri <nouri4 at yahoo.com>
To: "r-sig-mixed-models at r-project.org"
	<r-sig-mixed-models at r-project.org>
Subject: [R-sig-ME] Cross-over Data with Kenward-Roger correction
Message-ID:
	<180812510.9495.1433909880558.JavaMail.yahoo at mail.yahoo.com>
Content-Type: text/plain; charset="UTF-8"

Dear all:I have a SAS code but need to write it in R. Any advice will be greatly appreciated.
Here is the data ( a two-period) cross-over design comparing Trt 1 vs. Trt 2:

Sbj  Seq  Per  Trt  PEF
1      1       1     1   310
1      1       2     2   270
4      1       1     1   310
 4      1       2     2   260
6      1       1     1   370
6      1       2     2   300
7      1       1     1   410
7      1       2     2   390
10    1       1    1    250
10    1       2    2   210
11    1       1    1   380
11    1       2    2   350
14    1       1    1   330
14    1       2    2   365
2      2       1    2   370
2      2       2   1   385
3      2      1    2   310
3      2      2    1   400
5      2      1    2   380
5      2      2    1   410
9      2      1   2   290
9      2      2   1   320
12    2      1   2   260
12    2      2   1   340
13    2      1   2    90
13    2      2   1   220

Here is the SAS code:
#########################################################
proc mixed data=one method=reml;
class Sbj Per Trt;
model PEF = Per Trt /ddfm=kr;
repeated Trt / sub=Sbj type=un r;
lsmeans Trt / cl alpha=0.05;
estimate 'B vs. A' Trt -1  1 / alpha=0.1 cl; run; ###################################################
where kr option in model statement stands for "Kenward-Roger" correction. The above SAS code produces (selected portions):

       
|  Covariance Parameter Estimates |
|  Cov Parm |  Subject |  Estimate |
|  UN(1,1) |  Sbj |  3567.58 |
|  UN(2,1) |  Sbj |  4437.00 |
|  UN(2,2) |  Sbj |  6760.65 |

| Type 3 Tests of Fixed Effects |
| Effect | Num DF | Den DF | F Value | Pr > F | Per | 1 | 11 | 2.59 | 
| 0.1359 | Trt | 1 | 11.6 | 19.26 | 0.0010 |
     
|  Estimates |
|  Label |  Estimate |  Standard
 Error |  DF |  t Value |  Pr > |t| |  Alpha |  Lower |  Upper |
|  B vs. A |  -46.5150 |  10.5999 |  11.6 |  -4.39 |  0.0010 |  0.1 |  -65.4629 |  -27.5671 |

|  Least Squares Means |
|  Effect |  Trt |  Estimate |  Standard
 Error |  DF |  t Value |  Pr > |t| |  Alpha |  Lower |  Upper |
|  Trt |  1 |  341.72 |  16.5696 |  12 |  20.62 |  <.0001 |  0.05 |  305.62 |  377.82 |
|  Trt |  2 |  295.20 |  22.8073 |  12 |  12.94 |  <.0001 |  0.05 |  245.51 |  344.90 |

I used several R functions including lme, lmer. For example,  the following R code:
require(lme4)
require(pbkrtest)
require(lmerTest)
mydat$Trt = as.factor(mydat$Trt)
mydat$Per = as.factor(mydat$Per)fit.lmer <- lmer(PEF ~ Trt + Per + (1| Sbj), REML = TRUE, data=mydat)
anova(fit.lmer, ddf = "Kenward-Roger", type=3)( lsmeans(fit.lmer, test.effs="Trt") )
difflsmeans(fit.lmer, test.effs="Trt")

produces rather different results (compared to SAS), especially for df's, standard errors, etc.
Analysis of Variance Table of type 3  with  Kenward-Roger approximation for degrees of freedom
       Sum Sq       Mean Sq       NumDF       DenDF        F.value        Pr(>F)   
Trt    14036         14036         1           11           18.70         0.0012 **
Per     1632          1632         1           11            2.17         0.1683   


Least Squares Means table:
        Trt  Per   Estimate    Standard Error   DF   t-value     Lower CI Upper CI      p-value    
Trt  1  1.0  NA    341.8       20.0             13.9    17.1     299      385           <2e-16 ***
Trt  2  2.0  NA    295.2       20.0             13.9    14.8     252      338           <2e-16 ***

Differences of LSMEANS:
              Estimate    Standard Error  DF       t-value      Lower CI      Upper CI    p-value   
Trt 1 - 2     46.6        10.8            11.0     4.32         22.9          70.3        0.001 **


I am not quite sure if I am using the right R functions. Any advice will be greatly appreciated,
Thanks again,
Keramat



More information about the R-sig-mixed-models mailing list