【发布时间】:2021-02-28 06:37:43
【问题描述】:
这是我正在处理的一个非常基本的问题。
我已经模拟了一个包含 6 个变量的数据集,我想测量每个向量的动态极值差。
我试图以某种方式循环以下代码,最终变量 ES 将呈现一个矩阵,该矩阵将有 T 行和 6 列遍历模拟矩形矩阵中的所有数据点。
clc
clear
%% Simulate data set
mu = [0 0 0 0 0 0];
A = rand(6);
Sigma= A * A';
%% Simulation of variables
rng('default') % For reproducibility
Data = mvnrnd(mu,Sigma,1000);
r=Data(:,1);
我想使用 r = Data,因为估计在所有列而不是每列上运行,并且最终的 ESmatrix 将所有列绘制在一个图中。
T= length(r);
conditionalvariance=[];
p= [0.025];
VarMdl = garch(1,1)
Mdl = arima('ARLags',1,'Variance',VarMdl);
EstMdl = estimate(Mdl,r);
[res,v,logL] = infer(EstMdl,r);
conditionalvariance=[conditionalvariance,v];
Sigma=conditionalvariance;
ESdynamic=[];
VaRdynamic=[];
bpoe=[];
for J= 1:T
[Var_Normal, ES_Normal]=hNormalVaRES(Sigma(J),p);
VaR=Var_Normal;
ES=ES_Normal;
disp(J)
disp('');
ESdynamic=[ESdynamic,ES];
VaRdynamic=[]
end
ES=ESdynamic;
Local Functions:
function [VaR,ES] = hNormalVaRES(Sigma,p)
% Compute VaR and ES for normal distribution
% See [4] for technical details
VaR = -norminv(p);
ES = -Sigma*quad(@(q)q.*normpdf(q),-6,-VaR)/p;
end
当我绘制(ES)时,我想要一个包含 6 个变量的图。
请帮我解决这个循环问题。
【问题讨论】:
标签: matlab for-loop while-loop nested-loops