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

В этом примере показано, как выполнить спектральный анализ данных 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')

Figure contains an axes object. The axes object contains an object of type line.

Данные предоставляют циклическое поведение, когда вы фокусируетесь на переходах между самыми тихими состояниями (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')

Figure contains an axes object. The axes object with title Periodogram of Sleep States contains an object of type line.

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

[~,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')

Figure contains an axes object. The axes object contains an object of type line.

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

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

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

Figure contains an axes object. The axes object with title Periodogram of Sleep States contains an object of type line.

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

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

Ссылки

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

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

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

|