SAS Code for the First Step
Although not visible to the users, the analysis implemented in the %CONTCONTFULL macro is based on procedure MIXED. In this section we discuss in more detail the implementation of the joint model specified in (12.1) in SAS. Using procedure MIXED, the following code can be used to fit the joint model in (12.1).
proc mixed data=dataset covtest; class endp patid trial;
model outcome = endp*trial endp*treat*trial / solution noint; repeated endp / type=un subject=patid(trial); ods output solutionF=eb CovParms=covar; run;
The above code presumes that there are two records per subject in the input dataset, one corresponding to the surrogate endpoint and the other to the true endpoint. The variable endp (endpoint) is an indicator variable for the endpoint (coded —1 for surrogate and 1 for true endpoint), the variable outcome contains measurements obtained from each endpoint and the variable treat is assumed to be —1/1 coded (Burzykowski, Molenberghs, and Buyse, 2005).
The REPEATED statement is used for the estimation of the residual covariance matrix E in (12.2). For the mean structure, the interaction term endp*trial in the model statement allows us to fit trial-specific intercepts on both endpoints while the three-way interaction endp*treat*trial produces the trial-specific treatment effects on both endpoints.
Age-Related Macular Degeneration Trial. Sensitivity analysis. Top panel: trial- level surrogacy. Bottom panel: individual-level surrogacy.
The options solutionF and CovParms in the ODS OUTPUT statement allow to output datasets containing the fixed-effects estimates and the errors covariance matrix, respectively, for further analysis. The estimated covariance matrix is shown in Figure 12.7. Individual-level surrogacy measure is estimated
Note that the nesting notation in the subject=patid(trial) option is necessary for SAS to recognize the nested structure of the data (subjects are
Parameter estimate for R2indiv and R2riai obtained from the leave-one-out analysis for selected centers.
Error terms covariance matrix.
clustered within trials). The hierarchical nature of the data enables SAS to build a block-diagonal covariance matrix, with diagonal blocks corresponding to the different trials, which speeds up computations considerably.
SAS Code for the Second Step
The second-stage model, from which trial-level surrogacy is estimated, is based on procedure REG.
proc reg data=secondstage; model true=surrinterc surrogate; weight n;
ods output FitStatistics=rsq; run;
Here, true is the parameter estimate for the treatment effect on the true endpoint (/3j), surrinterc, and surrogate are the parameter estimates for trial- specific intercept (pSi) and treatment effects (Sj) on the surrogate endpoint,
SAS output for the second-stage model.
respectively. The statement WEIGHT n; is used to account for the variability in trial sizes as discussed in Section 12.3.1.
SAS output from the second-stage model is shown in Figure 12.8. The estimated regression line is A = —0.22 + 0.07 pSi + 1.18ai with the trial-level surrogacy R2rial(f) = 0.7031.