【发布时间】: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)
*对于列表中我不知道的每个人:
- 如何命名马尔可夫链 S4 对象
- 如何从 S4 对象中移除转换矩阵槽
- markovchainFit 后如何传递附加函数
有人对如何通过 ID 向量循环我对单个人的分析有任何建议吗?将不胜感激。
【问题讨论】:
标签: r matrix time time-series markov-chains