9 votos

Análisis de conglomerados en datos de panel

Tengo un conjunto de datos de panel (país y año) sobre el que me gustaría realizar un análisis de conglomerados por países. Mi conjunto de datos tiene unas 20 variables.

Este es un resumen de mis datos de panel:

panel variable: country (strongly balanced) time variable: year, 2010 to 2013

Ejecutar un análisis de clústeres de kmeans sólo con los datos de 2013 es bastante sencillo. Pero, ¿cómo se haría el análisis teniendo en cuenta todas las observaciones del periodo 2010-2013? ¿Es la agrupación de k-means un enfoque apropiado?

Esto es lo que ejecuté en Stata sólo para 2013:

cluster kmeans var1 var2 var3 var4 var5 var6 if year==2013, k(4) name(test1)

Gracias.

0 votos

La estructura de panel del conjunto de datos haría una interpretación impar del resultado. Podría obtener las mismas personas en diferentes grupos. ¿Tal vez sea esto lo que quiere? Muchos científicos del clima utilizan algo llamado funciones ortogonales empíricas, que según tengo entendido es básicamente un PCA variable en el tiempo. ¿Podría valer la pena investigarlo para su aplicación?

0 votos

¡Gracias por la sugerencia ACD! En realidad, me gustaría identificar qué países tienen las mismas características. Así que tengo información de unos 30 países, y me gustaría agrupar estos países por características similares. No sé si esto ayuda a entender el problema. Gracias de nuevo.

6voto

Runcible Puntos 539

He hecho esto varias veces antes (agrupación con datos de panel) y mi enfoque ha sido agregar la información en el tiempo para crear un conjunto de datos con una fila por país. Las variables agregadas podrían ser las medias de los 4 años o las mínimas o máximas o cualquier otra cosa. Los resultados son difíciles de interpretar si se utiliza cada año como punto de datos para cada país. Por ejemplo, ¿qué significa que un país se encuentre en cada uno de los cuatro grupos a lo largo de los cuatro años?

Esto es sencillo de hacer con data.table en R . Un ejemplo:

require(data.table)
ClusterData = data.table(PanelDataSet)[, list(MeanVar1 = mean(var1)
, MeanVar2 = mean(var2) #create the aggregate variables
...
)
, by = country] #name the variable to aggregate 

A continuación, convertir en una matriz (necesaria para la función kmeans en R)

x = as.matrix(DLQData[,c("MeanVar1", "MeanVar2", ...
), with = FALSE])

A continuación, normalice la matriz utilizando la función scale(). Entonces, ¡está listo para agrupar!

0 votos

Perdón por el cambio de lenguaje de programación, pero no tengo ni idea de cómo usar Stata y mucha gente de aquí usa R.

0 votos

Este enfoque parece interesante, ya que estamos haciendo lo mismo, es decir, convertirlo en una sección transversal antes de utilizar la agrupación. ¿Puede proporcionar ejemplos de alguna literatura que utilice este enfoque?

5voto

Neal Puntos 316

Yo reformularía el ancho para que los datos de cada año sean su propia variable y luego los agruparía. Esto agrupará los países que siguen trayectorias temporales similares para sus 6 variables.

Pruebe algo así en Stata:

reshape wide var@1 var@2 var@3 var@4 var@5 var@6, i(country) j(year);
cluster kmeans var*1 var*2 var*3 var*4 var*6, k(4) name(test1)

4voto

ipartola Puntos 133

He visto algo así en el periódico disponible en el siguiente enlace:

http://www.ersj.eu/repec/ers/papers/12_1_p2.pdf

Básicamente, agruparon los datos y realizaron un análisis pca y un posterior análisis de conglomerados considerando las observaciones como independientes.

2 votos

Esta es una contribución potencialmente útil. Puede proporcionar una cita completa y detallar el procedimiento un poco más, en caso de que el enlace no funcione?

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