我使用对数刻度在MatLab中绘制带有标准差的折线图:
fig = figure;
errorbar(mean(samples),sqrt(var(samples)));
ax = get(fig,'CurrentAxes');
set(ax,'YScale','log');
但是,在某些示例中,较低的错误栏低于0.例如,给定样本s=[11.0147 80.2365 11.6116 11.1837 9.9091]
,然后mean=24.7911
和std=31.0013
,这使得较低的错误栏位于{ {1}}。由于对数比例忽略负值,因此误差条看起来很奇怪。
如何计算非对称误差线?我可能计算所有值-6.2101
和所有值std
的{{1}},以便我有不同的上下误差条。这是一种有效的方法吗?
答案 0 :(得分:1)
为了产生5%和95%的误差线,最简单的方法是对基础数据进行排序。因此,假设您有一组与特定参数对应的样本,并将它们记录在矩阵样本中,其中一行代表参数x的一个值的实验值。然后这段代码可以很容易地给你上下值:
ascending=sort(samples,2);
lower_error_bar=ascending(:,round(size(ascending,2)*0.05));
mean=mean(samples,2);
median=ascending(:,round(size(ascending,2)*0.5));
upper_error_bar=ascending(:,round(size(ascending,2)*0.95));
我希望这有帮助!