使用的数据可用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
)的马尔可夫模型估计值?
答案 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