R Ziegenproblem
Das Ziegenproblem
Worum es hier geht beschreibt z.B. der Artikel "Ziegenproblem" in der Wikipedia.
Der R-Code
Der folgende Code ermittelt empirisch Gewinnwahrscheinlichkeiten für die beiden Strategien "Bei zuerst gewählter Tür bleiben" und "Tür wechseln" und erzeugt ein Balkendiagramm, das die Wahrscheinlichkeiten graphisch anzeigt.
## Erstellt im Rahmen des Methodenlehreseminars SoSe 2007 ## von Jonas Müller, Clemens Lechner & Moritz Niehaus gewonnen.bleib <- NULL gewonnen.wechsel <- NULL durch <- 1000 # Anzahl der Simulationsdurchgänge/Samples for (i in 1:durch){ tueren <- 1:3 # Vektor Türen gewinn <- sample(1:3, size=1) # Ziehung der Gewinntür tipp <- sample(1:3, size=1) # Tipp weg <- tueren[tueren!=gewinn & tueren!=tipp] # Tür die wegfällt if (length(weg) > 1) weg <- sample(weg, size=1) # falls mehr als 1 Tür wegfallen könnte wird zufällig eine gewählt rest <- tueren[tueren!=weg] # verbleibende Türen tipp.wechsel <- rest[rest!=tipp] # Tür, wenn Tipp-Tür gewechselt wird gewonnen.bleib <- append(gewonnen.bleib, if(gewinn==tipp) 1 else 0) # Vergleich Tipp/Gewinn, wenn gleich, dann hinzufügen von 1 zu Vektor "gewonnen" gewonnen.wechsel <- append(gewonnen.wechsel, if(gewinn==tipp.wechsel) 1 else 0) # das gleiche mit tipp.wechsel, dh Wechselbedingung } wahrsch.bleib <- sum(gewonnen.bleib)/durch #Gewinnwahrscheinlichkeit beim Beibehalten der Wahl wahrsch.wechsel <- sum(gewonnen.wechsel)/durch #Gewinnwahrscheinlichkeit beim Wechseln der Wahl ## Balkendiagramm mit Gewinnwahrscheinlichkeiten barplot(height=c(wahrsch.bleib, wahrsch.wechsel), names.arg=c("Bleiben", "Wechsel"), ylim=c(0,1), xlab="Gewaehlte Strategie", ylab="Gewinnwahrscheinlichkeit", main="Ziegenproblem", col=c("red", "green")) ## Beschriftung der Balken mit Gewinnwahrscheinlichkeit text(x=c(0.7, 1.9), y=c(wahrsch.bleib+.05, wahrsch.wechsel+.05), label=c(wahrsch.bleib, wahrsch.wechsel)) ## Anzeige der Simulationsdurchgänge text(x=1.3, y=.96, label=paste("Ergebnis aus ",durch," Durchgaengen"))