source("eigenvalueRanking.R") source("formattedOutput.R") db_games <- readRDS("db_data.Rda") # Seasons s201516_start <- as.Date("2015-08-24") s201516_end <- as.Date("2016-05-14") s201617_start <- as.Date("2016-08-26") s201617_end <- as.Date("2017-05-20") s201718_start <- as.Date("2017-08-18") s201718_end <- as.Date("2018-05-12") s201819_start <- as.Date("2018-08-24") s201829_1half <- as.Date("2018-12-23") s201819_end <- as.Date("2019-05-18") s201920_start <- as.Date("2019-08-16") s201920_1half <- as.Date("2019-12-22") db_201516 <- subset(db_games, Date >= s201516_start & Date <= s201516_end & League == "Bundesliga") db_201617 <- subset(db_games, Date >= s201617_start & Date <= s201617_end & League == "Bundesliga") db_201718 <- subset(db_games, Date >= s201718_start & Date <= s201718_end & League == "Bundesliga") db_201819 <- subset(db_games, Date >= s201819_start & Date <= s201819_end & League == "Bundesliga") db_201819_1half <- subset(db_games, Date >= s201819_start & Date <= s201829_1half & League == "Bundesliga") db_201920_1half <- subset(db_games, Date >= s201920_start & Date <= s201920_1half & League == "Bundesliga") games <- db_201819 games <- na.omit(games) games <- games[order(games$Date),] teams <- as.character(unique(games$HomeTeam)) n <- length(teams) r_init <- 0.1 # BTL Maximum-Likelihood Aml <- generateA(games, 3) ak <- rowSums(Aml) # row sum for a_k r <- rep(r_init, n) # result vector names(r) <- colnames(Aml) # settings h <- 0.001 treshold <- 10^(-10) maxIter <- 20000 dr <- function(r) { ddr <- ak/r for(k in 1:n) { ddr[k] <- ddr[k] - sum((Aml[,k]+Aml[k,])/(r+r[k])) } return(ddr) } i <- 0 repeat # euler Verfahren { i <- i + 1 r_old <- r r <- r_old + h * dr(r_old) print(paste0("Iterations: ", i, " Error: ", norm(t(r-r_old),'F'))) if (norm(t(r-r_old),'F') < treshold) # Abbruchbedingung! Konvergenz! { print(paste0("Found solution after ", i, " iterations.")) break } if (i > maxIter) { print(paste0("Can't find solution within maxIter = ", maxIter, " iterations.")) break } } printStandings(r) print(sum(r^2))