2017-10-28 6 views
0

Ich versuche, Histogramme einer Markov-Kette (MC) -Simulation und tatsächliche Daten zu vergleichen. Ich habe versucht, die Simulation mit dem folgenden Code auszuführen, den ich nicht vollständig verstehe. R scheint den Code akzeptiert zu haben, aber ich weiß nicht, wie ich die Histogramme ausführen soll ... Für den Hintergrund sind die Daten Erweiterungen und Kontraktionen der US-Wirtschaft (hier zu finden: http://www.nber.org/cycles.html). Ich habe die Übergangsmatrix zwischen diesen beiden Zuständen als "P" eingerichtet, wobei die Spalten zu 1 addiert werden und die Übergänge zwischen den Zuständen als "Übergänge/Monate in jedem Zustand" berechnet werden. Ich denke, „n“ hier auf die Übergänge entspricht, aber ich könnte falsch sein ...Histogramm der MC-Simulation (R)

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 
} 
+0

Suchen Sie für 'hist' Funktion? – akond

+0

Diese Funktion funktioniert nicht für mich, aber ich kann es falsch verwenden. Ich möchte nur die Simulation als Histogramm darstellen lassen ... – Christian

Antwort

0

Wie in den Kommentaren angegeben Sie hist() verwenden:

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) 

ich nicht überprüfen Sie Ihre Simulation. Aber es erzeugt nur Werte von 1 oder 2

könnten Sie auch ggplot() verwenden:

# 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

OK, der Schlüsselschritt scheint die Simulation vor dem Plotten zu speichern. Ich wusste nicht, dass ich das tun musste. Danke für Ihre Hilfe. – Christian

+0

Gern geschehen. Wäre schön, wenn Sie meine Antwort als Lösung Ihres Problems markieren könnten. Danke! – FAMG

+0

Hoppla! neu zu Stackoverflow ... Antwort angenommen! – Christian