Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 一天中每分钟一项活动到另一项活动的转移概率,如从工作到旅行_R_Dataframe - Fatal编程技术网

R 一天中每分钟一项活动到另一项活动的转移概率,如从工作到旅行

R 一天中每分钟一项活动到另一项活动的转移概率,如从工作到旅行,r,dataframe,R,Dataframe,下面是我用来计算活动之间转移概率的矩阵示例(从act1_1到act1_16) 主管(活动)将返回 a tibble:6x145 serial act1_1 act1_2 act1_3 act1_4 act1_5 act1_6 act1_7 act1_8 act1_9 act1_10 1 110 110 110 110 110 110 110 110 110 110 2 110 110 110

下面是我用来计算活动之间转移概率的矩阵示例(从act1_1到act1_16)

主管(活动)将返回 a tibble:6x145

  serial act1_1 act1_2 act1_3 act1_4 act1_5 act1_6 act1_7 act1_8 act1_9  act1_10
     1  110    110    110    110    110    110    110    110    110    110    
     2 110    110    110    110    110    110    110    110    110    110    
     3 110    110    110    110    110    110    110    110    110    110    
     4 110    110    110    110    110    110    110    110    110    110    
     5 110    110    110    110    110    110    110    110    110    110    
     6 110    110    110    110    110    110    110    110    110    110    

# ... with 134 more variables: act1_11 <dbl+lbl>, act1_12 <dbl+lbl>,
系列行动1行动1行动2行动1行动3行动1行动4行动5行动1行动6行动7行动1行动8行动1行动9行动10
1  110    110    110    110    110    110    110    110    110    110    
2 110    110    110    110    110    110    110    110    110    110    
3 110    110    110    110    110    110    110    110    110    110    
4 110    110    110    110    110    110    110    110    110    110    
5 110    110    110    110    110    110    110    110    110    110    
6 110    110    110    110    110    110    110    110    110    110    
# ... 还有134个变量:act1_11,act1_12,
“活动”矩阵的维度为ncol=144,nrows=16533;act1_1…ac1_144是时间步长,时间以10分钟的间隔表示(例如act1_1=4.10am;act1_2=4.20am..)。时间从凌晨4点(act1_1)开始,到act1_144(凌晨4点)结束。栏目中充满了不同的活动,如110=睡觉,111=看电视,123=吃饭等

下面是我用来:


transition.matrix使用
apply
rep(…,每个=10)

假设您的数据如您所说,则以下命令将数据帧从一个包含145列的帧(一个24小时周期内串行+144个10分钟间隔)扩展为一个包含1441列的帧(一个24小时周期内串行+1440个1分钟间隔)


活动1我认为函数的最后一行应该返回
t
@Edward true这是一个错误,代码应该是ttAh-yes。这更有意义答案更新。我不太理解“平行活动”或“二级、三级…”。你是说在给定的时间间隔内有两个或两个以上的活动吗?喜欢同时看电视和睡觉吗?不可能!马尔可夫理论说,在任何给定的时间,你只能处于一种状态。如果您确实想这样做,那么创建/定义另一个活动:110.111(“睡眠+看电视”)。
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))
Activities1 <- data.frame(Activities[,1], 
                          t(apply(Activities[,-1], 1, FUN=rep, each=10)))

names(Activities1) <- c("serial", paste("act1", seq_len(1440), sep="_"))
dim(Activities1)
#[1] 16533  1441
transition.matrix <- function(X, prob=T)
{
  tt <- table( c(X[,-ncol(X)]), c(X[,-1]) )
  if(prob) tt <- tt / rowSums(tt)
  tt
}
transitionfunction <- transition.matrix(as.matrix(Activities[,-1]))
transitionfunction

#       110   111   123
# 110 0.334 0.332 0.333
# 111 0.334 0.333 0.332
# 123 0.332 0.333 0.335
transitionfunction <- transition.matrix(as.matrix(Activities1[,-1]))
transitionfunction

 #       110    111    123
 # 110 0.9338 0.0331 0.0331
 # 111 0.0332 0.9337 0.0331
 # 123 0.0331 0.0331 0.9338
n <- 16533
ncol <- 144    
set.seed(404)

Activities <- data.frame(serial=1:n,
                           matrix(sample(c(110,111,123), size=n*ncol, replace=TRUE), ncol=144))
dim(Activities)
names(Activities) <- c("serial", paste("act1", 1:ncol, sep="_"))

Activities[1:6, 1:11]
  serial act1_1 act1_2 act1_3 act1_4 act1_5 act1_6 act1_7 act1_8 act1_9 act1_10
1      1    111    123    110    110    111    111    111    110    110     110
2      2    123    111    123    110    111    123    123    110    111     110
3      3    111    111    111    111    123    111    123    123    110     123
4      4    123    111    110    111    111    110    123    110    111     111
5      5    110    123    110    111    110    110    111    110    123     111
6      6    111    111    111    123    123    110    123    111    110     123