状态转换频率的数据可视化(可能在 R 中?)

数据挖掘 r 可视化 马尔科夫过程 状态
2021-09-30 02:27:33

我正在研究一些实验数据,可以是 A、B 和 C 类型。现在我观察了 5 个时间点的数据,我可以看到它们在 A 到 B、B 到 C 之间移动……等等。我查看许多独立数据点的此类转换,并且我有所有数据的累积频率。

例如,我有:

Period  A   B  C           \newline  1       4   4  2  2       1   2  7   3       0   1  9  4      10  0  0  5       8   1  1

我确实知道从一种状态到另一种状态的转换,例如从 A->B、B->C 等等。例如,我知道从第 1 阶段开始,(所有 A 都去了 C。在缺少的 B 中,有一个去了 A,休息到 C。)我在想什么是最好的方式来直观地表示从一个时间明智的过渡状态给另一个。我在想可能有比仅仅拥有一个转换矩阵更好的方法,也许看起来像马尔可夫链但它可以以简洁的方式容纳所有 5 个转换周期?我自己在一个名为 STATA 的统计软件上工作,该软件的图形应用程序有限。其他软件包(也许是R?)上有什么可以帮助我的吗?

  • 很抱歉数据矩阵的黑客表示。
3个回答

一个桑基图怎么样,x 轴上是时间,流宽表示状态转换频率。这是关于在 R 中实现 Sankey 图的 SO 讨论在此处输入图像描述

一个可能的 R 包是{riverplot} ...这是显示数据中第一个转换的代码:

library(riverplot)
nodes <- as.character(sapply(1:2, FUN = function(n){paste0(LETTERS[1:3],n)}))
edges <- list(A1=list(C2=4), B1=list(A2=1,C2=1,B2=2), C1=list(C2=2))
r <- makeRiver( nodes, edges, node_xpos= c( 1,1,1 ,2,2,2),
                node_labels= c( A1= "A", B1= "B", C1= "C", A2="A",B2="B",C2="C" ))
plot( r )

会产生这个: 在此处输入图像描述

如果您有转换计数表形式的数据:

Transition Period 1 Period 2 Period 3 Period 4 \newlineA->A            0             0            0           8A->B            0             0            0           1A->C            4             1            0           1B->A            1             0            1           0B->B            2             0            0           0B->C            1             1            0           0C->A            0             0            9           0C->B            0             0            0           0C->C            2             7            0           0
那么可能的可视化是面积图。以下图表是在 Excel 中生成的(使用插入功能区上的图表/区域按钮)。该图表准确地记录了每个时期发生的所有转变。不同颜色的阴影区域表示按起点-终点对转换的相对频率。

我不确定这是否是您所追求的分析类型,但您提到视觉方面在 STATA 中受到限制。一位同事写了一篇博客,利用 neo4j 将 web 数据读入图形数据库,并使用 d3js 以图形方式显示数据。

我意识到你没有这样的网络数据,但你的数据可以存储在图形数据库中,但我想当我问你打算做什么类型的分析时,我问你是否需要定性或定量方向。但看起来你仍在解决这个问题。neo4j 的好处是您可以将数据拉入 R 并对其进行任何类型的分析。