【问题标题】:Histogram of MC simulationMC模拟直方图
【发布时间】:2017-10-28 17:15:34
【问题描述】:

我正在尝试比较马尔可夫链 (MC) 模拟的直方图和实际数据。我尝试使用下面的代码运行模拟,但我并不完全理解。 R 似乎已经接受了代码,但我不知道如何运行直方图...作为背景,数据是美国经济的扩张和收缩(可在此处找到:http://www.nber.org/cycles.html)。我已经将这两个状态之间的转换矩阵设置为P,其中列总和为 1,并且状态之间的转换计算为“每个状态的转换/月”。我认为n 对应于这里的转换,但我可能是错的......

P <- matrix(c(0.74961, 0.57291, 0.25039, 0.42709),2,2)
P <- t(P)
colSums(P)
n <- 33

MC.sim <- function(n,P) {
    sim<-c()
    m <- ncol(P)    
    sim[1] <- sample(1:m,1) 
    for(i in 2:n){
        newstate <- sample(1:m,1,prob=P[,sim[i-1]])
        sim[i] <- newstate
    }
    sim
}

【问题讨论】:

  • 你在寻找hist函数吗?
  • 该功能对我不起作用,但我可能使用不正确。我只想看到模拟绘制为直方图...

标签: r bayesian markov-chains economics


【解决方案1】:

如 cmets 中所述,您可以使用 hist():

P <- matrix(c(0.74961, 0.57291, 0.25039, 0.42709),2,2)
P <- t(P)
colSums(P)
n <- 33

MC.sim <- function(n,P) {
  sim<-c()
  m <- ncol(P)    
  sim[1] <- sample(1:m,1) 
  for(i in 2:n){
    newstate <- sample(1:m,1,prob=P[,sim[i-1]])
    sim[i] <- newstate
  }
  return(sim)
}

# Save results of simulation
temp <- MC.sim(n,P)

#plot basic histogram
hist(temp)

我没有检查你的模拟。但它只生成 1 或 2 的值。

你也可以使用ggplot():

# Save results of simulation
temp <- MC.sim(n,P)

# Make data frame for ggplot
t <- as.data.frame(temp)
names(t) <- "Sim"

p <- ggplot(t, aes(x = Sim))
p + geom_histogram(binwidth = 0.5)

【讨论】:

  • 好的,关键步骤似乎是在绘图之前保存模拟。没有意识到我必须这样做。感谢您的帮助。
  • 不客气。如果您可以将我的答案标记为解决您的问题,那就太好了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 2016-02-22
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多