面板数据的聚类分析

机器算法验证 聚类 状态 面板数据 k-均值
2022-03-15 02:53:34

我有一个面板数据集(国家和年份),我想按国家/地区对其进行聚类分析。我的数据集有大约 20 个变量。

这是我的面板数据的摘要:

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

仅对 2013 年的数据进行 kmeans 聚类分析非常简单。但是,考虑到 2010-2013 年期间的所有观察结果,您将如何进行分析?k-means 聚类是一种合适的方法吗?

以下是我仅在 2013 年在 Stata 中运行的内容:

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

谢谢!

3个回答

我之前已经做过几次(使用面板数据进行聚类),我的方法是随着时间的推移汇总信息,以创建每个国家一行的数据集。聚合变量可以是 4 年或最小值或最大值或其他值的平均值。如果您将每年用作每个国家/地区的数据点,则结果很难解释。例如,如果一个国家在四年内属于四个集群中的每一个,这意味着什么?

使用 data.table in 很容易做到这一点R一个例子:

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 

然后转换为矩阵(R中的kmeans函数需要)

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

接下来,使用 scale() 函数标准化矩阵。然后你就可以集群了!

我会广泛地重塑,所以每年的数据都是它自己的变量,然后是集群。这将对您的 6 个变量遵循相似时间路径的国家/地区进行分组。

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

我在以下链接的论文中看到了类似的内容:

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

基本上,他们通过将观察结果视为独立的来汇集数据并运行 pca 和随后的聚类分析。