【问题标题】:clustering companies based on several time series variables in SAS基于SAS中几个时间序列变量的集群公司
【发布时间】:2017-10-12 21:33:31
【问题描述】:

我有大约 70 家公司,我想使用 SAS 根据三个时间序列变量将它们聚集成更小的组。

数据是标准化和堆叠的。它看起来像这样:

Day  Company  Var1  Var2  Var3
1       A     0.01  0.015 0.14
2       A      ...
3       A      ...
...
99      Z      ...
100     Z      ...

以下是我的想法:

  1. 我通过计算三个变量的欧几里得距离 Var4 将三个变量合并为一个变量

然后我将数据拆开,得到一个新的数据集,如下所示:

Day  Var4_A  Var4_B ... Var4_Z
1    0.141    0.1   ...  0.23
2        
...
99   
100   
  1. 我将新数据集发送到 proc 相似度以获得某种相似度 矩阵
  2. 我将相似度矩阵发送到 proc cluster 并获取公司组

我的问题是:

第 1 步是组合三个变量的明智方法吗?我在网上找到了一些使用第 2 步和第 3 步对时间序列数据进行聚类的示例,但它们似乎只使用了 1 个变量。

【问题讨论】:

  • 您是否考虑过使用任何内置的聚类分析程序,例如proc fastclusproc modeclus ?
  • @user667489 据我了解,fastclus 是对观察结果进行聚类,而不是对您的公司进行聚类,对吗?我不希望同一家公司的不同观察结果落入不同的群体。这可以通过 fastclus 实现吗?
  • 我会考虑对每一天运行单独的聚类分析,或者将相邻的天组合在一起并在使用按组处理运行每个时间段的分析之前取 var1-varn 的平均值。
  • @user667489 这很有意义——在每天运行集群之后,我如何得出一个最终结果以供将来使用?
  • 有许多可能的方法 - 选择适合您的方法是一个问题。例如。您可以查看在所有单独分析中将成对的公司放在同一个集群中的频率,如果这个数字超过某个阈值,则将它们放在同一个最终集群中。

标签: sas statistics time-series cluster-analysis


【解决方案1】:

通常的方法是使用动态时间扭曲距离。但是,假设公司之间没有时间延迟,您可能不需要这里。

您是否尝试过将这个数据集直接转换为公司(然后有几天 x 变量为新变量)并在其上使用欧几里得距离?

在我看来,将所有变量都采用欧几里得范数作为特征缩减听起来不是一个好主意...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多