2016-09-30 2 views
1

Я построения графика линии в 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. Поскольку масштаб шкалы игнорирует отрицательные значения, строки ошибок выглядят действительно странно.

Как рассчитать асимметричные столбцы ошибок? Я, возможно, рассчитываю std для всех значений >=mean и для всех значений <=mean, так что у меня разные верхние и нижние полосы ошибок. Это правильный подход?

+1

Реальный вопрос: почему вы используете логарифмическую шкалу для построения чего-то, что может быть отрицательным? Если все образцы гарантированно будут положительными, то вы действительно не должны строить диаграммы ошибок таким образом, как если бы основное распределение было гауссовым. (Это предположение, которое вы делаете, построив ошибочные штрихи 1 стандартное отклонение с одной стороны от среднего). Возможно, вам лучше подумать о барах ошибок в терминах квартилей/диапазонов. Конечно, если значения * могут быть отрицательными, то вы также можете получить отрицательное значение, и в этом случае вы не должны использовать масштаб журнала вообще! – Dave

+0

Все значения положительные, но они не выглядят хорошо с линейной шкалой. Они идут от 1e5 до 1e-1 примерно в 100 образцах, а затем идут до 1e-5 в 700 образцах. Это делает график довольно запутанным, так как в нем есть еще два графика. – BlueMoon93

+1

ОК - вы определенно не хотите использовать бары ошибок в «гауссовском» смысле, поскольку ваше основное распределение вероятности даже не симметрично. Итак, если вы не знаете (или не можете определить) распределение вероятности, тогда вы должны сделать свои бары ошибок на основе некоторой формы квартили. Например, вы можете использовать 5% и 95% очков (5% образцов ниже нижней полосы ошибок и на 5% выше верхней полосы ошибок). Это означает, что они будут неравными по размеру, но это лучше отражает ваши данные. Не пытайтесь использовать стандартное отклонение, поскольку оно имеет смысл только для гауссовских распределений. – Dave

ответ

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)); 

Надеюсь, это поможет!

Смежные вопросы