Skip to contents

For determining the degrees of freedom (DF) required for the testing of fixed effects, one option is to use the “between-within” method, originally proposed by Schluchter and Elashoff (1990) as a small-sample adjustment.

General definition

Using this method, the DF are determined by the grouping level at which the term is estimated. Generally, assuming GG levels of grouping:

DFg=Ng(Ng1+pg),g=1,...,G+1DF_g=N_g-(N_{g-1}+p_g), g=1, ..., G+1

where NgN_g is the number of groups at the gg-th grouping level and pgp_g is the number of parameters estimated at that level.

N0=1N_0=1 if the model includes an intercept term and N0=0N_0=0 otherwise. Note however that the DF for the intercept term itself (when it is included) are calculated at the G+1G+1 level, i.e. for the intercept we use DFG+1DF_{G+1} degrees of freedom.

We note that general contrasts CβC\beta have not been considered in the literature so far. Here we therefore use a pragmatic approach and define that for a general contrast matrix CC we take the minimum DF across the involved coefficients as the DF.

MMRM special case

In our case of an MMRM (with only fixed effect terms), there is only a single grouping level (subject), so G=1G=1. This means there are 3 potential “levels” of parameters (Gałecki and Burzykowski (2013)):

  • Level 0: The intercept term, assuming the model has been fitted with one.
    • We use DF2DF_2 degrees of freedom as defined below.
  • Level 1: Effects that change between subjects, but not across observations within subjects.
    • These are the “between parameters”.
    • The corresponding degrees of freedom are DF1=N1(N0+p1)DF_1 = N_1 - (N_0 + p_1).
    • In words this can be read as:
      “Between” DF = “number of subjects” - (“1 if intercept otherwise 0” + “number of between parameters”).
  • Level 2: Effects that change within subjects.
    • These are the “within parameters”.
    • The corresponding degrees of freedom are DF2=N2(N1+p2)DF_2 = N_2 - (N_1 + p_2).
    • In words this can be read as:
      “Within” DF = “number of observations” - (“number of subjects” + “number of within parameters”).

Example

Let’s look at a concrete example and what the “between-within” degrees of freedom method gives as results:

fit <- mmrm(
  formula = FEV1 ~ RACE + SEX + ARMCD * AVISIT + us(AVISIT | USUBJID),
  data = fev_data,
  control = mmrm_control(method = "Between-Within")
)
summary(fit)
#> mmrm fit
#> 
#> Formula:     FEV1 ~ RACE + SEX + ARMCD * AVISIT + us(AVISIT | USUBJID)
#> Data:        fev_data (used 537 observations from 197 subjects with maximum 4 
#> timepoints)
#> Covariance:  unstructured (10 variance parameters)
#> Method:      Between-Within
#> Vcov Method: Asymptotic
#> Inference:   REML
#> 
#> Model selection criteria:
#>      AIC      BIC   logLik deviance 
#>   3406.4   3439.3  -1693.2   3386.4 
#> 
#> Coefficients: 
#>                                Estimate Std. Error        df t value Pr(>|t|)
#> (Intercept)                    30.77748    0.88656 334.00000  34.715  < 2e-16
#> RACEBlack or African American   1.53050    0.62448 192.00000   2.451 0.015147
#> RACEWhite                       5.64357    0.66561 192.00000   8.479 5.98e-15
#> SEXFemale                       0.32606    0.53195 192.00000   0.613 0.540631
#> ARMCDTRT                        3.77423    1.07415 192.00000   3.514 0.000551
#> AVISITVIS2                      4.83959    0.80172 334.00000   6.037 4.19e-09
#> AVISITVIS3                     10.34211    0.82269 334.00000  12.571  < 2e-16
#> AVISITVIS4                     15.05390    1.31281 334.00000  11.467  < 2e-16
#> ARMCDTRT:AVISITVIS2            -0.04193    1.12932 334.00000  -0.037 0.970407
#> ARMCDTRT:AVISITVIS3            -0.69369    1.18765 334.00000  -0.584 0.559558
#> ARMCDTRT:AVISITVIS4             0.62423    1.85085 334.00000   0.337 0.736129
#>                                  
#> (Intercept)                   ***
#> RACEBlack or African American *  
#> RACEWhite                     ***
#> SEXFemale                        
#> ARMCDTRT                      ***
#> AVISITVIS2                    ***
#> AVISITVIS3                    ***
#> AVISITVIS4                    ***
#> ARMCDTRT:AVISITVIS2              
#> ARMCDTRT:AVISITVIS3              
#> ARMCDTRT:AVISITVIS4              
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Covariance estimate:
#>         VIS1    VIS2    VIS3    VIS4
#> VIS1 40.5537 14.3960  4.9747 13.3867
#> VIS2 14.3960 26.5715  2.7855  7.4745
#> VIS3  4.9747  2.7855 14.8979  0.9082
#> VIS4 13.3867  7.4745  0.9082 95.5568

