R Ziegenproblem

Aus Metheval - Tipps+Tools - Wiki
Wechseln zu: Navigation, Suche

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"))