Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

RobustToolbox

Robust regression is an alternative to Ordinary Least Squares regression. It uses iterative algorithms to identify and down-weight potential outliers. In robust regression, these are defined as observations that lie far from the regression slope (or plane).

• Outliers can cause violations of statistical assumptions, which can increase false positives and false negatives

• Outliers have very large effects on regression coefficients (slopes). These slopes are interpreted as measures of activation or connectivity in neuroimaging studies. Even one or a few outliers can completely alter the results, particularly if they are high-leverage data points.

• Normally, a data analyst would check the assumptions and data distribution in any statistical model, and make adjustments as needed. But this is not possible with neuroimaging and other applications where hundreds or thousands of models are tested in parallel.

• When assumptions cannot be checked for every regression model, automatic procedures for weighting based on outlier status can be advantageous

• Robust regression is an automatic procedure for identifying cases that are potential outliers and down-weighting them.

The robust regression toolbox was created by Tor Wager. If you use it, please see (and consider citing) the accompanying paper: Wager, T. D., Keller, M. C., Lacey, S. C., & Jonides, J. (2005). Increased sensitivity in neuroimaging analyses using robust regression. Neuroimage, 26(1), 99-113.

Rationale

One way to think of outliers is as observations that come from a different generative model (i.e., different population), with a different distribution, from the rest of the observations. With outliers, this distribution is higher variance than the distribution for the main dataset, causing observations to have more spread. Since the "pull" of observations on the regression line is proportional to the square of the distance from the line, these observations from a high-variance distribution tend to dominate if their observed values are extreme. This "pull" also depends on the leverage, which is a function of how extreme an observations predicted value is. High-leverage outliers can completely change regression results even in large samples.

If some observations come from a different generative model with a different distribution, this violates the IID assumptions underlying classical statistical inference -- i.e., that the observations conditional on the model (i.e., the residuals) are independent and come from an identical distribution. This situation also violates the equality of variance (homoscedasticity) assumption when one is using classical P-values for inference, and can also cause violations of the normality assumption.

Robust regression uses an iterative algorithm to identify observations with large residuals and down-weight them. The Robust Toolbox uses the Iteratively Reweighted Least Squares (IRLS) algorithm, with the following steps:

  1. Fit the regression model using weighted least squares, with weights set to 1/leverage for each point

  2. Normalize the residuals by their Median Absolute Deviation and apply a weight function based on normalized residuals.

  3. Fit the regression model using weighted least squares, using weights from Step 2. Repeat Steps 2-3 until convergence.

  4. Adjust variance, degrees of freedom, and P-values to account for reweighting

This is quite useful for second-level (group) analyses with one contrast image per participant entered as input data. But it can also be used for first-level (time series) analysis.

Installation and setup

To use the CANlab Robust Regression toolbox, you'll need Matlab and three toolboxes on your Matlab path: SPM12, the CANlab Core Tools repository, and the CANlab Robust Regression toolbox. These tools include the sample dataset used in the robust regression help walkthrough, and other datasets as well.

For help installing CANlab tools, walkthroughs, and more canlab.github.io

CANlab code repositories are at CANlab Github

Using the toolbox

After installation, there are two ways to use CANlab robust regression within Matlab. The first way uses this toolbox and operates on Nifti (.nii) or Analyze (.img) files, and writes output files to disk. The second way uses CANLab objects in an object-oriented interactive framework. Both methods rely on Matlab's robustfit function, which implements the core method. Thus, they will produce the same results. The CANLab Core tools can be used to visualize and make tables of results obtained using either method.

  • The Robust toolbox includes a subfolder called Robust_regression_walkthrough, with a walkthrough including an example dataset for each use case.

The classic Robust Regression toolbox

  • Using this toolbox takes a set of image filenames and regressors (a GLM design matrix) as input, and runs robust regression at every voxel in the dataset.
  • The main function in the toolbox is called robfit. This creates a series of directories, one for each set of images you pass in, and writes images containing maps of T-values, P-values, observation weights, and brain coverage for each analysis. A SETUP.mat file includes the design matrix, image file names, and other meta-data to track what was done.
  • Output: Each regressor is assigned a number. 0001 is the intercept, and 0002 and on are regressors you enter. Regressors are mean-centered on average so that the intercept map can be interpreted as the group average. Here are some output files:
FileDescription
rob_beta_0001.niiIntercept activation values (group mean activation)
rob_tmap_0001.niiIntercept t-values
rob_p_0001.niiIntercept p-values
rob_beta_0002.niiRegression slopes (activation values) for first user-entered regressor
rob_tmap_0002.niit-values for first user-entered regressor
rob_p_0002.niip-values for first user-entered regressor
weights.nii4-D image of regression weights for each input image
  • robust_results_batch is a script that loads the files from disk into CANlab objects and generates a series of visualizations and tables.
  • publish_robust_regression_report is a script that publishes an HTML report with the results of the analysis.
  • robust_regression_walkthrough_toolbox.mlx is a Matlab live script that walks you through a sample analysis.

Both of these can be customized for your application, and the code contains more information about how to use CANlab tools and generate other kinds of output.

Object-oriented tools

  • The second way uses the regress() method for fmri_data in CANlab object-oriented toolbox. It does not use this toolbox, but uses the same robust regression algorithm. It returns statistic_image class objects, which can be visualized and written to disk (e.g., as Nifti files), but it does not write files to disk by default.

  • robust_regression_walkthrough_objectoriented.mlx is a Matlab live script that walks you through a sample analysis.

About

Robust regression toolbox for neuroimaging data

Resources

Stars

17 stars

Watchers

34 watching

Forks

Releases

Packages

Contributors

Languages