MATLAB Implementation of Nonlinear Granger Causality Test
- Login to Download
- 1 Credits
Resource Overview
MATLAB code for nonlinear Granger causality testing with enhanced implementation details and algorithm explanations
Detailed Documentation
Below is the MATLAB code for nonlinear Granger causality testing. While this code is relatively concise, adding comprehensive comments and explanations can help better understand its working principles and implementation methodology.
The function granger_nonlinear_causality takes an n × p matrix x (where n represents sample size and p denotes the number of variables) and maximum lag value maxlag as inputs. It returns a p × p matrix p_value where each position (i,j) indicates whether variable i Granger-causes variable j through a nonlinear relationship.
function p_value = granger_nonlinear_causality(x, maxlag)
n = size(x, 1); % Extract sample size from matrix rows
p = size(x, 2); % Extract number of variables from matrix columns
p_value = zeros(p, p); % Initialize p-value matrix
for i = 1:p % Iterate through all potential cause variables
for j = 1:p % Iterate through all potential effect variables
if i == j % Skip self-causality checks
continue
end
for k = 1:maxlag % Test across different lag periods
% Create time-shifted variable pairs with proper alignment
y = [x(k+1:n,i), x(1:n-k,j)]; % Current and lagged variables
y_lag = [x(1:n-k,i), x(k+1:n,j)]; % Alternative lag configuration
% Apply nonlinear transformation using hyperbolic tangent
y = tanh(y); % Normalize data to [-1,1] range
y_lag = tanh(y_lag); % Transform lagged variables
% Perform Granger causality test with single lag
[~, ~, ~, F] = granger_test(y, y_lag, 1, 1); % Extract F-statistic
p_value(i,j) = p_value(i,j) + F; % Accumulate test statistics
end
end
end
% Normalize p-values by maximum lag to obtain final significance measure
p_value = p_value / maxlag;
end
This MATLAB function serves as a valuable tool for analyzing nonlinear causal relationships. The algorithm operates by examining how one variable's past values influence another variable's current values through nonlinear transformations. The implementation employs hyperbolic tangent (tanh) transformations to capture nonlinear dependencies and accumulates test statistics across multiple lag periods. This methodology proves particularly useful across various research domains including economics, biology, and astronomy. For deeper understanding, users can refer to MATLAB documentation or relevant academic papers on nonlinear causality testing. The code structure implements pairwise variable comparisons with proper time alignment and statistical normalization for robust causality assessment.
- Login to Download
- 1 Credits