在一张图中绘制置信区间线,均值在里面
Plotting confidence intervals-lines in one graph with means inside
我需要使用 MATLAB 在一张图中绘制 12 个置信区间,每个区间内都标有均值。我该怎么做?您可以在下图中找到一个示例:
我正在使用下面的代码来计算置信区间:
S=10; E=9; sigma=0.1; r=0.06; T=1;
Dt=1e-3; N=T/Dt; M=2^17;
V = zeros(M,1);
for i=1:M
Sfinal = S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T)*randn);
V(i)=exp(-r*T)*max(Sfinal-E,0);
end
aM=mean(V); bM=std(V);
conf=[aM-1.96*bM/sqrt(M),aM+1.96*bM/sqrt(M)]
首先,除了你的循环,你可以只写:
V = exp(-r*T)*max(S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T)*randn(M,1))-E,0);
randn(M,1)
一次创建所有 M
个随机值,并且因为所有其他值都是标量,您可以通过简单地将它放在 V
的公式中来向量化您的计算(这方式,也没有必要用零初始化 V
)。
绘制误差线使用errorbar
:
errorbar(aM,conf(1),conf(2))
我需要使用 MATLAB 在一张图中绘制 12 个置信区间,每个区间内都标有均值。我该怎么做?您可以在下图中找到一个示例:
我正在使用下面的代码来计算置信区间:
S=10; E=9; sigma=0.1; r=0.06; T=1;
Dt=1e-3; N=T/Dt; M=2^17;
V = zeros(M,1);
for i=1:M
Sfinal = S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T)*randn);
V(i)=exp(-r*T)*max(Sfinal-E,0);
end
aM=mean(V); bM=std(V);
conf=[aM-1.96*bM/sqrt(M),aM+1.96*bM/sqrt(M)]
首先,除了你的循环,你可以只写:
V = exp(-r*T)*max(S*exp((r-0.5*sigma^2)*T+sigma*sqrt(T)*randn(M,1))-E,0);
randn(M,1)
一次创建所有 M
个随机值,并且因为所有其他值都是标量,您可以通过简单地将它放在 V
的公式中来向量化您的计算(这方式,也没有必要用零初始化 V
)。
绘制误差线使用errorbar
:
errorbar(aM,conf(1),conf(2))