Найдите периодичность в категориальных временных рядах

Этот пример показывает, как выполнить спектральный анализ данных timeseries с категориальным знаком. Спектральный анализ временных рядов с категориальным знаком полезен, когда вы интересуетесь циклическим поведением данных, значения которых не являются по сути числовыми. Этот пример воспроизводит частично анализ, о котором сообщают в Стоффере и др. (1988). Данные взяты от Стоффера, Тайлера и Вендта (2000).

Данные от исследования состояний сна в новорожденных дочерних элементах. Детский невропатолог выиграл младенца, электроэнцефалографического (EEG), записывающий каждую минуту в течение приблизительно двух часов. Невропатолог категоризировал состояние сна младенца в одно из следующего:

  • qt - Подавите шумы сна, альтернанта трассировки

  • qh - Подавите шумы сна, высокого напряжения

  • tr - Переходный сон

  • al - Активный сон, низкое напряжение

  • ah - Активный сон, высокое напряжение

  • aw - Не спящий

Введите данные. Младенец никогда не бодрствовал во время записи EEG.

data = {'ah','ah','ah','ah','ah','ah','ah','ah','tr','ah','tr','ah', ...
   'ah','qh','qt','qt','qt','qt','qt','tr','qt','qt','qt','qt','qt', ...
   'qt','qt','qt','qt','qt','tr','al','al','al','al','al','tr','ah', ...
   'al','al','al','al','al','ah','ah','ah','ah','ah','ah','ah','tr', ...
   'tr','ah','ah','ah','ah','tr','tr','tr','qh','qh','qt','qt','qt', ...
   'qt','qt','qt','qt','qt','qt','qt','qt','qt','qt','qt','qt','qt', ...
   'qt','qt','tr','al','al','al','al','al','al','al','al','al','al', ...
   'al','al','al','al','al','al','al','ah','ah','ah','ah','ah','ah', ...
   'ah','ah','ah','tr'};

lend = length(data);
t = 1:lend;

Самый легкий способ анализировать данные временных рядов с категориальным знаком для циклических шаблонов включает численные значения присвоения к категориям. Существует по крайней мере два значимых способа присвоить значения состояниям сна младенца. Во-первых, обратите внимание, что можно заказать шесть состояний от 1 до 6. Это присвоение целесообразно вдоль шкалы наименее активных к самому активному.

Замените шесть состояний сна на их числовые эквиваленты и отобразите данные на графике.

states = ['qt';'qh';'tr';'al';'ah';'aw'];
levelssix = [1 2 3 4 5 6];

for nn = 1:6
    datasix(strcmp(data,states(nn,:))) = levelssix(nn);
end

plot(t,datasix)
axis([0 lend 0 6])
ax = gca;
ax.YTick = [1 2 4 5];
grid
xlabel('Minutes')
ylabel('Sleep State')

Данные показывают циклическое поведение, когда вы фокусируетесь на переходах между самыми тихими состояниями (1 и 2) и самые активные единицы (4 и 5). Чтобы определить цикл того поведения, используйте спектральный анализ. Вспомните, что состояния сна присвоены в одноминутных интервалах. Выборка данных в одноминутных интервалах эквивалентна выборке данных 60 раз в час.

Fs = 60;
[Pxx,F] = periodogram(detrend(datasix,0),[],240,Fs);

plot(F,Pxx)
grid
xlabel('Cycles/Hour')
title('Periodogram of Sleep States')

Спектральный анализ показывает ясный пик, указывающий на доминирующее колебание или цикл в данных. Определите частоту пика.

[~,maxidx] = max(Pxx);
Fsix = F(maxidx)
Fsix = 1.2500

Состояния сна младенца показывают циклическое поведение с частотой приблизительно 1,25 циклов/час.

Вместо того, чтобы присвоить сон утверждает значения 1 - 6, повторите анализ, фокусирующийся только на различии между тихим и активным сном. Присвойте тихие состояния, qt и qh, значение 1. Присвойте переходное состояние, tr, значение 2. Наконец, присвойте два активных состояния сна, al и ah, значение 3. Для полноты присвойте активное состояние, aw, значение 4, даже при том, что состояние не происходит в данных.

states = ['qt';'qh';'tr';'al';'ah';'aw'];
levelsfou = [1 1 2 3 3 4];

for nn = 1:6
    datafou(strcmp(data,states(nn,:))) = levelsfou(nn);
end

plot(t,datafou)
axis([0 lend 0 4])
ax = gca;
ax.YTick = [1 2 3];
grid
xlabel('Minutes')
ylabel('Sleep State')

С этим правилом присвоения между состояниями сна и значениями 1 - 3, циклическое поведение данных более ясно. Повторите спектральный анализ с новым присвоением.

[Pxx,F] = periodogram(detrend(datafou,0),[],240,Fs);

plot(F,Pxx)
grid
xlabel('Cycles/Hour')
title('Periodogram of Sleep States')

[maxval,maxidx] = max(Pxx);
F(maxidx)
ans = 1.2500

Новое присвоение не изменило заключение. Данные показывают доминирующее колебание в 1,25 циклах/час. Поскольку отображение между состояниями сна и целыми числами, представляющими те состояния, было сопоставимо, анализ и заключения не были затронуты. На основе спектрального анализа этих категориальных данных вы приходите к заключению что циклы состояния сна младенца между тихим и активным сном приблизительно один раз в час.

Ссылки

Стоффер, Дэвид С., Марк С. Шер, Гейл А. Ричардсон, Нэнси Л. Дей и Патрисия А. Кобл. "Анализ Фурье Уолша Эффектов Умеренного Материнского Потребления Алкоголя на Неонатальном Циклическом повторении Состояния сна". Журнал американской Статистической Ассоциации. Издание 83, 1988, стр 954-963.

Стоффер, Дэвид С., Д. Э. Тайлер и Д. А. Вендт. "Спектральный Конверт и Его Приложения". Статистическая Наука. Издание 15, 2000, стр 224-253.

Смотрите также

|