【发布时间】:2016-09-30 14:14:25
【问题描述】:
我正在使用对数刻度在 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,这使得较低的误差线位于 -6.2101。由于对数刻度忽略负值,因此误差线看起来很奇怪。
如何计算不对称误差线?我可能会为所有值>=mean 和所有值<=mean 计算std,这样我就有不同的上下误差线。这是一种有效的方法吗?
【问题讨论】:
-
真正的问题是你为什么要使用对数刻度来绘制可能是负数的东西?如果所有样本都保证是正的,那么你真的不应该以这种方式绘制误差线,就好像基础分布是高斯分布一样。 (这是您通过在平均值两侧绘制 1 个标准差的误差条所做的假设)。您可能会更好地考虑四分位数/范围的误差线。当然,如果值可以为负,那么您也可能得到一个负均值,在这种情况下,您根本不应该使用对数刻度!
-
所有值都是正数,但它们在线性比例下看起来不太好。它们在大约 100 个样本中从 1e5 变为 1e-1,然后在 700 个样本中变为 1e-5。这使图表非常混乱,因为其中还有另外两个图表。
-
好的 - 你绝对不想使用“高斯”意义上的误差线,因为你的潜在概率分布甚至不是对称的。因此,除非您知道(或可以确定)概率分布,否则您应该根据某种形式的四分位数制作误差线。例如,您可以使用 5% 和 95% 的点(5% 的样本低于下误差线,5% 高于上误差线)。这意味着它们的大小将不相等,但这更好地反映了您的数据。不要尝试使用标准差,因为它只对高斯分布有意义。
标签: matlab plot standard-deviation