处理对数刻度中的负值
Dealing with negative values in log scale
我正在 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
,以便我有不同的上下误差线。这是一种有效的方法吗?
为了产生 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));
希望对您有所帮助!
我正在 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
,以便我有不同的上下误差线。这是一种有效的方法吗?
为了产生 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));
希望对您有所帮助!