spm_granger_demo.m.svn-base
来自「try the matlab scripts to do various com」· SVN-BASE 代码 · 共 71 行
SVN-BASE
71 行
% Granger causality demo based on spm_mar
disp('Generating six sinewaves in two blocks of 3');
disp('The signals are dependent within each block.');
disp(' ');
secs=1;
ns=250;
t=[1/ns:1/ns:secs]';
d=6;
f1=10;
clear x
dev=1*ones(1,6);
y=sin(2*pi*f1*t);
y2=sin(2*pi*12.5*t);
x(:,1)=y+dev(1)*randn(size(t));
for i=2:3,
x(:,i)=y+dev(i)*randn(size(t));
end
for i=4:6,
x(:,i)=y2+dev(i)*randn(size(t));
end
for i=1:6,
x(:,i)=x(:,i)/std(x(:,i));
x(:,i)=x(:,i)-mean(x(:,i));
end
disp('Estimating order of MAR model');
logev=[];
for m=1:5,
disp(sprintf('Fitting MAR model with %d components',m));
mar=spm_mar(x,m);
logev=[logev; mar.fm];
end
logev=logev-min(logev);
figure
bar(logev);
xlabel('Number of time lags');
ylabel('Log Evidence');
[tmp, p_sel]=max(logev);
disp(sprintf('Using MAR(%d) model ..',p_sel));
[mar,y,y_pred]=spm_mar(x,p_sel);
[G,Psig] = spm_granger (mar);
disp(' ');
disp('True causality matrix');
[ones(3,3),zeros(3,3);zeros(3,3),ones(3,3)]
disp('Granger probability matrix:');
Peffect=ones(6,6)-Psig;
Peffect
disp('where ijth entry is our belief that time series i Granger causes j');
figure
imagesc(Peffect);
title('Granger probability matrix');
colormap gray
colorbar
disp(' ');
disp('Inferred Granger causality matrix:');
disp('This is Granger Prob matrix thresholded at 0.95');
G
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?