gpt4 book ai didi

r - R 中的 MCMC 变点模型

转载 作者:行者123 更新时间:2023-12-05 06:13:42 25 4
gpt4 key购买 nike

我想运行 MCMC 线性高斯多变点模型来检测连续值的时间序列向量的变点。

在这样做时,我正在考虑使用 MCMRegressChange 函数,但我在这里有几个问题:

(1) 如何获得这些模型的对数边际似然?

(2) MMCRegressChange函数和MCMCresidualBreakAnalysis函数有什么区别?

R 脚本如下所示。如果您能帮我解决这个问题,我将非常高兴。

library(MCMCpack)
set.seed(1234)
n <- 100
x1 <- runif(n, min = 0, max = 1)
x2 <- runif(n, min = 1, max = 2)
X <- c(x1,x2)

B0 <- 0.1
sigma.mu=sd(X)
sigma.var=var(X)

model0 <- MCMCregressChange(X ~ 1, m=0, b0=mean(X), mcmc=100, burnin=100, verbose = 1000,
sigma.mu=sigma.mu, sigma.var=sigma.var, marginal.likelihood="Chib95")
model1 <- MCMCregressChange(X ~ 1, m=1, b0=mean(X), mcmc=100, burnin=100, verbose = 1000,
sigma.mu=sigma.mu, sigma.var=sigma.var, marginal.likelihood="Chib95")
model2 <- MCMCregressChange(X ~ 1, m=2, b0=mean(X), mcmc=100, burnin=100, verbose = 1000,
sigma.mu=sigma.mu, sigma.var=sigma.var, marginal.likelihood="Chib95")

print(BayesFactor(model0, model1, model2))

plotState(model0)
plotChangepoint(model0)

plotState(model1)
plotChangepoint(model1)

plotState(model2)
plotChangepoint(model2)


最佳答案

the documentation 的“”小节|描述 MCMRegressChange 返回的内容,说明模型的对数边际似然存储在属性 logmarglike 中。因此,它可以像

attr(model1, "logmarglike")

运行代码中的行时也会报告这些属性值:

print(BayesFactor(model0, model1, model2))

至于模型的差异,MCMCresidualBreakAnalysisMCMCRegressChange 的特例,即当X 为单变量时。事实上,MMCRegressChange 的代码会检查 X 中的列数是否为一,如果是,则重新格式化输入参数以调用 MCMCresidualBreakAnalysis。由于也没有特定于后者的其他参数,因此了解 MCMCregressChange 更为通用,所有人都应该需要使用。

MCMCresidualBreakAnalysis 描述中的注释对此进行了强化:

"The code is written mainly for an internal use in testpanelSubjectBreak."

也就是说,虽然它是一个导出函数,但它主要是一个特定用例产生的便利函数。

关于r - R 中的 MCMC 变点模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63192278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com