【问题标题】:First Order Markov Transition Matrix for Person Period Data人期数据的一阶马尔可夫转移矩阵
【发布时间】:2021-04-12 16:53:09
【问题描述】:

使用单个人的时间序列数据,我可以计算一阶概率转移矩阵即库(markovchain)并计算其密度即库(statnet)

此代码有效:

ds = matrix(c(1,1,2,1,2,4,1,3,6,1,4,8),ncol=3,byrow=TRUE) #create person period data for a single person
colnames(ds) = c("Id", "Time", "Evt")
ds = as.data.frame(ds)
mc = markovchainFit(ds$Evt, name = "mc")$estimate #calculate markovchain
am = mc@transitionMatrix #remove slot from S4 object
em = network(am, matrix.type="adjacency", directed=TRUE, Weighted = TRUE, loops = FALSE) #make network object
gden(em)#calculate density of network, etc

但我无法使用tapply 使其适用于具有多个ID 的数据。此代码在第 4 行之后不起作用,但它是我脑海中的解决方案:

ds2 = matrix(c(1,1,2,1,2,4,1,3,6,1,4,8,2,1,3,2,2,5,2,3,7,2,4,9),ncol=3,byrow=TRUE) #create person period data for two people
colnames(ds2) = c("Id", "Time", "Evt")
ds2 = as.data.frame(ds2)
mc2 = tapply(ds2$Evt, ds2$Id, markovchainFit) #it works to here and I am STUCK for days *see below
am2 = mc@transitionMatrix, #can't figure how to integrate these steps from above
em2 = network(am, matrix.type="adjacency", directed=TRUE, Weighted = TRUE, loops = FALSE) 
gden(em2)

*对于列表中我不知道的每个人:

  1. 如何命名马尔可夫链 S4 对象
  2. 如何从 S4 对象中移除转换矩阵槽
  3. markovchainFit 后如何传递附加函数

有人对如何通过 ID 向量循环我对单个人的分析有任何建议吗?将不胜感激。

【问题讨论】:

    标签: r matrix time time-series markov-chains


    【解决方案1】:

    如下所示。在下面的代码中,我创建了一个函数来完成所有临时工作并在适当的对象上返回 gden() 的结果。

    
    ds2 = matrix(c(1,1,2,1,2,4,1,3,6,1,4,8,2,1,3,2,2,5,2,3,7,2,4,9),ncol=3,byrow=TRUE) #create person period data for two people
    colnames(ds2) = c("Id", "Time", "Evt")
    ds2 = as.data.frame(ds2)
    mcfun <- function(x){
      mc <- markovchainFit(x, name="mc")$estimate
      am <- mc@transitionMatrix
      em <- network(am, matrix.type="adjacency", directed=TRUE, Weighted = TRUE, loops = FALSE) #make network object
      gden(em)#calculate density of network, etc
      
    }
    tapply(ds2$Evt, ds2$Id, mcfun)
    #    1    2 
    # 0.25 0.25 
    
    

    【讨论】:

    • 啊,是的。我现在明白了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多