if(nval!= nrow(par0 $ Rho))中的错误停止(粘贴("行尺寸为\" Rho \"不等于\ n",:参数长度)零

时间:2016-04-05 19:44:54

标签: r

我正在使用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

1 个答案:

答案 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参数需要一个命名列表。名称应为tpmRho(大写首字母)。但是,您已编写rho(小写)。来自?hmm

  

PAR0

     

模型参数的可选(命名)起始值列表,其中包含组件tpm(转移概率矩阵)和Rho。在给定隐马尔可夫链的状态的情况下,矩阵Rho指定观察对yval中的每个值采取的概率。 Rho的列对应于状态,行对应于yval的值。

在错误中,您可以看到hmm具有以下代码:

if (nval != nrow(par0$Rho)) *something*

所以,它试图查看par0$Rho。由于您没有那个,因此会收到错误argument is of length zero