gpt4 book ai didi

r - R 输入格式的 MHSMM 包?

转载 作者:行者123 更新时间:2023-12-04 15:51:00 24 4
gpt4 key购买 nike

我尝试使用 MHSMM 包来估计使用多个观察序列的隐马尔可夫模型的参数。

但是对于函数 hmmfit(x),x 的格式是什么,我尝试使用矩阵,列表的列表,但是方法 hmmfit(x) 无法正常工作,说 x 不是数字。

谁能举例说明如何使用这个包来估计 HMM 参数?我有一个 csv 文件,其中每一行都是一系列观察结果,并且 csv 文件中有多行。

非常感谢!

最佳答案

我写这个函数来创建正确的数据格式:

formatMhsmm <- function(data){

nb.sequences = nrow(data)
nb.observations = length(data)

#transform list to data frame
data_df <- data.frame(matrix(unlist(data), nrow = nb.sequences, byrow=F))


#iterate over these in loops
rows <- 1:nb.sequences
observations <- 0:(nb.observations-1)

#build vector with id values
id = numeric(length = nb.sequences*nb.observations )

for(i in rows)
{
for (j in observations)
{
id[i+j+(i-1)*(nb.observations-1)] = i
}
}

#build vector with observation values
sequences = numeric(length = nb.sequences*nb.observations)

for(i in rows)
{
for (j in observations)
{
sequences[i+j+(i-1)*(nb.observations-1)] = data_df[i,j+1]
}
}

data.df = data.frame(id, sequences)

#creation of hsmm.data object needed for training
N <- as.numeric(table(data.df$id))
train <- list(x = data.df$sequences, N = N)
class(train) <- "hsmm.data"

return(train)
}

基本上,您在 hsmm.data 格式中需要的是一个显示每个序列有多长的 ID,以及相应的序列。这些在一个列表中,然后你分配“hsmm.data”格式,这样hmmfit就可以识别它。

然后你可以这样调用它,我给出了一些 HMM 参数的初步估计,你可以根据自己的需要进行调整:

library(mhsmm)

dataset <- read.csv('file.csv',header=TRUE)
train <- formatMhsmm(dataset)

# 4 states HMM
J=4
#init probabilities
init <- rep(1/J, J)

#transition matrix
P <- matrix(rep(1/J, J*J), nrow = J)

#emission matrix: here I used a Gaussian distribution, replace muEst and sigmaEst by your initial estimates of mean and variance
b <- list(mu = muEst, sigma = sigmaEst)

#starting model for EM
startmodel <- hmmspec(init = init, trans = P, parms.emis = b, dens.emis = dnorm.hsmm)

#EM algorithm fits an HMM to the data
hmm <- hmmfit(train, startmodel, mstep = mstep.norm,maxit = 100)

#print resulting HMM parameters
summary(hmm)

您可以从以下论文中找到更多信息:O’Connell、Jared 和 Søren Højsgaard。 “用于多个观察序列的隐半马尔可夫模型:R 的 mhsmm 包。”统计软件学报 39.4 (2011): 1-22.

这是一个迟到的答案,但希望它可以帮助别人。干杯

关于r - R 输入格式的 MHSMM 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682619/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com