R 马尔可夫交换MSwM包中的AIC和BIC

R 马尔可夫交换MSwM包中的AIC和BIC,r,modeling,markov,R,Modeling,Markov,我试图了解MSwM包的一些功能,以便在我正在撰写的论文中使用它。在复制作者提供的示例时,有两件事我没有理解。 第一个与包中使用的摘要方法有关:为什么我调用mod时logLikel是正数。mswm@Fit@logLikel和一个负数,当我调用summary(mod.mswm)?是否可以直接从summary对象获取logLik(而不是logLikel)、AIC和BIC 第二个问题与AIC和BIC信息标准有关。该软件包的文档说明,为了获得这些值,我们应该使用AIC函数,为k选择合适的值来获得AIC或B

我试图了解MSwM包的一些功能,以便在我正在撰写的论文中使用它。在复制作者提供的示例时,有两件事我没有理解。 第一个与包中使用的摘要方法有关:为什么我调用
mod时
logLikel
是正数。mswm@Fit@logLikel
和一个负数,当我调用
summary(mod.mswm)
?是否可以直接从summary对象获取logLik(而不是logLikel)、AIC和BIC

第二个问题与AIC和BIC信息标准有关。该软件包的文档说明,为了获得这些值,我们应该使用AIC函数,为k选择合适的值来获得AIC或BIC。对于AIC,k应该是2,对于BIC,我认为应该是
log(长度(y))
,其中y是我的单变量时间序列。问题是,当我执行此过程时,我得到的AIC和BIC值与
摘要中的值不同。为什么呢?我错过了什么

这是我正在使用的代码:

library(MSwM)
data(example)
mod=lm(y~x,example)
mod.mswm=msmFit(mod,k=2,p=1,sw=c(T,T,T,T),control=list(parallel=F))
summary(mod.mswm)
结果的第一行是:

Markov Switching Model

Call: msmFit(object = mod, k = 2, sw = c(T, T, T, T), p = 1, control = list(parallel = F))

       AIC     BIC    logLik
  637.0736 693.479 -312.5368
但是,如果我尝试使用函数或手动计算AIC和BIC,我会得到不同的结果:

#Akaike
AIC(mod.mswm,k=2) #using function. Result:641.0736
8*2-((-1)*2*mod.mswm@Fit@logLikel)#by hand. Result:641.0736

#Bayesian
AIC(mod.mswm,k=log(length(example$y))) #using function. Result: 670.7039
8*log(length(example$y))-((-1)*2*mod.mswm@Fit@logLikel) #by hand. Result: 670.7039

提前非常感谢

我遇到了同样的问题。我无法解释为什么开发人员选择了一个稍微不同的公式,但我可以告诉你,使用了哪一个

# Extracted from package ---------------------------------------------------
object <- mod.mswm
(swi   <- object@switch[-length(object@switch)])
(np    <- object["k"]*sum(swi)+sum(!swi))

(AIC=2*object["Fit"]["logLikel"]+2*np)
#[1] 637.0736
(BIC=2*object["Fit"]["logLikel"]+2*np*log(nrow(object@model$model)))
#[1] 693.479
#从包中提取---------------------------------------------------

非常感谢你的回答,亚历山大!