library(readxl)
library(ggplot2)
library(plotly)

wb = read_excel("owcomp.xls")

wb <- wb[!is.na(wb$id),]

names(wb)<- c("id","date","wl","newsr","perf","sr_var","hero","comment","gold","silver","bronze")
wb <- wb[ , 1:6]

wb$perf <- factor(wb$perf , levels = c("very low","low","middle","good","very good"))

Introduction

I started to keep track of my SR variation the 2017-07-20 for each of my competitive matches (Im mid-plat and I think I belong there). I now have 51 entries. The full data set can be found at the end of this document. Each time, I wrote my new SR and my opinion about my performance during that game. Did I play well? Was I usefull to the team? This subjective performance has 5 levels:

This document will be updated each day I play. Other info about my profile can be found here: https://masteroverwatch.com/profile/pc/us/B3nZ3n-2463

Charts

SR Evolution per game

The first chart shows a basic variation of my SR for each game.

 p <- ggplot(wb)+aes(x = id,y=newsr) + geom_line() + xlab("game number")+ ylab("SR") + ggtitle("SR variation") +  geom_point(aes(colour=perf)) + scale_color_manual(values=c("#FF4848", "#FF9797", "#fff68f", "#CAFEB8", "#66CC99"))
 ggplotly(p,width=800,height=600)

SR Gained on WINS

The following chart show for each win, how many SR were gained regarding of my subjective performance.

xlabs <- paste0(levels(wb[wb$wl=="W",]$perf),"\n(N=",table(wb[wb$wl=="W",]$perf),")")

p <- ggplot(wb[wb$wl=="W",])+ aes(x=perf,y=sr_var)+geom_boxplot(aes(fill=perf))+ xlab("Subjective Performance") + ylab("SR Gained") + ggtitle("WIN") + scale_fill_manual(values=c("#FF4848", "#FF9797", "#fff68f", "#CAFEB8", "#66CC99")) +scale_x_discrete(labels=xlabs)


 ggplotly(p,width=800,height=600)

SR lost on LOSS

The following chart show for each loss, how many SR were gained regarding of my subjective performance.

xlabs <- paste0(levels(wb[wb$wl=="L",]$perf),"\n(N=",table(wb[wb$wl=="L",]$perf),")")
 
p <- ggplot(wb[wb$wl=="L",])+ aes(x=perf,y=sr_var)+geom_boxplot(aes(fill=perf))+ xlab("Subjective Performance") + ylab("SR Lost") + ggtitle("LOSS")  + scale_fill_manual(values=c("#FF4848", "#FF9797", "#fff68f", "#CAFEB8", "#66CC99")) +scale_x_discrete(labels=xlabs)

 ggplotly(p,width=800,height=600)

Analysis

We can clearly see that there is a correlation between my performance and the number of SR I gained. The correlation in lost matches is less obvious. The max SR I gained was 30 , and the max SR I lost was -29. My average is -1.7647059 for 23 matches won and 28 matches lost.

It looks like that when I performed well, in average, I gained more SR. The opposite is also true, when I performed poorly and lost, I lost more SR than when I did well (even if it’s less clear than for the wins).

So based on that we can see that the max SR I can win from a match is 30 (if you perform really well), and the minimum I can loose is -18. So if I wanted to climb from 2000SR to 2500 (from low gold to low plat), if I performed perfectly each match (unlikely) and if my winrate was still 50% (as the game tries to maintain): I would gain 30 for each win, and loose -18SR for each loss. So I would win, on average 6SR. It would take me AT LEAST 20.8333333 matches to get to plat, wich seems fair for me.

Future work

It would be nice to check if there is a correlation between this SR gain and loss and all the accessible metrics (accuration, k/d ratio, damage done etc..) for each hero.

Raw data

Here is the raw data used in this document.

wb