【发布时间】:2017-05-02 03:26:24
【问题描述】:
我正在尝试了解 MSwM 包的一些功能,以便可以在我正在撰写的论文中使用它。在复制作者提供的示例时,我没有得到两件事。
第一个与包中使用的汇总方法有关:为什么我调用mod.mswm@Fit@logLikel时logLikel是正数而调用summary(mod.mswm)时是负数?是否可以直接从摘要对象中获取 logLik(而不是 logLikel)、AIC 和 BIC?
第二个与 AIC 和 BIC 信息标准有关。包的文档说,要获得这些值,我们应该使用 AIC 函数,为 k 选择适当的值来获得 AIC 或 BIC。所以对于 AIC,k 应该是 2,对于 BIC,我认为它应该是 log(length(y)),其中 y 是我的单变量时间序列。问题是,当我执行此过程时,我得到的 AIC 和 BIC 值与summary 中的值不同。这是为什么?我错过了什么??
这是我正在使用的代码:
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
非常感谢您!
【问题讨论】: