Преобразование данных в логарифмической шкале

Преобразование данных в логарифмической шкале

Логарифм - это степень, в которую надо возвести основание, чтобы получить аргумент. Т.е. логарифмирование является противоположной операцией возведению в степень.

Возведение в степень с любым основанием можно преобразовать в степень числа \(e\).

exp(1)
2.718281828459045

Поскольку обратной функцией к экспоненте является натуральный логарифм, то данные можно преобразовывать в одном направлении (потенцировать) и в обратном (логарифмировать) без потери соотношений в ряду данных.

x = arange(7)
vvE = exp(x)  #экспоненциальная функция

vvElog = log(vvE)
plot(x, vvElog,'r^-', label='log(exp(x))')

vvlog = log(x[1:])
plot(x[1:], vvlog+1, 'mv:', label='log(x)+1');

plot(x[1:], exp(vvlog),'kx--', label='exp(log(x)+1)');

legend();
_images/i_logscale_6_0.png

Как следует из легенды к рисунку - порядок обратных операций может быть любым.

Логарифм 0 даёт минус бесконечность (-Inf) (деление на 0).

log(0)
<ipython-input-4-2e1b7d281bdf>:1: RuntimeWarning: divide by zero encountered in log
  log(0)
-inf

Чтобы использовать логарифмирование с данными, в которых есть нулевые значения, используют прибавление единицы, а при потенцировании таких данных - отнимание.

x = arange(7)

vvlog = log1p(x)
plot(x, vvlog, 'mv:', label='log(x+1)');

plot(x, expm1(vvlog),'ko--', label='exp(log(x+1))-1');

legend();
_images/i_logscale_10_0.png

Сравним форму облаков распределения значений ВР от МСИ при представлении в разных шкалах.

lps=loadtxt('d/rt.tsv', skiprows=1)
lps.shape
(48, 2)
tt=lps[:,0]
isi=diff(tt)
vv=lps[1:,1]

plot(isi,vv,'o')
xlabel('МСИ, c')
xlim([0, 10]);
_images/i_logscale_13_0.png

В соответствии со схемой теста три группы точек сгруппированы около 2, 4 и 8.

plot(log2(isi), log(vv), 'o')
xlabel('log(МСИ), у.е.')
xlim([0,4]);
_images/i_logscale_15_0.png

Можно заметить, что во втором случае облака точек выглядят более однородно и обособленно. Величины, указанные по обеим шкалам, стало труднее интерпретировать, потому что это логарифм от первоначальных шкал. Однако, к исходным величинам можно вернуться с помощью потенцирования.