Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Encuentra la periodicidad en una serie temporal categórica

En este ejemplo se muestra cómo realizar análisis espectrales de datos de series temporales de valor categórico. El análisis espectral de series temporales de valor categórico es útil cuando está interesado en el comportamiento cíclico de datos cuyos valores no son inherentemente numéricos. Este ejemplo reproduce en parte el análisis notificado en Stoffer et al. (1988). Los datos son tomados de Stoffer, Tyler y Wendt (2000).

Los datos provienen de un estudio de los estados del sueño en niños recién nacidos. Un neurólogo pediátrico puntuó el registro electroencefalográfico (EEG) de un bebé cada minuto durante aproximadamente dos horas. El neurólogo clasificó el estado de sueño del bebé en uno de los siguientes:

  • - Sueño tranquilo, alternante de trazasqt

  • - Sueño silencioso, alto voltajeqh

  • - Sueño de transicióntr

  • - Sueño activo, bajo voltajeal

  • - Sueño activo, alto voltajeah

  • - Despertaraw

Introduzca los datos. El bebé nunca estuvo despierto durante la grabación del 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;

La forma más fácil de analizar los datos de series temporales con valores categóricos para patrones cíclicos implica la asignación de valores numéricos a las categorías. Hay al menos dos formas significativas de asignar valores a los estados de sueño del bebé. En primer lugar, tenga en cuenta que puede ordenar los seis estados del 1 al 6. Esta asignación tiene sentido a lo largo de la escala de menos activo a más activo.

Reemplace los seis estados de suspensión por sus equivalentes numéricos y trace los datos.

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

Los datos muestran un comportamiento cíclico cuando se centra en las transiciones entre los estados más silenciosos (1 y 2) y los más activos (4 y 5). Para determinar el ciclo de ese comportamiento, utilice el análisis espectral. Recuerde que los estados de suspensión se asignan en intervalos de un minuto. El muestreo de los datos en intervalos de un minuto equivale a muestrear los datos 60 veces por hora.

Fs = 60; [Pxx,F] = periodogram(detrend(datasix,0),[],240,Fs);  plot(F,Pxx) grid xlabel('Cycles/Hour') title('Periodogram of Sleep States')

El análisis espectral muestra un pico claro que indica una oscilación dominante, o ciclo en los datos. Determine la frecuencia del pico.

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

Los estados de sueño del bebé exhiben un comportamiento cíclico con una frecuencia de aproximadamente 1,25 ciclos/hora.

En lugar de asignar los estados de suspensión los valores 1 a 6, repita el análisis centrándose sólo en la distinción entre el sueño silencioso y el sueño activo. Asigne los estados silenciosos y , el valor 1.qtqh Asigne el estado de transición, , el valor 2.tr Por último, asigne los dos estados de suspensión activos y , el valor 3.alah Para completar, asigne el estado awake, , el valor 4, aunque el estado no se produzca en los datos.aw

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

Con esta regla de asignación entre los estados de suspensión y los valores 1 a 3, el comportamiento cíclico de los datos es más claro. Repita el análisis espectral con la nueva asignación.

[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 

La nueva asignación no ha cambiado la conclusión. Los datos muestran una oscilación dominante a 1,25 ciclos/hora. Dado que la asignación entre los estados de suspensión y los enteros que representan esos estados era coherente, el análisis y las conclusiones no se vieron afectados. Sobre la base de un análisis espectral de estos datos categóricos, se concluye que el estado de sueño del bebé ciclos entre el sueño tranquilo y activo aproximadamente una vez cada hora.

Referencias

Stoffer, David S., Mark S. Scher, Gale A. Richardson, Nancy L. Day y Patricia A. Coble. "Un análisis Walsh-Fourier de los efectos del consumo moderado de alcohol materno en el ciclo neonatal del estado del sueño." Vol. 83, 1988, págs. 954-963.Journal of the American Statistical Association.

Stoffer, David S., D. E. Tyler y D.A. Wendt. "El sobre espectral y sus aplicaciones." Vol. 15, 2000, págs. 224-253.Statistical Science.

Consulte también

|