分组后估算模型子集的概率

时间:2018-02-12 01:41:00

标签: r grouping subset markov-chains

使用的数据可用here(该文件名为“figshare.txt”)。

我估算了Markov模型的转移概率,其中观测值按位置分组(group_by(km))。

data <- data %>% group_by(km) %>% summarize(pp_chain=list(pp)) %>% as.data.frame 
pp_chains <- data$pp_chain; names(pp_chains) <- data$km
fit <- markovchainFit(pp_chains)

输出(此处总结)显示整体模型的概率估计值:

print(fit$estimate)
      0          1
0 0.9116832 0.08831677
1 0.5250852 0.47491476

假设我输出的输出更具体,并且会为我提供每个位置的概率(km)。

它看起来像这样:

km = 80
      0          1
0 0.7116832 0.28831677
1 0.1250852 0.17491476

km = 81
      0          1
0 0.8116832 0.18831677
1 0.4250852 0.37491476

km = 83
      0          1
0 0.6116832 0.38831677
1 0.3250852 0.27491476
  

有没有人知道如何在模型运行后单独提取每个位置(km)的马尔可夫模型估计值?

1 个答案:

答案 0 :(得分:1)

简单的lapply()解决方案是否足够?据我所知,每个序列都是分开处理的,即没有复杂的相互依赖性等等。

library(dplyr)
library(markovchain)

data <- read.table(paste0("https://ndownloader.figshare.com/files",
  "/10412271?private_link=ace5b44bc12394a7c46d"), header=TRUE, sep="\t")

data <- data %>% group_by(km) %>% summarize(pp_chain=list(pp)) %>% as.data.frame 
pp_chains <- data$pp_chain; names(pp_chains) <- data$km

est <- lapply(pp_chains, function(x) markovchainFit(x)$estimate)
head(est, 3)

# $`80`
          # 0         1
# 0 0.8470588 0.1529412
# 1 0.7222222 0.2777778


# $`81`
          # 0         1
# 0 0.6976378 0.3023622
# 1 0.2107574 0.7892426


# $`83`
          # 0          1
# 0 0.9706840 0.02931596
# 1 0.4210526 0.57894737