avenged behöver inte mer hjälp
avenged 134 – Fd. Medlem
Postad: 7 feb 2020 13:25

Simulering av tärningskast i r.

Jag skall simulera de relativa frekvenserna av fyror samt treor från ett tärningskast. Jag skall utföra försöket 7 gånger och varje realisering innehåller 100000 kast. Nu är min fråga hur jag skall gå tillväga för att upprepa följande kod sju gånger samt få fram olika värden på relf_treor samt relf_fyror för varje försök. Antar att jag skall använda mig av någon funktion? 

Lindehaven 820 – Lärare
Postad: 7 feb 2020 13:58

Jag har inte programmerat i R men läste på TutorialsPoint.

for(i in 1:7) {
    # din kod som repeteras 7 gånger
}

avenged 134 – Fd. Medlem
Postad: 7 feb 2020 16:54
Lindehaven skrev:

Jag har inte programmerat i R men läste på TutorialsPoint.

for(i in 1:7) {
    # din kod som repeteras 7 gånger
}

Testade att köra följande med det funkade inte..

for(i in 1:7) {
  x1 <- floor(6*runif(100000,0,1)+1) # 1.3 Analys av försöket kasta en tärning skall köra den här koden sju gånger
y1 <- x1==3
z2 <- x1==4
relf_treor <- cumsum(y1)/seq(1,100000)
relf_fyror <- cumsum(z2)/seq(1,100000)
mean(relf_fyror)
mean(relf_treor)
plot(relf_treor)
lines(relf_fyror, col="red")
diff_tre_fyr <- relf_fyror - relf_treor
plot(diff_tre_fyr)
}

Lindehaven 820 – Lärare
Postad: 7 feb 2020 17:06

Jag svarade endast på din fråga om hur man upprepar kod i R. Kan tyvärr inte hjälpa dig med felsökningen, men noterar att du beräknar och plottar i varje iteration vilket kanske inte ger förväntat resultat? 

Adama 1 – Fd. Medlem
Postad: 19 feb 2020 12:35

Löste du detta problem? jag sitter nämligen med samma problem.

Lindehaven 820 – Lärare
Postad: 20 feb 2020 16:52 Redigerad: 20 feb 2020 16:54

Har spenderat en timme på att sätta mig in i R och skrivit ett program för att lösa detta problem. Som jag tidigare misstänkte så bör man inte plotta resultatet i varje iteration i loopen. Funktionerna list(), mean() och c() är hjälpfulla.

Publicerar just nu enbart kommentarer och viss kod som du kan arbeta vidare med.

# Initiera lista för treor med list()
# Initiera lista för fyror med list()
# Initiera tom lista för relativ frekvens för treor med list()
# Initiera tom lista för relativ frekvens för fyror med list()
# Gör flera försök med for()
for(i in 1:7)
{
    # Kasta tärningen ett flertal gånger med runif()
    x <- floor(6*runif(100000, 0, 1) + 1)
    # Beräkna antal utfall för treor med ==
    # Beräkna medelvärdet av treors relativa frekvens med mean()
    # Lägg till medelvärdet i listan för relativ frekvens för treor med c()
    # Beräkna antal utfall för fyror med ==
    # Beräkna medelvärdet av fyrors relativa frekvens med mean()
    # Lägg till medelvärdet i listan för relativ frekvens för fyror med c()
}
# Placera två diagram bredvid varandra
par(mfrow = c(1, 2))
# Plotta utfallens relativa frekvens för de olika försöken
plot(lista för treor, listan för relativ frekvens för treor, xlab='Treor', ylab='Relativ frekvens')
plot(lista för fyror, listan för relativ frekvens för fyror, xlab='Fyror', ylab='Relativ frekvens')

avenged 134 – Fd. Medlem
Postad: 23 feb 2020 15:29
Lindehaven skrev:

Har spenderat en timme på att sätta mig in i R och skrivit ett program för att lösa detta problem. Som jag tidigare misstänkte så bör man inte plotta resultatet i varje iteration i loopen. Funktionerna list(), mean() och c() är hjälpfulla.

Publicerar just nu enbart kommentarer och viss kod som du kan arbeta vidare med.

# Initiera lista för treor med list()
# Initiera lista för fyror med list()
# Initiera tom lista för relativ frekvens för treor med list()
# Initiera tom lista för relativ frekvens för fyror med list()
# Gör flera försök med for()
for(i in 1:7)
{
    # Kasta tärningen ett flertal gånger med runif()
    x <- floor(6*runif(100000, 0, 1) + 1)
    # Beräkna antal utfall för treor med ==
    # Beräkna medelvärdet av treors relativa frekvens med mean()
    # Lägg till medelvärdet i listan för relativ frekvens för treor med c()
    # Beräkna antal utfall för fyror med ==
    # Beräkna medelvärdet av fyrors relativa frekvens med mean()
    # Lägg till medelvärdet i listan för relativ frekvens för fyror med c()
}
# Placera två diagram bredvid varandra
par(mfrow = c(1, 2))
# Plotta utfallens relativa frekvens för de olika försöken
plot(lista för treor, listan för relativ frekvens för treor, xlab='Treor', ylab='Relativ frekvens')
plot(lista för fyror, listan för relativ frekvens för fyror, xlab='Fyror', ylab='Relativ frekvens')

Tack så mycket för hjälpen och sorry för sent svar men lyckades fixa det själv på ett annat sätt. Mvh 

Svara
Close