Gadjah Mada University
TUGAS BESAR182880049149000PENGANTAR BIG DATADosen Pengampu :Drs. Danardono, M.P.H, P.hD.Vemmie Nastiti Lestari, M.Sc.Disusun Oleh:Eugenia Sekar R14/366184/PA/16224Imron Amirulloh13/346930/PA/15154Muhammad Suryo S14/368723/PA/16308Zaky Nur K14/364248/PA/15966PROGRAM STUDI STATISTIKADEPARTEMEN MATEMATIKAFAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAMUNIVERSITAS GADJAH MADAYOGYAKARTA2017BAB IPENDAHULUANLatar BelakangPada era ini, big data atau data science bukan merupakan istilah yang asing bagi banyak orang. Berbagai analisis sudah menggunakan analisis big data, karena cepatnya terhimpun data-data dari berbagai aspek. Sudah banyak bidang kehidupan menggunakan analisis big data untuk menghasilkan kesimpulan atau pengambilan keputusan yang lebih akurat. Salah satunya dalam bidang sepakbola.Bidang sepakbola juga merupakan salah satu sumber big data karena era sekarang pengambilan data dalam bidang sepakbola sudah menjadi hal yang wajar. Banyak sekali data yang dapat diperoleh dari sepakbola, contohnya data statistik dari suatu pertandingan sepakbola. Jumlah pertandingan dalam satu musim untuk satu liga saja sudah banyak, apalagi jika dikumpulkan untuk beberapa liga dan dalam beberapa musim, itu sudah bisa menghasilkan big data. Contoh lain selain data pertandingan yaitu data statistik pemain, data statistik secara tim/klub, dan lain-lain.Zaman ini, ilmu statistika juga dapat digunakan dalam bidang persepekbolaan. Misalkan seorang talent scout ketika ingin merekomendasikan seorang pemain kepada pelatih, dia bisa menggunakan data performa dari pemain yang ingin direkomendasikan. Dia bisa menjelaskan kepada klub bola tersebut mengapa klub bola itu layak mengeluarkan jutaan euro untuk pemain tersebut. Atau misalnya seorang pelatih ingin menyusun starting line-up untuk sebuah laga. Pelatih klub tersebut bisa melihat data dari tim lawan. Dia bisa mengambil keputusan siapa saja yang dapat menjadi pemain starting line-up, yang mungkin bisa mengeksploitasi kelemahan tim lawan. Atau kapan saat yang tepat seorang pemain bisa menyerang tim lawan.Analisis big data juga bisa dilakukan untuk membantu memutuskan kapan klub tersebut menjual seorang pemain. Apakah klub tersebut masih bisa mempertahankan pemain tersebut, atau lebih baik menjual pada musim transfer terdekat untuk mendapat nilai jual yang tinggi. Selain untuk membuat keputusan penting dalam klub tersebut, analisis big data juga bisa dilakukan untuk media olahraga untuk memprediksikan performa sebuah tim. Atau perusahaan judi bola untuk mengetahui siapa yang akan memenangkan sebuah laga dengan memperhatikan statistika pertandingan.Pada laporan ini akan dilakukan pengolahan big data untuk data sepakbola liga Eropa. Fokus tema dalam analisis ini yaitu tentang transfer pemain sepakbola. Analisis akan dilakukan menggunakan visualisasi beserta dengan interpretasinya.TujuanTujuan dalam pengambilan topik ini antara lain:Mengolah data sepakbola menjadi informasi yang berguna untuk pengambilan sebuah keputusanMembuat visualisasi informasiManfaatMengetahui transfer yang terjadi dalam sepakbola Liga EropaMengetahui banyaknya transfer suatu klub sepak bola dalam visual yang lebih mudah dipahamiBAB IIPEMBAHASANDeskripsi DataData yang dipakai dalam analisis ini merupakan data sepak bola dari 11 liga utama di Eropa yang dikumpulkan dari tahun 2008 sampai tahun 2016. Lebih dari 25000 pertandingan diambil datanya, dan juga lebih dari 10000 pemain sepak bola dengan data statistiknya. Sumber asli data ini dikumpulkan dari beberapa sumber, yaitu : data ini terdiri dari 8 tabel, yaitu :sqlite_sequence: tabel yang berisi nama dan id dari tabel utamaPlayer_Attributes: tabel statistik kemampuan dari pemain bolaPlayer: tabel nama pemain bola dan biodatanyaMatch: tabel data statistik dari hasil suatu pertandinganLeague: tabel nama liga dan beserta idCountry: tabel nama negara dari liga yang ada dalam database iniTeam: tabel nama tim atau klub sepakbola yang ada dalam databaseTeam_Attributes: tabel statistik kemampuan secara tim atau klub sepakbolaAnalisis DataAnalisis data dari data sepakbola ini akan ditampilkan dalam visualisasi diagram dan tabel beserta interpretasinya. Visualisasi yang akan dilakukan ada tiga macam, yaitu :Diagram chord transfer pemainTabel jumah tranfer pemainDiagram tentang perpindahan pemain dari suatu klub atau tim.Diagram chord transfer pemainChord diagram merupakan diagram yang dapat digunakan untuk visualisasi tentang data yang berhubungan dengan perpindahan, dan akan digunakan untuk visualisasi jumlah transfer pemain sepakbola per liga. Berikut visualisasi dari chord diagram yang didapat :Interpretasi :Diagram di atas merupakan diagram chord dari jumlah transfer pemain per liga dari tahun 2008 sampai 2016. Diagram tersebut menampilkan jumlah transfer dari 11 liga di benua Eropa, dan juga menampilkan jumlah transfer antar liga yang berbeda. Misalnya kita lihat di diagram untuk Spain LIGA BBVA ke Portugal Liga ZON Sagres. Kita cari dari tempat Spain LIGA BBVA yang berwarna hijau, kita cari garis hijau yang menuju ke tempat Portugal Liga ZON Sagres yang berwarna ungu. Maka terlihat bahwa garis hijau berlabuh ke skala pengukuran di tempat Portugal Liga ZON Sagres dengan dua titik. Selisih nilai diantara dua titik tersebut merupakan jumlah transfer yang terjadi dari Spain LIGA BBVA ke Portugal Liga ZON Sagres. Begitu juga dengan transfer liga yang lain, sehingga dihasilkan diagram chord seperti di atas. Banyak transfer dalam liga dan antar liga Bertujuan untuk mengetahui banyaknya transaksi pembelian maupun penjualan pemain antar klub sesama anggota liga atau antara liga yang berbeda sejak tahun 2008. Definisi pembelian, penjualan, atau peminjaman disini adalah menandakan bahwa pemain tersebut sudah tidak lagi bermain untuk klub yang dibela sebelumnya.Disini akan dibahas untuk dua kondisi yang berbeda, pertama yaitu banyaknya aktivitas transfer pemain antar klub pada sesama liga maupun liga yang berbeda.Banyak Transfer Pemain Sejak Tahun 2008 - 2016 (Anggota Klub Sesama Liga atau Liga yang Berbeda)Dari gambar diatas dapat diketahui bahwa total kegiatan transfer pemain (masuk dan keluar) dari satu klub ke klub lain dalam liga yang sama maupun liga yang berbeda pada Serie A Italia musim 2008 hingga 2016 adalah sebesar 1155 transfer pemain, begitu juga untuk lainnya. Total kegiatan transfer antar klub sesama anggota liga atau antara liga yang berbeda sejak tahun 2008 - 2016 tertinggi adalah Serie A Italia sebesar 1155, sedangkan terendah adalah liga Scotland Premier League sebesar 378.Banyak Transfer Pemain Sejak Tahun 2008 – 2016 untuk Anggota Klub Sesama LigaDari gambar diatas dapat diketahui bahwa total kegiatan transfer pemain (masuk dan keluar) pada liga yang sama pada Serie A Italia musim 2008 – 2016 adalah sebesar 856 transfer pemain, begitu juga untuk lainnya. Total kegiatan transfer antar klub sesama anggota liga sejak musim 2008 hingga 2016 tertinggi adalah Serie A Italia sebesar 856 transfer, sedangkan terendah adalah liga Scotland Premier League sebesar 277 transfer.Perbedaan dari kedua tabel diatas terlihat bahwa Liga ZON Sagres Portugal lebih banyak melakukan transfer pemain pada klub yang masih satu liga sebesar 570 transfer dari total transfer 836, dibandingkan dengan Liga BBVA Spanyol sebesar 534 transfer dari total transfer 923 dan Ligue 1 Perancis sebesar 495 transfer dari total transfer 836.Diagram perpindahan pemain suatu klubPada diagram ini akan divisualisasi perpindahan pemain dari suatu klub. Dari diagram ini dapat kita lihat pemain mana yang sudah berpindah dari klub tersebut dan berpindah kemana saja, dan juga bisa melihat pemain mana yang masih bertahan. Output dari diagram perpindahan pemian yang didapat sebagai berikut :Interpretasi : Dari grafik di atas kita mengambil contoh untuk klub Manchester United dari tahun 2012 sampai 2016. Untuk gambar orang menunjukan pemain, nama di dekat gambar orang tersebut menunjukan nama pemain tersebut dan gambar bola menunjukan klub, nama di dekat gambar bola adalah nama klub. Gambar bola yang ada di tengah adalah gambar bola yang merepresentasikan klub Manchester United, apabila ada pemain yang memiliki anak panah selain ke arah gambar bola Manchester United maka pemain tersebut dikatakan melakukan transfer pemain dari klub Manchester United setelah tahun 2012. Kemudian penjelasanya seperti yang sudah dijelaskan sebelumnya gambar pemain ada yang mengarah ke arah gambar bola dengan nama selain Manchester United maka pemain tersebut pindah ke klub tersebut. Misal untuk pemain bernama Patricia Evra, memiliki tanda anak panah ke arah gambar bola dengan nama klub Juventus maka Patricia Evra bermain di Juventus setelah dari klub Manchester United pada tahun setelah tahun 2012. Hal ini bisa dipastikan dari berita bahwa tepatnya dia berpindah bermain di Juventus pada tahun 2014. Kemudian untuk pemain yang memiliki tanda anak panah ke arah bola lebih dari 1, maka pemain tersebut bermain di lebih dari 1 club lain setelah tranfer dari klub Manchester United pada tahun setelah tahun 2012. Misal untuk pemain bernama Anderson, dia memiliki tanda anak panah ke arah gambar bola bernama Fiorentina dan Eintracht Frankfurt. Maka Anderson bermain di klub Fiorentina dan Eintracht Frankfurt setelah transfer dari Manchester United pada tahun setelah tahun 2017. Kemudian untuk nama pemain yang tidak memiliki tanda anak panah ke arah gambar bola selain gambar bola Manchester United maka bisa dikatakan bahwa pemain tersebut tidak berpindah dari club MU setelah tahun 2012 sampai sekarang.BAB IIIKESIMPULANKesimpulan yang didapat dari analisis yang sudah dilakukan adalah :Bidang sepakbola sudah menjadi sumber big data pada era ini, pengolahan big data dengan metode statitika sudah sangat dibutuhkan dalam era ini.Analisis big data untuk data sepakbola Eropa dalam laporan ini fokus pada tema tentang transfer pemain.Analisis dilakukan dengan visualisasi, yaitu dengan diagram chord, tabel dan diagram perpindahan pemain suatu klub.Diagram chord dapat digunakan untuk memvisualisasi jumlah perpindahan pemain dari 11 liga Eropa sekaligus.Diagram perpindahan pemain suatu klub dapat memvisualisasikan sudah bermain dimana saja pemain suatu klub sepakbola dalam rentang yang diinginkan. Kita dapat melihat pemain mana yang masih bertahan dan juga pemain mana yang sudah berpindah.Hasil analisis didapatkan liga dengan transfer terbanyak dari tahun 2008 sampai 2016 yaitu Italy Serie A, baik transfer lokal maupun transfer keluar antar liga yang lain.DAFTAR PUSTAKA data sepakbola 11 liga Eropa tahun 2008-2016Tabel sqlite_sequenceTabel countryTabel leagueTabel teamTabel team_attributesTabel playerTabel player_attributesTabel matchSyntax program analisis data sepakbola liga Eropa#transferlibrary(dplyr)library(purrr)library(tidyr)library(ggplot2)library(broom)library(magrittr)library(plotly)library(RSQLite)library(reshape2)library(visNetwork)library(networkD3)library(jsonlite)library(RColorBrewer)library(gplots)library(knitr)library(DT)library(data.table)library(d3heatmap)library(viridis)library(maps)library(ggmap)library(circlize)rm(list = ls())rsplit <- function(x) { x <- x[!is.na(x[,1]),,drop=FALSE] if(nrow(x)==0) return(NULL) if(ncol(x)==1) return(lapply(x[,1], function(v) list(name=v))) s <- split(x[,-1, drop=FALSE], x[,1]) unname(mapply(function(v,n) {if(!is.null(v)) list(name=n, children=v) else list(name=n)}, lapply(s, rsplit), names(s), SIMPLIFY=FALSE))}# Connect to data base ----------------------------------------------------con <- dbConnect(SQLite(), dbname="database.sqlite")player <- tbl_df(dbGetQuery(con,"SELECT * FROM player"))# player_stats <- tbl_df(dbGetQuery(con,"SELECT * FROM player_stats"))Match <- tbl_df(dbGetQuery(con,"SELECT * FROM Match"))Team <- tbl_df(dbGetQuery(con,"SELECT * FROM Team"))Country <- tbl_df(dbGetQuery(con,"SELECT * FROM Country"))League <- tbl_df(dbGetQuery(con,"SELECT * FROM League"))# select columns player <- select(player,player_api_id, player_name) # use player_api_id as key for joinTeam <- select(Team, team_api_id, team_long_name, team_short_name) # use team_api_id as key for joinCountry <-select(Country, id, name) %>% rename(country_id = id) %>% rename(country_name = name) # use country_id as key for joinLeague <- select(League, country_id, name) %>% rename(league_name = name) # use country_id as key for joinMatch <-select(Match, id, country_id, league_id, season, stage, date, match_api_id, home_team_api_id, away_team_api_id, home_team_goal, away_team_goal, home_player_1, home_player_2, home_player_3, home_player_4, home_player_5, home_player_6, home_player_7, home_player_8, home_player_9, home_player_10, home_player_11, away_player_1, away_player_2, away_player_3, away_player_4, away_player_5, away_player_6, away_player_7, away_player_8, away_player_9, away_player_10, away_player_11, goal, shoton, shotoff, foulcommit, card, cross, corner, possession)### Data structure# names(player)# names(Team)# names(Country)# names(League)# names(Match)# built league table in format data.table because the composite key was easier to create with data.table keycols = c("season", "league_id", "home_team_api_id" )PointsDf <-Match %>% select(1:11) %>% mutate(homePoint = if_else((home_team_goal > away_team_goal),3,if_else((home_team_goal == away_team_goal),1,0))) %>% mutate(awayPoint = if_else((home_team_goal > away_team_goal),0,if_else((home_team_goal == away_team_goal),1,3))) tableHomeDt <- PointsDf %>% group_by(season, league_id, home_team_api_id) %>% summarise(pointsHome = sum(homePoint)) %>% ungroup() %>% data.table keycols = c("season", "league_id", "home_team_api_id" )setkeyv(tableHomeDt,keycols) tableAwayDt <- PointsDf %>% group_by(season, league_id, away_team_api_id) %>% summarise(pointsAway = sum(awayPoint)) %>% ungroup() %>% data.table keycols = c("season", "league_id", "away_team_api_id" )setkeyv(tableAwayDt,keycols) tableHomeAwayDt <- tableHomeDt[tableAwayDt, nomatch=0] %>% mutate(points = pointsHome + pointsAway) %>% group_by(season, league_id) %>% mutate(rank = min_rank(desc(points)))tableLong <- tableHomeAwayDt %>% left_join(League, by = c("league_id" = "country_id")) %>% left_join(Team, by = c("home_team_api_id" = "team_api_id")) %>% ungroup() %>% select(season, league_name, rank, team_long_name, points)# melt match data to generate df with player names in one column ----------matchMelt <-melt(Match,id = c(1:11), measure=c(12:33),na.rm = TRUE, value.name = "player_api_id") %>% mutate(team_api_id=ifelse(grepl("home",variable),home_team_api_id, ifelse(grepl("away",variable),away_team_api_id,NA))) %>% # create team_api_id column based on variable info left_join(Team, by = "team_api_id") %>% left_join(player, by = "player_api_id") %>% # add club to each player left_join(Country, by = "country_id") %>% # add club to each player left_join(League, by = "country_id") %>% # add club to each player separate(season, into=c("saisonStart","saisonEnd"),sep = "/", convert = TRUE) # split saison so it integerTransferDf <-matchMelt %>% select(player_name, team_long_name, team_short_name, saisonStart, saisonEnd, country_name, league_name) %>% group_by(player_name,team_long_name) %>% arrange(saisonStart) %>% summarise(Player = first(player_name), ClubFirst = min(saisonStart),ClubLast = max(saisonEnd), Country = first(country_name), League = first(league_name)) %>% arrange(ClubFirst) %>% mutate(FormerClub = lag(team_long_name)) %>% mutate(CurrentClub = team_long_name) %>% mutate(FormerLeague = lag(League)) %>% mutate(CurrentLeague = League) %>% mutate(FormerCountry = lag(Country)) %>% mutate(CurrentCountry = Country) %>% select(Player, CurrentClub, FormerClub, ClubFirst, ClubLast, CurrentLeague, FormerLeague, CurrentCountry, FormerCountry)# Visnetwork function ----------------------------------------------visNetworkCLubPlayerCountry <- function(TransferDf, Country, transfereSince){edges <- TransferDf %>% filter(CurrentCountry == Country) %>% filter(ClubFirst >= transfereSince) %>% select(c(CurrentClub,Player)) %>% rename(from = CurrentClub) %>% rename(to = Player) %>% sample_frac(0.5, replace = FALSE) %>% ungroup() %>% mutate(arrows = c("from"))edgesMelt <- edges %>% mutate(shape = "") %>% melt(id = "shape", measure = c("to", "from"), value.name = "id")nodesClub <- edgesMelt %>% filter(variable == "from") %>% mutate(group = c("Club"))nodesPlayer <- edgesMelt %>% filter(variable == "to") %>% mutate(group = Player) nodes <- rbind(nodesClub,nodesPlayer) %>% select(c(variable,id, group)) %>% unique() visNetwork(nodes, edges) %>% visOptions(highlightNearest = list(enabled = TRUE, degree =2), nodesIdSelection = TRUE) %>% visEdges(arrows = "from") %>% visInteraction(dragNodes = FALSE, dragView = FALSE, zoomView = FALSE) %>% visInteraction(navigationButtons = TRUE) }# VisNetwork per player -------------------------visNetworkPerClub <- function(matchMelt, Club, Saison){PlayerSelected <- matchMelt %>% filter(saisonStart == Saison) %>% filter(team_long_name == Club) %>% select(player_name) %>% unique()edges <- matchMelt %>% filter(saisonStart>= Saison) %>% filter(player_name %in% PlayerSelected$player_name) %>% select(c(team_long_name,player_name)) %>% rename(from = team_long_name) %>% rename(to = player_name) %>% unique() %>% mutate(arrows = c("from"))edgesMelt <- edges %>% mutate(shape = "") %>% melt(id = "shape", measure = c("to", "from"), value.name = "id")nodesClub <- edgesMelt %>% filter(variable == "from") %>% mutate(group = c("Club"))nodesPlayer <- edgesMelt %>% filter(variable == "to") %>% mutate(group = c("Player")) nodes <- rbind(nodesClub,nodesPlayer) %>% select(c(variable,id, group)) %>% unique() visNetwork(nodes, edges, main = list(text = paste0("Where did the player of ", Club, " play after 2012" ), style = "font-family:Comic Sans MS;color:#ff0000;font-size:15px;text-align:center;")) %>% visGroups( groupname = "Player", color = "lightgreen") %>% visGroups( groupname = "Club", color = "lightblue") %>% visOptions(highlightNearest = list(enabled = TRUE, degree =1), nodesIdSelection = FALSE) %>% visInteraction(dragNodes = FALSE, dragView = FALSE, zoomView = FALSE) %>% visGroups(groupname = "Club", shape = "icon", icon = list(code = "f1e3", size = 75)) %>% visGroups(groupname = "Player", shape = "icon", icon = list(code = "f183", color = "green")) %>% addFontAwesome() %>% visInteraction(navigationButtons = TRUE) }Saison <-2012#Diagram chord 11 liga EropaTransferMatrix <- na.omit(TransferDf) %>% ungroup() %>% group_by(FormerLeague, CurrentLeague) %>% summarise(sub = n()) %>% ungroup() %>% na.omit() %>% mutate_each(funs(factor), FormerLeague:CurrentLeague) %>% acast(FormerLeague ~ CurrentLeague, value.var = "sub") kaggle <- 1if (kaggle == 0) { library(chorddiag)chorddiag(TransferMatrix)} else { chordDiagram(TransferMatrix)circos.clear()}#Tabel jumlah transfer 11 liga Eropana.omit(TransferDf) %>% ungroup() %>% group_by(FormerLeague) %>% summarise(NumberOfTransfers = n()) %>% arrange(desc(NumberOfTransfers)) %>% data.table() %>% datatable( rownames = FALSE, colnames =c("League", "Number of transfers since 2008") ,options = list(dom = 't', autoWidth = TRUE, columnDefs = list(list(width = '250px', targets = c(1)))))na.omit(TransferDf) %>% ungroup() %>% filter_("FormerLeague==CurrentLeague") %>% group_by(FormerLeague) %>% summarise(NumberOfTransfers = n()) %>% arrange(desc(NumberOfTransfers)) %>% data.table() %>% datatable( rownames = FALSE, colnames =c("League", "Number of transfers within league since 2008") ,options = list(dom = 't', autoWidth = TRUE, columnDefs = list(list(width = '250px', targets = c(1)))))#Diagram perpindahan pemain suatu klubClub <- "Manchester United"visNetworkPerClub(matchMelt, Club, Saison) ................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.