Articulo de referencia

entropía de muestra

La entropía de muestra (SampEn; más apropiadamente entropía K_2 o entropía de correlación de Takens–Grassberger–Procaccia ) es una modificación de la entropía aproximada (ApEn; ...

La entropía de muestra (SampEn; más apropiadamente entropía K_2 o entropía de correlación de Takens–Grassberger–Procaccia ) es una modificación de la entropía aproximada (ApEn; más apropiadamente "entropía de Procaccia–Cohen"), utilizada para evaluar la complejidad de señales fisiológicas y otras señales de series temporales , diagnosticando, por ejemplo, estados patológicos. [ 1 ] SampEn tiene dos ventajas sobre ApEn: independencia de la longitud de los datos y una implementación relativamente sencilla. Además, existe una pequeña diferencia computacional: en ApEn, la comparación entre el vector plantilla (ver más abajo) y el resto de los vectores también incluye una comparación consigo mismo. Esto garantiza que las probabilidadesdoimetro(r){\displaystyle C_{i}'^{m}(r)}Nunca son cero. Por consiguiente, siempre es posible tomar el logaritmo de las probabilidades. Debido a que las comparaciones de plantillas consigo mismas reducen los valores de ApEn, las señales se interpretan como más regulares de lo que realmente son. Estas autocoincidencias no se incluyen en SampEn. Sin embargo, dado que SampEn utiliza directamente las integrales de correlación, no es una medida real de información, sino una aproximación. Los fundamentos y las diferencias con ApEn, así como un tutorial paso a paso para su aplicación, están disponibles en [ 2 ] .

SampEn es, en efecto, idéntico a la "entropía de correlación" K_2 de Grassberger y Procaccia, [ 3 ] salvo que en esta última se sugiere que se deben tomar ciertos límites para obtener un resultado invariante ante cambios de variables. En SampEn no se consideran tales límites ni propiedades de invariancia.

También existe una versión multiescala de SampEn, sugerida por Costa y otros. [ 4 ] SampEn puede utilizarse en investigación biomédica y biomecánica, por ejemplo, para evaluar el control postural. [ 5 ] [ 6 ]

Definición

Al igual que la entropía aproximada (ApEn), la entropía de muestra ( SampEn ) es una medida de complejidad . [ 1 ] Pero no incluye patrones autosimilares como lo hace ApEn. Para una dimensión de incrustación dadametro{\displaystyle m}, toleranciar{\displaystyle r} y número de puntos de datosnorte{\displaystyle N}, SampEn es el logaritmo natural negativo de la probabilidad de que si dos conjuntos de puntos de datos simultáneos de longitudmetro{\displaystyle m} tener distancia<r{\displaystyle <r}luego dos conjuntos de puntos de datos simultáneos de longitudmetro+1{\displaystyle m+1} también tienen distancia<r{\displaystyle <r}Y lo representamos medianteSametropagminorte(metro,r,norte){\displaystyle SampEn(m,r,N)}(o porSametropagminorte(metro,r,τ,norte){\displaystyle SampEn(m,r,\tau ,N)}incluido el tiempo de muestreoτ{\displaystyle \tau }).

Ahora supongamos que tenemos un conjunto de datos de series temporales de longitudnorte={incógnita1,incógnita2,incógnita3,...,incógnitanorte}{\displaystyle N={\{x_{1},x_{2},x_{3},...,x_{N}\}}}con un intervalo de tiempo constanteτ{\displaystyle \tau }. Definimos un vector plantilla de longitudmetro{\displaystyle m}, de tal manera queincógnitametro(i)={incógnitai,incógnitai+1,incógnitai+2,...,incógnitai+metro1}{\displaystyle X_{m}(i)={\{x_{i},x_{i+1},x_{i+2},...,x_{i+m-1}\}}}y la función de distanciad[incógnitametro(i),incógnitametro(j)]{\displaystyle d[X_{m}(i),X_{m}(j)]}(i≠j) será la distancia de Chebyshev (pero podría ser cualquier función de distancia, incluida la distancia euclidiana ). Definimos la entropía de la muestra como

Sametropagminorte=lnAB{\displaystyle SampEn=-\ln {A \over B}}

Dónde

A{\displaystyle A}= número de pares de vectores plantilla que tienend[incógnitametro+1(i),incógnitametro+1(j)]<r{\displaystyle d[X_{m+1}(i),X_{m+1}(j)]<r}

B{\displaystyle B}= número de pares de vectores plantilla que tienend[incógnitametro(i),incógnitametro(j)]<r{\displaystyle d[X_{m}(i),X_{m}(j)]<r}

De la definición se desprende claramente queA{\displaystyle A}siempre tendrá un valor menor o igual aB{\displaystyle B}. Por lo tanto,Sametropagminorte(metro,r,τ){\displaystyle SampEn(m,r,\tau )}siempre será un valor cero o positivo. Un valor menor deSametropagminorte{\displaystyle SampEn}También indica una mayor autosimilitud en el conjunto de datos o menos ruido.

Generalmente tomamos el valor demetro{\displaystyle m}ser2{\displaystyle 2}y el valor der{\displaystyle r}ser0,2×std{\displaystyle 0.2\times std}. Donde std significa desviación estándar que debe tomarse sobre un conjunto de datos muy grande. Por ejemplo, el valor r de 6 ms es apropiado para los cálculos de entropía de muestra de intervalos de frecuencia cardíaca, ya que esto corresponde a0,2×std{\displaystyle 0.2\times std}para una población muy grande.

Muestra multiescala

La definición mencionada anteriormente es un caso especial de sampEn multiescala conδ=1{\displaystyle \delta =1}, dóndeδ{\displaystyle \delta }se denomina parámetro de salto. En los vectores de plantilla multiescala SampEn se definen con un cierto intervalo entre sus elementos, especificado por el valor deδ{\displaystyle \delta }. Y el vector de plantilla modificado se define como incógnitametro,δ(i)=incógnitai,incógnitai+δ,incógnitai+2×δ,...,incógnitai+(metro1)×δ{\displaystyle X_{m,\delta }(i)={x_{i},x_{i+\delta },x_{i+2\times \delta },...,x_{i+(m-1)\times \delta }}} y sampEn se puede escribir como Sametropagminorte(metro,r,δ)=lnAδBδ{\displaystyle SampEn\left(m,r,\delta \right)=-\ln {A_{\delta } \over B_{\delta }}} Y calculamosAδ{\displaystyle A_{\delta }}yBδ{\displaystyle B_{\delta }}como antes.

Implementación

La entropía de muestra se puede implementar fácilmente en muchos lenguajes de programación diferentes. A continuación se muestra un ejemplo escrito en Python.

from itertools import combinations from math import logdef construct_templates ( timeseries_data : list , m : int = 2 ): num_windows = len ( timeseries_data ) - m + 1 return [ timeseries_data [ x : x + m ] for x in range ( 0 , num_windows )]def get_matches ( plantillas : lista , r : float ) -> int : return len ( lista ( filtro ( lambda x : is_match ( x [ 0 ], x [ 1 ], r ), combinaciones ( plantillas , 2 ))) )def is_match ( plantilla_1 : lista , plantilla_2 : lista , r : flotante ) -> bool : return all ([ abs ( x - y ) < r for ( x , y ) in zip ( plantilla_1 , plantilla_2 )])def sample_entropy ( timeseries_data : list , window_size : int , r : float ): B = get_matches ( construct_templates ( timeseries_data , window_size ), r ) A = get_matches ( construct_templates ( timeseries_data , window_size + 1 ), r ) return - log ( A / B )

Un ejemplo equivalente en Python numérico.

importar numpydef construct_templates ( timeseries_data , m ): num_windows = len ( timeseries_data ) - m + 1 return numpy . array ([ timeseries_data [ x : x + m ] for x in range ( 0 , num_windows )])def get_matches ( plantillas , r ) -> int : return len ( lista ( filtro ( lambda x : is_match ( x [ 0 ], x [ 1 ], r ), combinaciones ( plantillas ))) )def combinaciones ( x ): idx = numpy . stack ( numpy . triu_indices ( len ( x ), k = 1 ), axis =- 1 ) return x [ idx ]def is_match ( plantilla_1 , plantilla_2 , r ) -> bool : return numpy . all ([ abs ( x - y ) < r for ( x , y ) in zip ( plantilla_1 , plantilla_2 )])def sample_entropy ( timeseries_data , window_size , r ): B = get_matches ( construct_templates ( timeseries_data , window_size ), r ) A = get_matches ( construct_templates ( timeseries_data , window_size + 1 ), r ) return - numpy . log ( A / B )

Se puede encontrar un ejemplo escrito en otros idiomas:

  • Matlab
  • R.​
  • Óxido

Véase también

Referencias

  1. 1 2 Richman, JS; Moorman, JR (2000). "Análisis de series temporales fisiológicas mediante entropía aproximada y entropía de muestra" . American Journal of Physiology. Heart and Circulatory Physiology . 278 (6): H2039–49. doi : 10.1152/ajpheart.2000.278.6.H2039 . PMID 10843903 . 
  2. Delgado-Bonal, Alfonso; Marshak, Alexander (junio de 2019). "Entropía aproximada y entropía de muestra: un tutorial completo" . Entropy . 21 ( 6): 541. Bibcode : 2019Entrp..21..541D . doi : 10.3390/e21060541 . PMC 7515030. PMID 33267255 .  
  3. Grassberger, Peter; Procaccia, Itamar (1983). "Estimación de la entropía de Kolmogorov a partir de una señal caótica". Physical Review A. 28 ( 4): 2591(R). Bibcode : 1983PhRvA..28.2591G . doi : 10.1103/PhysRevA.28.2591 .
  4. Costa, Madalena; Goldberger, Ary; Peng, C.-K. (2005). "Análisis de entropía multiescala de señales biológicas". Physical Review E . 71 (2) 021906. Bibcode : 2005PhRvE..71b1906C . doi : 10.1103/PhysRevE.71.021906 . PMID 15783351 . 
  5. Błażkiewicz, Michalina; Kędziorek, Justyna; Hadamus, Anna (marzo de 2021). "El impacto de la entrada visual y la manipulación del área de apoyo en el control postural en sujetos después de una fractura vertebral osteoporótica" . Entropy . 23 ( 3): 375. Bibcode : 2021Entrp..23..375B . doi : 10.3390/e23030375 . PMC 8004071. PMID 33804770 .  
  6. ^ Hadamus, Anna; Białoszewski, Dariusz; Błażkiewicz, Michalina; Kowalska, Aleksandra J.; Urbaniak, Edyta; Wydra, Kamil T.; Wiaderna, Karolina; Boratyński, Rafał; Kobza, Agnieszka; Marczyński, Wojciech (febrero de 2021). "Evaluación de la eficacia de la rehabilitación después de una cirugía de reemplazo total de rodilla mediante entropía de muestra y medidas clásicas del equilibrio corporal" . Entropía . 23 (2): 164. Bibcode : 2021Entrp..23..164H . doi : 10.3390/e23020164 . PMC 7911395 . PMID 33573057 .