0

我想知道如何利用depmixs4軟件包對R在數據集上運行HMM。我將使用哪些函數,以便對測試數據集進行分類? 我有一個訓練數據文件,一個標籤數據文件和一個測試數據。訓練數據由4620行組成。每行有1079個值。這些值是83個窗口,每個窗口有13個值,所以換句話說,1079是由83個狀態組成的數據,每個類別有13個觀測值。每個具有1079個值的行都是口語詞彙,因此它有4620個話語。但總的來說,數據只有7個不同的單詞。每個這些不同的單詞有660個不同的話語,因此有4620行單詞。 所以我們有文字(0-6) 標籤文件是一個列表,其中每行標記爲0-6,對應於他們是什麼字。例如,行300標記爲2,行450標記爲6,520標記爲0.
測試文件包含大約5000行,結構與培訓數據完全相同,除了沒有與其關聯的標籤。 我想使用HMM來使用訓練數據來分類測試數據。 我將如何使用depmixs4輸出測試數據的分類? 我看:在R depmixs4中的HMM文本識別

depmix(response, data=NULL, nstates, transition=~1, family=gaussian(), 
     prior=~1, initdata=NULL, respstart=NULL, trstart=NULL, instart=NULL, 
     ntimes=NULL,...) 

,但我不知道該怎麼迴應指或任何其它參數。

回答

2

下面是一個快速的,但不完整的測試,讓你開始,如果只是爲了讓你熟悉基本的輪廓。請注意,這是一個玩具的例子,它只是爲了隱藏HMM設計/分析的表面。例如,depmixs4軟件包的小插件提供了相當多的上下文和示例。同時,這裏有一個簡短的介紹。

假設您想調查工業生產是否提供了有關經濟衰退的線索。首先,讓我們加載相關的包,然後從聖路易斯聯儲下載數據:

library(quantmod) 
library(depmixS4) 
library(TTR) 

fred.tickers <-c("INDPRO") 
getSymbols(fred.tickers,src="FRED") 

接下來,將數據轉換滾動1年百分比變化,以儘量減少數據中的噪聲和數據轉換成數據。在depmixs4分析幀格式:

indpro.1yr <-na.omit(ROC(INDPRO,12)) 
indpro.1yr.df <-data.frame(indpro.1yr) 

現在,讓我們運行一個簡單的HMM模型,然後選擇剛剛2個狀態 - 增長和收縮。請注意,我們只用工業生產來搜索信號:

model <- depmix(response=INDPRO ~ 1, 
       family = gaussian(), 
       nstates = 2, 
       data = indpro.1yr.df , 
       transition=~1) 

現在讓我們適應生成的模型,生成後的狀態 進行分析,和經濟衰退的估計概率。另外,我們會將數據與xts格式的日期綁定,以便於查看/分析。 (注意使用set.seed的(1),它被用來創建一個可複製的初始值,推出造型。)

set.seed(1) 
model.fit <- fit(model, verbose = FALSE) 
model.prob <- posterior(model.fit) 
prob.rec <-model.prob[,2] 
prob.rec.dates <-xts(prob.rec,as.Date(index(indpro.1yr)), 
    order.by=as.Date(index(indpro.1yr))) 

最後,讓我們回顧和理想的繪製數據:

head(prob.rec.dates) 
       [,1] 
1920-01-01 1.0000000 
1920-02-01 1.0000000 
1920-03-01 1.0000000 
1920-04-01 0.9991880 
1920-05-01 0.9999549 
1920-06-01 0.9739622 

高值(> 0.80 ??)表明/表明經濟處於衰退/收縮狀態。

再一次,一個非常非常基本的介紹,可能太基本了。希望能幫助到你。