Tools to accompany paper:
Links between carbon monoxide and climate indices for the Southern Hemisphere and tropical fire regions
Journal of Geophysical Research: Atmospheres, 2018.
R. R. Buchholz, D. Hammerling, H. M. Worden, M. N. Deeter, L. K. Emmons, D. P. Edwards, S. A. Monks
This set of MATLAB tools allows users to replicate the results of the paper listed above, as well as apply and (hopefully) innovate on the methods employed to solve similar problems.
In brief, this kit contains import, storage, consolidation, and analysis tools to relate climate index time series (for an arbitrary number of indices) to a response variable time series (in the above paper, the response variable is a regional carbon monoxide measurement) in a linear model framework; possible time dependence is handled through a lag factor applied to each index, optimal lag factors are found via grid search.
All of the usual linear model assumptions apply, so users are cautioned to detrend and deseasonalize their data before using these tools.
The script demonstration_script_full_data.m is a demonstration of the basic tools in the codebase, and is probably the best place for a new user to begin.
The script example_user_config_script.m is provided as a documented user specifications script; the function initialize_user_config_script_gui generates a similar user config script that is NOT documented, but does contain all of the user specifications required to run the full data process. The demonstration script as it exists can be altered to use the example_user_config_script by commenting out the gui call on line 23 and the gui output script execution on line 34, and de-commenting the example script execution on line 33.
This distribution comes with several sets of response data (Carbon Monoxide values derived from MOPITT output over several distinct geographic regions), found in the Carbon_Monoxide_Data subfolder.
This distribution also comes with four sets of climate mode index data (El Nino Southern Oscillation, Indian Ocean Dipole, Tropical South Atlantic, and Antarctic Oscillation), found in the Climate_Mode_Index_Data subfolder.
Other data may be used instead of or in addition to the example data provided, as long as the data files are formatted as below:
Response data files must be csv files, with a header row, and at least two columns.
The first column must be a time index in YYYYMM format.
The index of the column that will be imported as response observations is specified by the user in the ResponseData.fileDataColumnIndex field (the user config gui allows the user to select from the column headers detected).
Climate index data files must be csv files, with a header row, and two columns.
The first column must be a time index in YYYYMMDD format.
The second column must be the value of the climate mode index to be used as an input.
A Note on Model Selection vs. Lag Space Search:
In general terms, this codebase executes search at two levels; the lag space search attempts to identify the lags for each climate mode index that are most informative, while the model selection search attempts to build the best linear model from the indices at a particular set of lags.
At the model selection level, models are assessed using a user-specified criterion (in the user specification gui function, the default is the Bayes Information Criterion).
At the lag space level, lagsets are compared using a model evaluation metric, presently hardcoded as the terminal model's R^2_adjusted value; different lag sets generate different regression tables, and thus, other criteria (e.g. BIC) may not generate apples-to-apples comparisons.
Pete Simonson (2020). Southern Hemisphere Carbon Monoxide Modeling (https://www.mathworks.com/matlabcentral/fileexchange/68319-southern-hemisphere-carbon-monoxide-modeling), MATLAB Central File Exchange. Retrieved .
Carl: Sure. It probably won't work as well with the provided climate data, though. I'm not an atmospheric chemist, but I suspect that CO emissions in the northern hemisphere are less climate dependent, and more dependent on human activity.
One has to ask: does this code not work to analyze CO in the northern hemisphere? :-)