Na stronie Economist.com można znaleźć wykres prezentujący wszystkie gole strzelone na wszystkich dotychczasowych mistrzostwach świata. Fajna wizualizacja pokazuje kto, komu, w której minucie, fazie i jaki był ostateczny wynik. Wygląda to mniej więcej tak:
Gole nie są rozłożone równomiernie - są takie minuty w których padło więcej niż 40 goli i takie, w których mniej niż 10. Zatem czy jest to rozkład losowy, czy też jednak piłką rządzi jakaś prawidłowość?
Żeby to sprawić wygenerowałem alternatywne, zupełnie losowe historie mistrzostw świata. Zadane kryteria - ta sama liczba goli, karnych i samobójczych, ale dla uproszczenia usunąłem minuty dodatkowe - wszystko co ponad 45 w pierwszej połowie i 90 w drugiej (również dogrywki). Oczywiście odpowiednio zmniejszyłem liczbę goli.
Generowanie losowych historii i umieszczenie ich na wykresie zrobiłem w R. Poniżej kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | library(ggplot2) library(gridExtra) kolory <- c("lightblue", "red", "yellow", "green") #wektor kolorow, zeby wykresy mialy rozne kolory kolory1 <- c("#FF0000", "pink", "#000000") kolory2 <- c("#FF0000", "yellow", "#000000") kolory3 <- c("#FF0000", "lightgreen", "#000000") kolory4 <- c("#FF0000", "lightblue", "#000000") kolory <- list(kolory1, kolory2, kolory3, kolory4) for(wykres in 1:4){ #petla robi 4 wykresy x <- sample(1:90, 2259, replace=TRUE) # losowy szereg z zakesu 1-90 o dlugosci 2259 x1 <- as.data.frame(table(x)) #przerobienie wektora szeregu na tabele z liczebnosciami i df x1$x <- strtoi(x1$x) #zamiana char na integer, bo w table pierwsza zmienna to char. z tego beda pobrane dane do petli x2 <- as.data.frame(x) ##przerobienie wektora szeregu na df x2 <- as.data.frame(x2[order(x),]) #sortowanie - do tego beda dodane sekwencje z petli. znowu as.data.frame, bo traci sie colnames(x2) <- "minuty" #nadanie nazwy kolumny, bo jakas dziwna powstaje calosciowy <- vector() #inicjacja wektora do petli #petla tworz9ca wektory z sekwencjami od 1 do dlugosci rownej liczebnosci kazdej z minut #nastjpnie sumowanie tych wektorow do jednego, ktory bedzie dodany jako kolumna do x2 for (wiersz in 1:90){ minuta <- x1[wiersz, "x"] ilosc <- x1[wiersz, "Freq"] kolejny <- seq(1,ilosc) calosciowy <- c(calosciowy,kolejny)} x2$liczbagoli <- calosciowy karny <- rep("karny", 174) samob <- rep("samob", 38) normalny <- rep("normalny", 2047) rodzajgola <- c(karny,samob,normalny) numerki <- seq(1,2259) numerki <- sample(numerki) #losowe ulozenie typgola <- as.data.frame(rodzajgola) typgola$numerki <- numerki typgola <- as.data.frame(typgola[order(numerki),]) x2$typgola <- typgola$rodzajgola assign(paste("p",wykres,sep=""), ggplot(x2, aes(minuty, liczbagoli, color=typgola)) + geom_point(size = 1.5) + theme(panel.border = element_blank(), panel.grid.major = element_line(size = 0.3, linetype = 'solid', colour = "#444444"), panel.grid.minor = element_blank(), panel.background = element_rect(fill="white")) + scale_color_manual(values=kolory4,guide=FALSE)) } grid.arrange(p1, p2, p3, p4) |
A tak wyglądają wyniki, bardzo podobnie do tych rzeczywistych. również są minuty z 30-40 golami i więcej, jak i takie poniżej 20.
Wniosek - nie ma żadnych prawidłowości gole padają i będą padać od 1 do ostatniej minuty i nie mamy jak tego przewidzieć. Przynajmniej jeśli chodzi o całą historię i wszystkie reprezentacje. Na pojedynczych przypadkach może to wyglądać inaczej, o czym niedługo we wpisie na FB @ZabawaDanymi.
Brak komentarzy:
Prześlij komentarz