Let’s try to calculate the degrees of freedom manually now.

In fev_data there are 197 subjects with at least one non-missing FEV1 observation, and 537 non-missing observations in total. Therefore we obtain the following numbers of groups NgN_g at the levels g=1,2g=1,2:

  • N1=197N_1 = 197
  • N2=537N_2 = 537

And we note that N0=1N_0 = 1 because we use an intercept term.

Now let’s look at the design matrix:

head(model.matrix(fit), 1)
#>   (Intercept) RACEBlack or African American RACEWhite SEXFemale ARMCDTRT
#> 2           1                             1         0         1        1
#>   AVISITVIS2 AVISITVIS3 AVISITVIS4 ARMCDTRT:AVISITVIS2 ARMCDTRT:AVISITVIS3
#> 2          1          0          0                   1                   0
#>   ARMCDTRT:AVISITVIS4
#> 2                   0

Leaving the intercept term aside, we therefore have the following number of parameters for the corresponding effects:

  • RACE: 2
  • SEX: 1
  • ARMCD: 1
  • AVISIT: 3
  • ARMCD:AVISIT: 3

In the model above, RACE, SEX and ARMCD are between-subjects effects and belong to level 1; they do not vary within subject across the repeated observations. On the other hand, AVISIT is a within-subject effect; it represents study visit, so naturally its value changes over repeated observations for each subject. Similarly, the interaction of ARMCD and AVISIT also belongs to level 2.

Therefore we obtain the following numbers of parameters pgp_g at the levels g=1,2g=1,2:

  • p1=2+1+1=4p_1 = 2 + 1 + 1 = 4
  • p2=3+3=6p_2 = 3 + 3 = 6

And we obtain therefore the degrees of freedom DFgDF_g at the levels g=1,2g=1,2:

  • DF1=N1(N0+p1)=197(1+4)=192DF_1 = N_1 - (N_0 + p_1) = 197 - (1 + 4) = 192
  • DF2=N2(N1+p2)=537(197+6)=334DF_2 = N_2 - (N_1 + p_2) = 537 - (197 + 6) = 334

So we can finally see that those degrees of freedom are exactly as displayed in the summary table above.

Differences compared to SAS

The implementation described above is not identical to that of SAS. Differences include:

  • In SAS, when using an unstructured covariance matrix, all effects are assigned the between-subjects degrees of freedom.
  • In SAS, the within-subjects degrees of freedom are affected by the number of subjects in which the effect takes different values.
  • In SAS, if there are multiple within-subject effects containing classification variables, the within-subject degrees of freedom are partitioned into components corresponding to the subject-by-effect interactions.
  • In SAS, the final effect you list in the CONTRAST/ESTIMATE statement is used to define the DF for general contrasts.

Code contributions for adding the SAS version of between-within degrees of freedom to the mmrm package are welcome!

References

Gałecki A, Burzykowski T (2013). “Linear Mixed-Effects Model.” In Linear mixed-effects models using r 245–273. Springer.
Schluchter MD, Elashoff JT (1990). “Small-Sample Adjustments to Tests with Unbalanced Repeated Measures Assuming Several Covariance Structures.” Journal of Statistical Computation and Simulation, 37(1-2), 69–87.