首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MC模拟直方图

MC模拟直方图
EN

Stack Overflow用户
提问于 2017-10-28 17:15:34
回答 1查看 198关注 0票数 0

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

代码语言:javascript
复制
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
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-28 19:39:28

如注释中所述,您可以使用hist()

代码语言:javascript
复制
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()

代码语言:javascript
复制
# 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46992405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档