Created
September 30, 2016 13:41
-
-
Save CSJCampbell/9b50cec48e1ad97b24f98c3684e69bc0 to your computer and use it in GitHub Desktop.
caster scores
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
########################################################### | |
# | |
# Balancing Casters | |
# csjcampbell | |
# 2016-09-30 | |
# | |
# Copyright 2016 CSJCampbell | |
# This document may be reproduced in whole or part provided | |
# that this notice is retained. | |
# | |
########################################################### | |
setwd("C:/Users/ccampbell/Documents/Misc/R") | |
# import data | |
wtc16 <- read.csv("wtc16.csv", stringsAsFactors = FALSE) | |
library(dplyr) | |
library(tidyr) | |
# wide to skinny format | |
wtc161 <- rbind( | |
transmute(wtc16, | |
game_id, round, TP, year, player = player1, | |
teamname = team1, list = list1, team = 1), | |
transmute(wtc16, | |
game_id, round, TP, year, player = player2, | |
teamname = team2, list = list2, team = 2)) | |
# generate country | |
wtc161$country <- gsub(pattern = "Team ", replacement = "", | |
x = wtc161$teamname) | |
wtc161$country <- gsub(pattern = "Epic ", replacement = "", | |
x = wtc161$country) | |
wtc161$country <- gsub(pattern = "Prime ", replacement = "", | |
x = wtc161$country) | |
wtc161$country <- gsub(pattern = "Northern ", replacement = "Northern.", | |
x = wtc161$country) | |
wtc161$country <- gsub(pattern = "United ", replacement = "United.", | |
x = wtc161$country) | |
wtc161$country <- gsub(pattern = "Middle ", replacement = "Middle.", | |
x = wtc161$country) | |
wtc161$country <- gsub(pattern = "Czech ", replacement = "Czech.", | |
x = wtc161$country) | |
wtc161$country <- sapply(strsplit(x = wtc161$country, split = " "), function(x) x[1]) | |
wtc161$country[wtc161$country == "United.States"] <- "USA" | |
unique(wtc161$country) | |
# write.csv(wtc161, file = "wtc16-skinny.csv", | |
# quote = FALSE, row.names = FALSE) | |
########################################################### | |
checkPlayers <- FALSE | |
if (checkPlayers) { | |
# number of games | |
tabng <- summarise(group_by(wtc161, player), n()) | |
head(tabng) | |
sum(tabng[[2]] != 6) | |
# number of lists | |
tabnl <- summarise(group_by(wtc161, player), nls = n_distinct(list)) | |
head(tabnl) | |
sum(tabnl[[2]] != 2) | |
oddids <- filter(tabnl, nls > 2) | |
for (i in seq_len(nrow(oddids))) { | |
sub <- table(filter(wtc161, player == oddids$player[i])$list) | |
sub <- names(sort(sub, decreasing = TRUE)) | |
cat("[*]", paste0(oddids$player[i], "'s"), sub[3], "could be", sub[2], "or", sub[1], "\n") | |
} | |
} | |
########################################################### | |
# register players with ratings | |
load("rating2015a.RData") | |
# unrated | |
nationalityRating <- read.csv(file = "nationalityRating.csv", | |
stringsAsFactors = FALSE) | |
unRegisteredPlayers <- c( | |
"Alexis Vallalta", | |
# "Daniel Maierl", # "JustDan" | |
"Fraser Phillips", | |
"Kirill Ustilovskiy", | |
# Laszlo Vuray", # "Mr.Wu" | |
# "Martin Florian", # "Raghnath" | |
"Stepan Slavik") | |
for (iPlayer in seq_along(unRegisteredPlayers)) { | |
if (!unRegisteredPlayers[iPlayer] %in% rating2015$ratings$Player) { | |
c1 <- filter(wtc161, player == unRegisteredPlayers[iPlayer])[1, "country"] | |
c2 <- filter(nationalityRating, country == c1) | |
if (nrow(c2) != 1) { stop("unregistered country, or dual nationality") } | |
rating2015$ratings <- rbind(rating2015$ratings, | |
list("Player" = unRegisteredPlayers[iPlayer], | |
"Rating" = c2$Rating, | |
"Deviation" = 0, "Games" = 0, "Win" = 0, "Draw" = 0, "Loss" = 0, | |
"Lag" = 0, "country" = c1)) | |
} | |
} | |
# fix rating names or dataset | |
rating2015$ratings$Player <- gsub(pattern = " \\(.+\\)$", | |
replacement = "", x = rating2015$ratings$Player) | |
rating2015$ratings$Player[rating2015$ratings$Player == "Adam Szyma?ski"] <- "Adam Szymanski" | |
rating2015$ratings$Player[rating2015$ratings$Player == "André Valentim"] <- "Andre Valentim" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Andreas Rizopoulos - Skorne"] <- "Andreas Rizopoulos" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Andy Beat"] <- "Andy Beattie" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Andy Garrard (Trolls)"] <- "Andy Garrard" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Andy McBirnie (Cryx)"] <- "Andy McBirnie" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Asbjørn Willarsrud"] <- "Asbjorn Willarsrud" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Benjamin Fützi"] <- "Ben Fuzi" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Christopher Müller"] <- "Christopher Muller" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Gábor Wolf"] <- "Gabor Wolf" | |
rating2015$ratings <- rating2015$ratings[-grep("GERARD", rating2015$ratings$Player),] | |
rating2015$ratings$Player[rating2015$ratings$Player == "Gerard O' Brien"] <- "Gerard O'Brien" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Giacomo MÄDER"] <- "Giaccomo Mader" | |
rating2015$ratings$Player[rating2015$ratings$Player == "GUA"] <- "Gua" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Jarkko Vähämaa"] <- "Jarkko Vahamaa" | |
rating2015$ratings$Player[rating2015$ratings$Player == "JAVIER SÁNCHEZ"] <- "Javier Sanchez" | |
rating2015$ratings$Player[grep("^Jir", x = rating2015$ratings$Player)] <- "Jiri Kares" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Josef Skládanka"] <- "Josef Skladanka" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Kévin Aouragh"] <- "Kevin Aourragh" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Kévin Maeder"] <- "Kevin Maeder" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Konstantinos Oikonomopoulos - Khador"] <- "Konstantinos Oikonomopoulos" | |
rating2015$ratings$Player[rating2015$ratings$Player == "LEI"] <- "Lei" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Loránd Sövényházi"] <- "Lorand Sovenyhazi" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Lorenz GREDIG"] <- "Lorenz Gredig" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Luas Leite"] <- "Luis Leite" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Lukasz Kruszewski"] <- "Lukasz Kruszenski" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Maksimilijan Galos"] <- "Maksimiljan Galos" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Marc Forsmark Nielsen"] <- "Marc Nielsen" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Marc TRAUTMANN"] <- "Marc Trautmann" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Marios Oikonomopoulos - Legion of Everblight"] <- "Marios Oikonomopoulos" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Martin Andre Røhme"] <- "Martin Andre Rohme" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Martin Hornácek"] <- "Martin Hornacek" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Mike Dunl"] <- "Mike Dunlop" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Marco BERNASCONI"] <- "Marco Bernasconi" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Pascal KRÜTTLI"] <- "Pascal Kruttli" | |
rating2015$ratings[grep("Pierre Arnauld de Seze", x = rating2015$ratings$Player), c("Games", "Win", "Loss")] <- | |
rating2015$ratings[grep("Pierre Arnauld de Seze", x = rating2015$ratings$Player), c("Games", "Win", "Loss")] + | |
rating2015$ratings[grep("Pierre Arnauld De Seze", x = rating2015$ratings$Player), c("Games", "Win", "Loss")] | |
rating2015$ratings <- rating2015$ratings[-grep("Pierre Arnauld De Seze", x = rating2015$ratings$Player), ] | |
rating2015$ratings$Player[rating2015$ratings$Player == "Rafa? Anusiak"] <- "Rafal Anusiak" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Russell Harmann"] <- "Russell Harman" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Samu Järvinen"] <- "Samu Jarvinen" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Simon Sørensen"] <- "Simon Sorensen" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Spyros Karakitsos Cryx"] <- "Spyros Karakitsos" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Tero Särkijärvi"] <- "Tero Sarkijarvi" | |
rating2015$ratings$Player[grep("Tom.. Sedlon", x = rating2015$ratings$Player)] <- "Tomas Sedlon" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Tomek Tutaj"] <- "Tomasz Tutaj" | |
rating2015$ratings$Player[grep("Toma. Kovacic", x = rating2015$ratings$Player)] <- "Tomaz Kovacic" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Torbjörn Hansson"] <- "Torbjorn Hansson" | |
rating2015$ratings$Player[rating2015$ratings$Player == "WEI JIN 'PLANESWALKER'"] <- "Wei Jin" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Wiktor Har??lak"] <- "Wiktor Harezlak" | |
rating2015$ratings$Player[rating2015$ratings$Player == "YANG SONG"] <- "Yang Song" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Zoltán Gaál"] <- "Zoltan Gaal" | |
rating2015$ratings$Player[rating2015$ratings$Player == "Michael Llegems"] <- "Michael Ilegems" | |
wtc161$player <- gsub(pattern = "( )+$", replacement = "", | |
x = wtc161$player) | |
wtc161$player[wtc161$player == " Moritz Schwank"] <- "Moritz Schwank" | |
wtc161$player[wtc161$player == "Benjamin"] <- "Benjamin Kierkegaard" | |
wtc161$player[wtc161$player == "Daniel Porter"] <- "Dan Porter" | |
wtc161$player[wtc161$player == "Dmitri Petchonkin"] <- "Dmitri Pechonkin" | |
wtc161$player[wtc161$player == "Dom Leedham"] <- "Dominic Leedham" | |
wtc161$player[wtc161$player == "Dominik Beyeler"] <- "Dominic Beyeler" | |
wtc161$player[wtc161$player == "Dustin Mcwhirter"] <- "Dustin McWhirter" | |
wtc161$player[wtc161$player == "Dylan Simmer"] <- "Dyland Simmer" | |
wtc161$player[wtc161$player == "Jocke Rapp"] <- "Joakim Rapp" | |
wtc161$player[wtc161$player == "Julien Dupoirieux Gamin"] <- "Julien Dupoirieux" | |
wtc161$player[wtc161$player == "Leif Henning Bohli"] <- "Leif Bohli" | |
wtc161$player[wtc161$player == "Loránd Sövényházi"] <- "Lorand Sovenyhazi" | |
wtc161$player[wtc161$player == "Mikkel"] <- "Mikkel Ernst" | |
wtc161$player[wtc161$player == "Pascal Chruttli"] <- "Pascal Kruttli" | |
wtc161$player[wtc161$player == "Pat Dunford"] <- "Patrick Dunford" | |
wtc161$player[wtc161$player == "Pete Croft"] <- "Peter Croft" | |
wtc161$player[wtc161$player == "Pierre Arnauld de Seze Connetable"] <- "Pierre Arnauld de Seze" | |
wtc161$player[wtc161$player == "Simon"] <- "Simon Sorensen" | |
wtc161$player[wtc161$player == "Zoltán Gaál"] <- "Zoltan Gaal" | |
wtc161$player[wtc161$player == "john helzer"] <- "John Helz" | |
wtc161$player[wtc161$player == "jan"] <- "Jan D'Souza" | |
wtc161$player[wtc161$player == "michael ilegems"] <- "Michael Ilegems" | |
wtc161$player[wtc161$player == "nathan bosa"] <- "Nathan Bosa" | |
# check names | |
i = 10 | |
uniPlayers <- sort(unique(wtc161$player)) | |
playersNotInRating <- uniPlayers[!uniPlayers %in% rating2015$ratings$Player] | |
sort(grep(pattern = "^N", | |
x = rating2015$ratings$Player, value = TRUE)) | |
# playersNotInRating | |
pp16r <- grep(pattern = paste0("^", LETTERS[i]), | |
x = rating2015$ratings$Player, value = TRUE) | |
pp16d <- grep(pattern = paste0("^", LETTERS[i]), | |
x = playersNotInRating, value = TRUE) | |
nm <- matrix(NA, nrow = max(length(pp16r), length(pp16d)), ncol = 3) | |
nm[seq_along(pp16r), 1] <- sort(pp16r) | |
nm[seq_along(pp16d), 2] <- sort(pp16d) | |
rownames(nm)[seq_along(pp16r)] <- sort(pp16r) | |
nm[rating2015$ratings$Player[rating2015$ratings$Player %in% pp16r], 3] <- rating2015$ratings$country[rating2015$ratings$Player %in% pp16r] | |
rownames(nm) <- NULL | |
all(is.na(nm[, 2])) | |
nm | |
#save(rating2015, file = "rating2015-reg.RData") | |
#load(file = "rating2015-reg.RData") | |
########################################################### | |
# data from list lock | |
library(data.table) | |
players16 <- fread(input = "players2016a.txt", | |
sep = ";", header = TRUE, stringsAsFactors = FALSE) | |
players16 <- as.data.frame(players16) | |
head(players16) | |
players16$List <- gsub(pattern = "( )+$", replacement = "", x = players16$List) | |
nc1 <- nchar(players16$List) | |
players16$list1 <- paste(substr(x = players16$List, start = 1, stop = nc1 - 1), | |
substr(x = players16$List, start = nc1, stop = nc1)) | |
rating2015$ratings <- rating2015$ratings[-grep(pattern = "eRich Hochauer", | |
x = rating2015$ratings$Player),] | |
grep(pattern = "S.ren", | |
#x = wtc161$player, | |
x = rating2015$ratings$Player, | |
value = TRUE) | |
players16$Player[players16$Player == "Russell Harmann"] <- "Russell Harman" | |
players16$Player[players16$Player == "DCM"] <- "Alexander Grob" | |
players16$Player[players16$Player == "JustDan"] <- "Daniel Maierl" | |
players16$Player[players16$Player == "Mr.Wu"] <- "Laszlo Vuray" | |
players16$Player[players16$Player == "Raghnath"] <- "Martin Florian" | |
players16$Player[players16$Player == "Snot"] <- "Daniel Pawelka" | |
players16$Player[players16$Player == "eRich Hochauer"] <- "Erich Hochauer" | |
players16$Player[players16$Player == "Martin Hornácek"] <- "Martin Hornacek" | |
#players16$Player[players16$Player == "Josh Richter"] <- | |
players16$Player[players16$Player == "GUA"] <- "Gua" | |
players16$Player[players16$Player == "LEI"] <- "Lei" | |
players16$Player[players16$Player == "WEI JIN 'PLANESWALKER'"] <- "Wei Jin" | |
players16$Player[players16$Player == "YANG SONG (CAPTAIN)"] <- "Yang Song" | |
players16$Player[players16$Player == "Chen Ge (Gary)"] <- "Chen Ge" | |
players16$Player[players16$Player == "Guanbo Liu (Jack)"] <- "Guanbo Liu" | |
players16$Player[players16$Player == "He Jiang (Joey)"] <- "He Jiang" | |
players16$Player[players16$Player == "(C) Daniel Bogdanoski"] <- "Daniel Bogdanoski" | |
players16$Player[grep("^Jir", x = players16$Player)] <- "Jiri Kares" | |
players16$Player[players16$Player == "Josef Skládanka"] <- "Josef Skladanka" | |
players16$Player[grep(".tep.n Slav.k", players16$Player)] <- "Stepan Slavik" | |
players16$Player[grep("Tom.. Sedlon", x = players16$Player)] <- "Tomas Sedlon" | |
players16$Player[players16$Player == "Marc Forsmark Nielsen"] <- "Marc Nielsen" | |
players16$Player[players16$Player == "Simon Sørensen"] <- "Simon Sorensen" | |
players16$Player[players16$Player == "Søren"] <- "Soren" | |
players16$Player[players16$Player == "Andy Garrard (Trolls)"] <- "Andy Garrard" | |
players16$Player[players16$Player == "Andy McBirnie (Cryx)"] <- "Andy McBirnie" | |
players16$Player[players16$Player == "Chris Murdoch (Mercenaries, Captain)"] <- "Chris Murdoch" | |
players16$Player[players16$Player == "Samu Järvinen"] <- "Samu Jarvinen" | |
players16$Player[players16$Player == "Jarkko Vähämaa"] <- "Jarkko Vahamaa" | |
players16$Player[players16$Player == "Tero Särkijärvi"] <- "Tero Sarkijarvi" | |
players16$Player[players16$Player == "Kévin Aouragh"] <- "Kevin Aourragh" | |
players16$Player[players16$Player == "Kévin Maeder"] <- "Kevin Maeder" | |
players16$Player[players16$Player == "Benjamin Fützi"] <- "Ben Fuzi" | |
players16$Player[players16$Player == "Dominik de Cassan: Axis+Iron Mother"] <- "Dominik de Cassan" | |
players16$Player[players16$Player == "Christopher Müller"] <- "Christopher Muller" | |
players16$Player[players16$Player == "Andreas Rizopoulos - Skorne"] <- "Andreas Rizopoulos" | |
players16$Player[players16$Player == "Konstantinos Oikonomopoulos - Khador"] <- "Konstantinos Oikonomopoulos" | |
players16$Player[players16$Player == "Marios Oikonomopoulos - Legion of Everblight"] <- "Marios Oikonomopoulos" | |
players16$Player[players16$Player == "Spyros Karakitsos Cryx"] <- "Spyros Karakitsos" | |
players16$Player[players16$Player == "Gábor Wolf"] <- "Gabor Wolf" | |
players16$Player[players16$Player == "Loránd Sövényházi"] <- "Lorand Sovenyhazi" | |
players16$Player[players16$Player == "Zoltán Gaál"] <- "Zoltan Gaal" | |
#players16$Player[players16$Player == "Andy Powell"] <- | |
players16$Player[players16$Player == "Andy Beat"] <- "Andy Beattie" | |
players16$Player[grep(pattern = "GERARD", x = players16$Player)] <- "Gerard O'Brien" | |
players16$Player[players16$Player == "Asbjørn Willarsrud"] <- "Asbjorn Willarsrud" | |
players16$Player[players16$Player == "Martin Andre Røhme"] <- "Martin Andre Rohme" | |
players16$Player[players16$Player == "Rafa? Anusiak"] <- "Rafal Anusiak" | |
players16$Player[players16$Player == "Wiktor Har??lak"] <- "Wiktor Harezlak" | |
players16$Player[players16$Player == "Adam Szyma?ski"] <- "Adam Szymanski" | |
players16$Player[players16$Player == "Tomek Tutaj"] <- "Tomasz Tutaj" | |
players16$Player[players16$Player == "André Valentim"] <- "Andre Valentim" | |
players16$Player[players16$Player == "Luas Leite"] <- "Luis Leite" | |
#players16$Player[players16$Player == "Salvador Caetano"] <- | |
#players16$Player[players16$Player == "Yaroslav Karmannyy"] <- | |
players16$Player[players16$Player == "Maksimilijan Galos"] <- "Maksimiljan Galos" | |
players16$Player[grep("Toma. Kovacic", x = players16$Player)] <- "Tomaz Kovacic" | |
players16$Player[players16$Player == "JAVIER SÁNCHEZ"] <- "Javier Sanchez" | |
players16$Player[players16$Player == "Torbjörn Hansson"] <- "Torbjorn Hansson" | |
players16$Player[players16$Player == "Lorenz GREDIG"] <- "Lorenz Gredig" | |
players16$Player[players16$Player == "Pascal KRÜTTLI"] <- "Pascal Kruttli" | |
players16$Player[players16$Player == "Giacomo MÄDER"] <- "Giaccomo Mader" | |
players16$Player[players16$Player == "Marc TRAUTMANN"] <- "Marc Trautmann" | |
players16$Player[players16$Player == "Marco BERNASCONI"] <- "Marco Bernasconi" | |
players16$Player[players16$Player == "Michael Llegems"] <- "Michael Ilegems" | |
players16$Player[players16$Player == "Mike Dunl"] <- "Mike Dunlop" | |
########################################################### | |
library(dplyr) | |
# wtc161 <- read.csv(file = "troop-creator/WTCParse/wtc16-skinny.csv", | |
# stringsAsFactors = FALSE) | |
# only replacements left | |
notGamePlayerInListPlayer <- unique(wtc161$player[!wtc161$player %in% players16$Player]) | |
notGamePlayerInListPlayer | |
notListPlayerInGamePlayer <- unique(players16$Player[!players16$Player %in% wtc161$player]) | |
notListPlayerInGamePlayer | |
head(players16) | |
########################################################### | |
# register casters | |
wtc161a <- left_join(x = wtc161, | |
y = slice(group_by(select(players16, player = Player, faction), player), 1)) | |
head(wtc161a) | |
players16$list1[players16$list1 == "Auror a"] <- "Aurora 1" | |
players16$list1[players16$list1 == "Axi s"] <- "Axis 1" | |
players16$list1[players16$list1 == "Barnabas 1"] <- "Barnabas 1" | |
players16$list1[players16$list1 == "Calandr a"] <- "Calandra 1" | |
players16$list1[players16$list1 == "Gunnbjor n"] <- "Gunnbjorn 1" | |
players16$list1[players16$list1 == "Iron Mother Directri x"] <- "Iron Mother 1" | |
players16$list1[players16$list1 == "Lucan t"] <- "Lucant 1" | |
players16$list1[players16$list1 == "Ragno r"] <- "Ragnor 1" | |
players16$list1[players16$list1 == "Saeryn2 & Rhyas 2"] <- "Saeryn 2 & Rhyas 2" | |
players16$list1[players16$list1 == "Witch Cove n"] <- "Witch coven 1" | |
players16$list1[players16$list1 == "Hoarluk 1"] <- "Doomshaper 1" | |
players16$list1[players16$list1 == "Hoarluk 2"] <- "Doomshaper 2" | |
players16$list1[players16$list1 == "Hoarluk 3"] <- "Doomshaper 3" | |
players16$list1[players16$list1 == "Brisbane 1"] <- "Siege 1" | |
players16$list1[players16$list1 == "Bartolo 1"] <- "Montador 1" | |
players16$list1[players16$list1 == "Jarl 1"] <- "Skuld 1" | |
players16$list1[players16$list1 == "Kara Sloan 1"] <- "Sloan 1" | |
players16$list1 <- gsub(pattern = "^( )+", replacement = "", x = players16$list1) | |
wtc161a$list <- gsub(pattern = "^( )+", replacement = "", x = wtc161a$list) | |
wtc161a$list <- gsub(pattern = "( )+$", replacement = "", x = wtc161a$list) | |
wtc161a$list[wtc161a$list == "Directrix 1"] <- "Iron Mother 1" | |
wtc161a$list[wtc161a$list == "vHarkevich 1"] <- "Harkevich 1" | |
lists <- sort(unique(wtc161a$list)) | |
lists[!lists %in% sort(unique(players16$list1))] | |
wtc161a$valid <- apply(cbind(wtc161a$list, wtc161a$player), | |
MARGIN = 1, | |
FUN = function(x) x[1] %in% filter(players16, Player == x[2])[["list1"]]) | |
sum(!wtc161a$valid) | |
source("printBbcodeTable.R") | |
printBbcodeTable(dat = | |
wtc161a[!wtc161a$valid & !wtc161a$player %in% notGamePlayerInListPlayer, -11]) | |
write.csv(wtc161a, file = "wtc16-skinny3.csv", | |
quote = FALSE, row.names = FALSE) | |
wtc161a[!wtc161a$valid & !wtc161a$player %in% notGamePlayerInListPlayer, "list"] <- NA | |
########################################################### | |
# analyse games | |
games16 <- arrange(summarize(group_by(wtc161a, list), | |
N = n()), desc(N)) | |
toplists16 <- games16$list[1:16] | |
wtc161b <- left_join(x = wtc161a, | |
y = rating2015$ratings, by = c(player = "Player")) | |
dim(wtc161a) | |
# [1] 1920 11 | |
dim(wtc161b) | |
# [1] 1920 19 | |
library(PlayerRatings) | |
library(tidyr) | |
library(ggplot2) | |
head(wtc161b) | |
# sum(wtc161b$country.x != wtc161b$country.y, na.rm = TRUE) | |
# | |
# wtc161b[!is.na(wtc161b$country.y) & | |
# wtc161b$country.x != wtc161b$country.y & | |
# wtc161b$country.y != "United.Nations", c("player", "country.x", "country.y")] | |
out <- as.data.frame(matrix(NA, nrow = 16*5, ncol = 4, | |
dimnames = list(NULL, c("Warcaster", "PredictedWins", "ProportionWins", "N")))) | |
out$Warcaster <- rep(toplists16, each = 5) | |
for (iList in 1:16) { | |
# pick records for caster x by game_id | |
sub <- select(filter(wtc161b, list == toplists16[iList]), game_id) | |
sub <- select(filter(wtc161b, game_id %in% sub$game_id), | |
game_id:team, Rating) | |
sub <- arrange(sub, game_id, team) | |
# reshape data for prediction tool | |
sub <- transmute(sub, game_id, round, TP, year, | |
player1 = player, list1 = list, team1 = teamname, rating1 = Rating, | |
player2 = player, list2 = list, team2 = teamname, rating2 = Rating, | |
team) | |
sub$player2 <- c(sub$player2[-1], NA) | |
sub$list2 <- c(sub$list2[-1], NA) | |
sub$team2 <- c(sub$team2[-1], NA) | |
sub$rating2 <- c(sub$rating2[-1], NA) | |
sub <- na.omit(select(filter(sub, | |
team == 1), -team)) | |
# probability of player 1 winning | |
sub$probp1win <- predict(object = rating2015, | |
newdat = select(sub, round, player1, player2), | |
tng = -1, gamma = 0) | |
# probability of player with caster x winning | |
sub$probpxwin <- sub$probp1win | |
sub$probpxwin[sub$list1 != toplists16[iList]] <- (1 - sub$probp1win)[sub$list1 != toplists16[iList]] | |
sub$TPX <- sub$TP | |
sub$TPX[sub$list1 != toplists16[iList]] <- (1 - sub$TP)[sub$list1 != toplists16[iList]] | |
# summarize | |
# split into bins | |
qtl <- quantile(sub$probpxwin, probs = (0:5)/5) | |
sub$pxwinbin <- cut(sub$probpxwin, | |
breaks = qtl, | |
labels = diff(qtl)*0.5 + qtl[-6], | |
include.lowest = TRUE) | |
# mean is proportion of 0 and 1 | |
res <- summarise(group_by(sub, pxwinbin), ProportionWins = mean(TPX)) | |
res <- transmute(res, | |
PredictedWins = as.numeric(as.character(pxwinbin)), ProportionWins) | |
# output to single data object | |
out[out$Warcaster == toplists16[iList], | |
c("PredictedWins", "ProportionWins", "N")] <- cbind(res, N = nrow(sub)) | |
} | |
head(out) | |
out$Warcaster <- factor(out$Warcaster, levels = toplists16, | |
labels = paste0(toplists16, " (", out$N[(1:16)*5], ")")) | |
# plot(res, asp = 1, ylab = "Proportion Won", xlab = "Expected") | |
# abline(a = 0, b = 1) | |
png("CasterWins_vs_Predicted.png", | |
height = 800, width = 800, res = 110) | |
ggplot(data = out, | |
aes(x = PredictedWins, | |
y = ProportionWins)) + | |
geom_abline(slope = 1, intercept = 0) + | |
coord_fixed() + | |
geom_point() + | |
xlab("Predicted Wins") + | |
ylab("Proportion Wins") + | |
facet_wrap(~Warcaster) | |
dev.off() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment