2017-05-02 4 views
0

MSwM 패키지의 일부 기능을 이해하려고 노력 중이므로 필자가 작성한 문서에서 사용할 수 있습니다. 필자가 제공 한 예제를 재현하면서 얻지 못한 두 가지 사항이 있습니다. 첫 번째 것은 패키지에 사용 된 요약 방법과 관련이 있습니다. 을 호출 할 때 [email protected]@logLikel을 호출 할 때 logLikel이 양수이고 음수 인 이유는 무엇입니까? LogLik (logLikel이 아닌), AIC 및 BIC를 요약 오브젝트에서 직접 가져올 수 있습니까?Markov Switching MSwM 패키지의 AIC 및 BIC

두 번째 것은 AIC 및 BIC 정보 기준과 관련이 있습니다. 패키지에 대한 문서에 따르면, 우리가 AIC 함수를 사용해야하며, AIC 또는 BIC를 얻기 위해 k에 적절한 값을 선택해야합니다. 따라서 AIC의 경우 k는 2이고 BIC의 경우는 log(length(y))이어야합니다. 여기서 y는 단 변량 시계열입니다. 문제는이 절차를 수행 할 때 AIC 및 BIC의 값이 summary에있는 값과 다르다는 것입니다. 왜 그런가요? 나는 무엇이 없는가 ?? 내가 AIC와 BIC 함수를 사용하거나하여 계산하려고하면,

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 

그러나 :

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) 

결과의 첫 번째 라인은 다음과 같습니다

내가 사용하고 코드입니다 손 다른 결과를 얻는다 :

#Akaike 
AIC(mod.mswm,k=2) #using function. Result:641.0736 
8*2-((-1)*2*[email protected]@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*[email protected]@logLikel) #by hand. Result: 670.7039 

대단히 감사합니다!

답변

0

동일한 문제가 발생했습니다. 왜 개발자가 약간 다른 수식을 선택하는지 설명 할 수는 없지만 사용 된 것을 보여 줄 수는 있습니다.

# Extracted from package --------------------------------------------------- 
object <- mod.mswm 
(swi <- [email protected][-length([email protected])]) 
(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([email protected]$model))) 
#[1] 693.479 

이 스 니펫은 인터넷의 소스 코드에서 발견되었습니다. 보시다시피 결과는 같습니다.

'#':의 = 수 ...

AIC = 2 * 대수 근사 + 2 * (. #parameters를 포함 정수) * (#regimes

그래서 I는 다음 식을 추출)

BIC = 2 + 2 * 대수 근사 * (#parameters를 포함. 정수) * (#regimes) * LN (#observations) 안부와

.

+0

답변 해 주셔서 대단히 감사합니다, Alexander! – Fer