【问题标题】:Transition probabilities representation转移概率表示
【发布时间】:2019-05-23 16:01:01
【问题描述】:

我想确定一段时间内的活动变化。下面是我用来计算活动之间转移概率的矩阵示例(从 act1_1 到 act1_16)。

head(活动)将返回 一个小标题:6 x 145

  serial act1_1 act1_2 act1_3 act1_4 act1_5 act1_6 act1_7 act1_8 act1_9  act1_10
     1 1.22e7 110    110    110    110    110    110    110    110    110    110    
     2 1.43e7 110    110    110    110    110    110    110    110    110    110    
     3 2.00e7 110    110    110    110    110    110    110    110    110    110    
     4 2.71e7 110    110    110    110    110    110    110    110    110    110    
     5 1.61e7 110    110    110    110    110    110    110    110    110    110    
     6 1.60e7 110    110    110    110    110    110    110    110    110    110    

# ... with 134 more variables: act1_11 <dbl+lbl>, act1_12 <dbl+lbl>,

“活动”矩阵的维度是 ncol=144 和 nrows=16533; act1_1...ac1_144 是时间步长,时间以 10 分钟间隔表示(例如 act1_1 = 4.10am;act1_2=4.20am..)。时间从凌晨 4 点 (act1_1) 开始,到 act1_144(4am) 结束。各列填满了不同的活动,例如 110=睡觉、111=看电视、123=吃饭等。

在我正在使用的函数下方calculate the transition probabilities

transition.matrix <- function(X, prob=T)
{
    tt <- table( c(X[,-ncol(X)]), c(X[,-1]) )
    if(prob) t <- tt / rowSums(tt)
    tt
}
I call the function as:

transitionfunction <- trans.matrix(as.matrix(Activities))

使用这个函数,我设法计算了活动之间的转移概率(活动矩阵)。下面是这种矩阵的一个例子:

使用transitionfunctionI would like to plot on x axis time (10 minutes intervals) and y axis probabilities

我该怎么做?如何确定活动之间最频繁的转换?

这是我的目标:

【问题讨论】:

  • 也许matplot()
  • @Darren Tsai 谢谢,我用 matplot 更新了(见问题结尾)
  • @Darren Tsai 感谢我更新并包含了转移概率矩阵

标签: r dataframe matrix ggplot2


【解决方案1】:

给定一个转移矩阵m,你可以找到最频繁的n转移如下:

n <- 3 # or whatever
sorted <- sort(m, decreasing = TRUE)
which(m >= sorted[n], arr.ind = TRUE)

平局可能意味着您将获得超过n 的结果。

鉴于您的数据,您可能希望忽略对角线。您可以使用

diag(m) <- 0

然后使用上面的代码。

一个问题是您没有每次都有单独的转换矩阵。如果您以可用的形式发布一些数据,您可能会得到帮助。 (不是全部 16533 行,刚好够有趣。)

【讨论】:

  • 我怎样才能每次分离转换矩阵?聚合矩阵有 144 列和 16533 行。列编号从act1_1...act1_144;时间从凌晨 4 点 (act1_1) 开始,到 act1_144(4am) 结束。各列填充了不同的活动,例如 2 = 睡觉、48 = 看电视、5 = 吃饭等。
  • 仅使用前 2 列计算第一个转换矩阵,下一个使用第 2 和 3 列,第三个使用第 3 和 4 列,等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 2020-03-28
相关资源
最近更新 更多