Longitudinal Statistics
This page describes ways of analyzing longitudinal data after processing it using the longitudinal stream in Freesurfer.
Longitudinal data are more complex than cross-sectional data, as repeated measures are correlated within each subject. The strength of this correlation will depend on the time separation between scans. In addition, extra care must be taken when the data exhibit significant between-subject variation in number of time points and between-scan intervals (imperfect timing). A statistical analysis should then consider these data features in order to obtain valid statistical inferences.
Freesurfer currently comes with (at least) three different frameworks for the analysis of longitudinal data:
Simplified repeated measures ANOVA (ignores correlation and timing of the measurement occasions)
Direct analysis of atrophy rates or percent changes (ignores correlation and single time points)
Linear mixed effects models <-- recommended (but more complex)
Contents
Simplified Repeated Measures ANOVA
This method can be used to check for differences between individual time points or compare time point differences across groups. For two time points it simplifies to a PairedAnalysis.
Advantages:
- Included in mri_glmfit.
- Does not assume any specific trend in the mean response over time and thus can capture complex trajectories.
- Can make use of different multiple comparisons methods that come with mri_glmfit.
Disadvantages:
- Does NOT consider the correlation among the repeated measures, and thus, there is a significant reduction in statistical power.
- Does NOT consider the timing of the measurement occasions which may result in a further reduction in power.
Can only be applied to balanced data (all subject have their scans acquired at the same set of measurement occasions) with a small number of repeated measures (<=3).
For details see: RepeatedMeasuresAnova
Analysis of Rates or Percent Changes
To analyze, e.g. annualized percent change or atrophy rates for 2 or more time points, one can run a two stage model. This avoids dealing with the longitudinal correlation. The two stages are:
- First, simplify the statistic to a single number for each subject (the difference of two time points, or the slope of the fitting line, or the annualized percent change, etc...).
- Then analyze the obtained summary measure across subjects or groups with a standard GLM.
This model is quite simple and can be an option if all subjects have the same number of time points, approximately equally spaced. Linear fits into each subject data are often meaningful, as longitudinal change can be assumed to be almost linear within a short time frame in several applications.
Advantages:
- Can deal with differently many and differently spaced time points (but does not model the difference in variability).
- Works on ROI stat (e.g. aseg.stats or aparc.stats) and on cortical maps (e.g. thickness).
- The second stage can be performed with QDEC (simple GUI) or directly with mri_glmfit.
- The second stage analysis can make use of different multiple comparisons methods that come with mri_glmfit.
- Scripts are available ( long_mris_slopes and long_stats_slopes ), no matlab needed.
- For the simple case of two time points and when looking at simple differences this model simplifies to a paired analysis, but can additionally compute (symmetrized) percent changes.
- Includes code for intersecting cortex labels (across time and across subjects) to make sure that all non-cortex vertices are excluded.
Disadvantages:
- Does NOT model the correlation among the repeated measures, and thus, there is a significant reduction in statistical power.
- Does NOT account for different certainty of within subject slopes depending on the number of time points and therefore it has the highest propensity to false positives (type I family wise error in the mass-univariate setting).
- Difficult to model non-linear temporal behaviour.
- Difficult to deal with time varying co-variates (slopes would need to be fit into those for each subject to reduce these to a single number).
- Cannot include information from subjects with only a single time point and thus the results are likely to be biased and have less statistical power.
The linear mixed effects model overcomes these limitations and should be used if subjects have differently many time points (or for more complex modeling).
For details see: LongitudinalTwoStageModel
Linear Mixed Effects Model
A Linear Mixed Effects (LME) model is the most powerful and principled approach. We recommend this approach.
Advantages:
- Works for both stats (univariate) and surface analysis (mass-univariate).
- Can handle unequal timing and different number of time points across subjects (missing data).
- Even subjects with only a single time point can be included into these models (make sure they also run through the longitudinal stream, available with version FS 5.2, to avoid a bias due to different image processing) .
- Appropriately models the temporal correlation.
- Can model different variances across measurement occasions.
- Our mass-univariate method can deal very well with the spatial correlation among measurements on the cortex and is very fast by working with spatial regions in which the correlation structure is relative constant.
- Can be used to model complex longitudinal behavior (e.g. quadratic, or piecewise linear trajectories) and time-varying covariates.
- It seems to have become the consensus among statisticians that LME models are the right mechanism to study longitudinal data and they may be requested in journal publications by the reviewers.
Disadvantages:
- More complicated use (e.g. requires distinguishing mixed effects from fixed effects ...).
- Currently, our implementation is in Matlab only.
- Currently only offers FDR for multiple comparisons correction.
LinearMixedEffectsModels allow ROI analysis as well as advanced longitudinal analysis for cortical maps. Here we only discuss how to prepare your data for that analysis. The analysis itself is performed in matlab.
Similar to regular (cross sectional) processing, ROI stats data is contained in stats files (cf. the ROI tutorial). You could, e.g., open the stats text files in each tpN.long.templateID/stats/ dir, containing statistics such as volume of subcortical structures or thickness averages for cortical regions. These statistics can be fed into any external statistical packages to run whatever analysis you are interested in. Helpful commands to grab the data from all subjects and time points and create a single table are asegstats2table and aparcstats2table.
For example to create a table with subcoritical ROI's from all subjects and all time points you would run this :
asegstats2table --qdec-long long.qdec.table.dat --stats aseg.stats --tablefile aseg.table.txt
This will automatically grab the stats from the longitudinal directories (tpN.long.templateID/stats/) and create a table (rows: subject/time points, columns: structures). Similarly you can use aparcstats2table for surface ROI analysis.
To run LinearMixedEffectsModels on surface maps, you need to map all the data to a template (usually fsaverage) and smooth the data:
mris_preproc --qdec-long long.qdec.table.dat --target fsaverage --hemi lh --meas thickness --out lh.thickness.stack.mgh mri_surf2surf --hemi lh --s fsaverage --sval lh.thickness.stack.mgh --tval lh.thickness.stack.fwhm10.mgh --fwhm-trg 10 --cortex --noreshape
For details see: LinearMixedEffectsModels
Longitudinal QDEC Table
QDEC is a graphical program to perform simple statistical analysis of cross sectional data. A QDEC table is a simple table in text format that contains subject ID's (one subject per row) and different co-variables per column (e.g. age, gender, diagnosis, …). The first row contains a header, where the first column header is fsid and the other columns are named according to their content. It is described in the QDEC Group Analysis tutorial. Note that QDEC currently cannot perform longitudinal statistics directly!
For the analysis of longitudinal data several command line tools require a 'longitudinal QDEC table'. This table is based on the QDEC table format with an additional 2nd column fsid-base that groups and assigns several time point to their subject.
To get the longitudinal data ready for statistical analysis (LongitudinalTwoStageModel or LinearMixedEffectsModels) you need to create a table (space separated as a text file) in the following format:
fsid |
fsid-base |
years |
... |
OAS2_0001_MR1 |
OAS2_0001 |
0 |
|
OAS2_0001_MR2 |
OAS2_0001 |
1.25 |
|
OAS2_0004_MR1 |
OAS2_0004 |
0 |
|
OAS2_0004_MR2 |
OAS2_0004 |
1.47 |
|
... |
|
|
|
where the first column is called fsid (containing all time points of all subjects) and the second column is fsid-base containing the within-subject template (=base) name, to group time points within subject. You can have many more columns such as gender, age, group, etc. Make sure there is a column containing an accurate time variable (optimally measured in years if you are interested in annualized change) such as age or the duration of the study (time from inital scan). Here we use years to measure the time from baseline scan (=tp1). You can see in the table that the two subjects OAS2_0001 and OAS2_0004 each have two time points (MR1, MR2) that are not equally spaced (approx 15 and 18 months apart).
Note, the fsid column contains the original subject/time point id's, not the longitudinal names. The command-line scripts know that this is a longitudinal table (because of the parameter, usually --qdec-long and existing fsid-base column) and will process the data from the longitudinal directories automatically.
For example:
long_mris_slopes --qdec ./qdec/long.qdec.table.dat --meas thickness --hemi lh --do-avg --do-rate --do-pc1 --do-spc --do-stack --do-label --time years --qcache fsaverage
is a tool for the LongitudinalTwoStageModel and expects a longitudinal QDEC table (even though the flag is only --qdec). It will automatically grab the data from the longitudinal subN_tp1.long.subNtemplate directories and compute within subject atrophy rates etc.
Also:
mris_preproc --qdec-long qdec.table.dat --target study_average --hemi lh --meas thickness --out lh.thickness.mgh
is a tool usually used for mri_glmfit. It iterates over the subjects from the QDEC table, maps them to the study_average (usually fsaverage) and stacks them into a single file. In this example it takes a longitudinal QDEC table (--qdec-long) and then takes the data from the longitudinal directories, to map and stack them and get them ready for the LinearMixedEffectsModels (usually you would do a smoothing step with mri_surf2surf after the mris_preproc is finished, see the LME description).