这称为标签切换。
其中交换状态标签的模型(例如,将状态1重新标记为状态2,将状态2重新标记为状态1)具有相同的可能性,因此都是有效的最大似然解。
您可以尝试通过以下方式“解决”此问题:
- 设置参数的初始值(尽管不能保证,但EM算法可能会收敛到特定的解决方案!)
或者通过设置顺序约束(例如,强制状态1的平均值大于状态2的平均值)。这样的约束可以提供给depmixS4
中的fit方法(请参见?fit中的示例);
- 最后一个选择是切换适合的
depmixS4
对象的标签。
这是一个重新标记我以前使用过的合适的depmix
对象的功能(虽然测试不好!)
label_switch <- function(mod,labels) {
# labels is vector,first element is new integer label for original state integer 1,second is new integer label for original state integer 2,etc.
if(!is(mod,"depmix") || !is(mod,"depmix.fitted")) stop("this function is for depmix models")
n_states <- mod@nstates
if(length(labels) != n_states || length(unique(labels)) != n_states || !(all(labels) %in% 1:n_states)) {
stop("labels needs to be a vector of unique integers between 1 and",n_states)
}
inv_labels <- sapply(1:n_states,function(x) which(labels == x))
tmp <- mod
# relabel prior
ppars <- getpars(mod@prior)
fpars <- getpars(mod@prior,which="fixed")
out_pars <- as.numeric(t(matrix(ppars,nrow=length(ppars)/n_states,byrow = TRUE)[,inv_labels]))
out_fixed <- as.logical(t(matrix(fpars,nrow=length(fpars)/n_states,inv_labels]))
if(!tmp@prior@family$link=="identity") tmp@prior@family$base <- labels[tmp@prior@family$base]
# relabel transition
for(i in 1:n_states) {
ppars <- getpars(mod@transition[[inv_labels[i]]])
fpars <- getpars(mod@transition[[inv_labels[i]]],which="fixed")
out_pars <- c(out_pars,as.numeric(t(matrix(ppars,inv_labels])))
out_fixed <- c(out_fixed,as.logical(t(matrix(fpars,inv_labels])))
tmp@transition[[i]] <- mod@transition[[inv_labels[i]]]
if(!tmp@transition[[i]]@family$link=="identity") tmp@transition[[i]]@family$base <- labels[tmp@transition[[i]]@family$base]
#out_pars <- c(out_pars,getpars(mod@transition[[inv_labels[i]]]))
}
# relabel response
for(i in 1:n_states) {
out_pars <- c(out_pars,unlist(lapply(mod@response[[inv_labels[i]]],getpars)))
out_fixed <- c(out_fixed,getpars,which="fixed")))
}
tmp <- setpars(tmp,out_fixed,which="fixed")
tmp <- setpars(tmp,out_pars)
if(is(tmp,"depmix.fitted")) tmp@posterior <- viterbi(tmp)
return(tmp)
}
本文链接:https://www.f2er.com/3167280.html