我正在使用hmm.discnp库并将其与R中的Hmm库结合使用。我正在尝试将我的数据合并到HMM中,它给了我上面的错误。这是代码:
#Reading the csv file
corpus1<-read.csv("C:/Users/harspath/Downloads/Personal/RData.csv", header = TRUE)
good_data<- as.list(corpus1)
#Defining Libraries
library (HMM)
require(hmm.discnp)
#Defining states i.e. End State and symbols i.e. the observations
states=c("Buying", "Not Buying")
symbols=c("ID", "Device ID","DeviceOSVector","MobileBrandVector","BrowserVector","SearchValueVector","TimeOnPage","NoOfCicks","NoOfScrolls","PageLoadTime","TaskComplete")
hmm1 <- initHMM ( states, symbols,startProbs=NULL,transProbs=NULL, emissionProbs=NULL)
tpm<-hmm1$transProbs
rho<-hmm1$emissionProbs
my_hmm = hmm(good_data,par0 = list(tpm,rho),stationary=FALSE)
# transition probability matrix
my_hmm$tpm
# output probabilities
my_hmm$Rho
# initial probabilities (don't know/know)
my_hmm$ispd
答案 0 :(得分:0)
这应该解决它:
my_hmm = hmm(good_data,par0 = list(tpm,Rho = rho),stationary=FALSE)
OR:
Rho<-hmm1$emissionProbs
my_hmm = hmm(good_data,par0 = list(tpm,Rho),stationary=FALSE)
这里的推理是par0
参数需要一个命名列表。名称应为tpm
和Rho
(大写首字母)。但是,您已编写rho
(小写)。来自?hmm
:
PAR0
模型参数的可选(命名)起始值列表,其中包含组件tpm(转移概率矩阵)和Rho。在给定隐马尔可夫链的状态的情况下,矩阵Rho指定观察对yval中的每个值采取的概率。 Rho的列对应于状态,行对应于yval的值。
在错误中,您可以看到hmm
具有以下代码:
if (nval != nrow(par0$Rho)) *something*
所以,它试图查看par0$Rho
。由于您没有那个,因此会收到错误argument is of length zero
。