2 votos

Agrupación basada en el modelo de mezclas de Gauss para datos unimodales de series temporales

Problema:

Tengo un conjunto de datos simulados que se compone de múltiples subpoblaciones (o muestras), cada subpoblación se extrae de, y se describe por, su propia distribución gaussiana (aunque por casualidad, las subpoblaciones pueden tener propiedades de distribución idénticas). A continuación se muestra este conjunto de datos en función del índice de medición (o tiempo):

enter image description here

Como este conjunto de datos es simulado, sé dónde están los "límites" de las subpoblaciones, y los he marcado en el gráfico (las líneas rojas indican la media de las subpoblaciones, mientras que la azul es un $\mu\pm1\sigma$ límite).

Si observamos la FDP de todo el conjunto de datos, veremos algo parecido a una distribución de mezclas gaussiana, pero puede que no sea una distribución de mezclas gaussiana en el sentido convencional, ya que los "pesos" se definen por el número de puntos de una subpoblación determinada, en lugar de por la probabilidad de que una observación pertenezca a una distribución componente de la mezcla.

Objetivo:

Lo que quiero conseguir es poder volver a dividir este conjunto de datos en las subpoblaciones que lo componen. Creo que algún tipo de agrupación basada en GMM puede ser la manera de hacerlo. He intentado utilizar el R biblioteca Mclust pero su éxito fue limitado.

Si importo los datos como univariantes, obtengo algunos resultados de clasificación extraños (para G = 2 et G = 16 ):

enter image description here

Como puede ver, nada parece muy gaussiano.

Si mantengo la indexación (o información temporal), e importo como $x-y$ entonces obtengo una clasificación más razonable, pero no de la forma que yo esperaría para este tipo de datos:

enter image description here

Aquí podemos ver que los cúmulos se encuentran como elipsoides, una consecuencia de la elección del modelo y de las restricciones. En mi caso, yo esperaría/quisiera un perfil "rectangular".

No espero poder reconstruir perfectamente las subpoblaciones, especialmente si tienen propiedades de distribución muy similares, pero me gustaría encontrar un método para descomponer el conjunto de datos de forma insesgada, es decir, eliminar el sesgo de mi elección de descomposición si tuviera que hacerlo manualmente.

Si alguien puede sugerirme una forma de conseguirlo, ya sea con otro R biblioteca, u otra técnica -- tal vez mi enfoque GMM sea un callejón sin salida.

Mi objetivo fundamental es dividir el conjunto de datos en las subpoblaciones que lo componen de forma imparcial.

2voto

smohyee Puntos 116

Ya que parece que he respondido a tu pregunta, ampliaré un poco mi comentario para que esta cuestión pueda cerrarse. Los MMG no se adaptan bien a este problema porque, en el caso unidimensional, descartan toda la información temporal y, en el caso bidimensional, interpretan la información temporal como una segunda dimensión a lo largo de la cual los datos se distribuyen aleatoriamente. Por eso se obtienen conglomerados redondos en dos dimensiones.

En realidad, lo que se quiere es identificar los puntos en el tiempo en los que el proceso de generación de datos cambia bruscamente. Esto se denomina análisis de puntos de cambio. Existen muchos paquetes en R y Python. Sólo asegúrese de elegir uno que le permita detectar cambios en la media y varianza.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X