exponenta event banner

Поиск периодичности в категориальном временном ряду

В этом примере показано, как выполнять спектральный анализ данных временных рядов с категориальным значением. Спектральный анализ временных рядов с категориальными значениями полезен, когда вас интересует циклическое поведение данных, значения которых по своей сути не являются числовыми. Этот пример частично воспроизводит анализ, представленный Stoffer et al. (1988). Данные взяты из Stoffer, Tyler и Wendt (2000).

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

  • qt - Тихий сон, чередование следов

  • qh - Тихий сон, высокое напряжение

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

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

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

  • aw - Пробудитесь

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

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. The axes 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. The axes 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. The axes 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. The axes 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.

См. также

|