According to the 2013-2014 HSBC World Sevens Series Statistical Report, international rugby sevens matches averaged 5.2 to 5.4 tries per game from 2011-2014 (1189 matches). Kicking was decisive in less than %15 of those matches. The team with more tries won ~85% of all matches during that span.
Given the importance of try scoring in international rugby sevens, this report examines the affect of scoring first on match outcome.
We use scoring data from the 2014-2015 World Sevens Series to answer the following questions:
The raw data and supporting functions used in this report are available from Github.
library(dplyr)
library(devtools)
source_url("https://raw.githubusercontent.com/jliberma/rugby7s/master/func/match_func.R")
source_url("https://raw.githubusercontent.com/jliberma/rugby7s/master/func/poss_func.R")
The raw data used in this report were compiled by notational analysis of the first five tournaments of the 2014-2015 HSBC World Sevens Series. Scoring data were verified at http://www.worldrugby.org/sevens-series/.
This function prints the probability that the front runner (team that scores the first try) will win the match by tournament round.
# Calculate win % by round for first try scorers
first_try_summary <- function() {
ft <- c()
for (i in c("all", "Pool", "Shield", "Bowl", "Plate", "Cup")) {
poss <- poss_filter(round=i)
score <- match_score(poss)
win <- match_winner(score)
trys <- first_try(poss)
goal <- first_goal(poss)
full <- cbind(score,win,trys,goal)
ft <-rbind(ft, c("round" = i,
"matches" = nrow(score),
"try" = round(nrow(subset(full,full$win==full$trys))/nrow(full),2)))
}
return(ft)
}
ft <- first_try_summary()
Across all matches the front runner enjoyed a decisive advantage, winning %72 overall. Cup round (top 8) matches were closest. Front runners won %65 of their matches in the Cup round.
print(ft)
## round matches try
## [1,] "all" "225" "0.72"
## [2,] "Pool" "120" "0.72"
## [3,] "Shield" "15" "0.73"
## [4,] "Bowl" "35" "0.77"
## [5,] "Plate" "15" "0.8"
## [6,] "Cup" "40" "0.65"
The previous function measured the likelihood that the first try scoring team would win regardless of whether the try was converted. (A converted try is referred to as a goal.)
This function measures whether scoring a goal (as opposed to scoring an unconverted try) improves the front runner’s odds of winning.
# Calculate win % by round for first goal scorers
first_goal_summary <- function() {
fg <- c()
for (i in c("all", "Pool", "Shield", "Bowl", "Plate", "Cup")) {
poss <- poss_filter(round=i)
score <- match_score(poss)
win <- match_winner(score)
trys <- first_try(poss)
goal <- first_goal(poss)
full <- cbind(score,win,trys,goal)
fg <-rbind(fg, c("round" = i,
"matches" = nrow(score),
"try" = round(nrow(subset(full,full$win==full$trys))/nrow(full),2),
"goal" = round(nrow(subset(full,full$win==full$goal))/nrow(subset(full,!is.na(full$goal))),2)))
}
return(fg)
}
fg <- first_goal_summary()
Goal scorers fared better across all knockout rounds and %5 better overall. Odds improved by more than %10 for teams in the Shield, Plate, and Cup rounds. The odds of winning for try and goal scorers were about equal in Pool play.
print(fg)
## round matches try goal
## [1,] "all" "225" "0.72" "0.77"
## [2,] "Pool" "120" "0.72" "0.73"
## [3,] "Shield" "15" "0.73" "0.88"
## [4,] "Bowl" "35" "0.77" "0.8"
## [5,] "Plate" "15" "0.8" "0.92"
## [6,] "Cup" "40" "0.65" "0.77"
Over the first five tournaments of the 2014-2105 season, non-core teams did not win a single match. The previous functions included both core and non-core teams in their analysis. This function eliminates all matches including a non-core team from the analysis to determine whether they skew the overall results.
# Calculate win % by round for first scorers among core teams only
first_score_summary_core <- function() {
fsc <- c()
for (i in c("all", "Pool", "Shield", "Bowl", "Plate", "Cup")) {
# include core teams only
poss <- poss_filter(round=i, team="core")
score <- match_score(poss)
win <- match_winner(score)
trys <- first_try(poss)
goal <- first_goal(poss)
full <- cbind(score,win,trys,goal)
fsc <-rbind(fsc, c("round" = i,
"matches" = nrow(score),
"try" = round(nrow(subset(full,full$win==full$trys))/nrow(full),2),
"goal" = round(nrow(subset(full,full$win==full$goal))/nrow(subset(full,!is.na(full$goal))),2)))
}
return(fsc)
}
fsc <- first_score_summary_core()
Removing the non-core team has minimal impact on the previous findings. In Pool play the first score advantage remains near %70. There is no impact to the top 8.
print(fsc)
## round matches try goal
## [1,] "all" "200" "0.71" "0.77"
## [2,] "Pool" "105" "0.7" "0.72"
## [3,] "Shield" "10" "0.8" "1"
## [4,] "Bowl" "30" "0.73" "0.77"
## [5,] "Plate" "15" "0.8" "0.92"
## [6,] "Cup" "40" "0.65" "0.77"
Teams are rewarded for outscoring their opposition in Pool play. Point and try differentials break ties and determine who advances to the Cup. This function plots the victory margin for front runners versus comeback winners in Pool play. It addresses whether scoring first not only predicts the probability but also the quality of winning in Pool play. Victory margin is calculated by subtracting the losing score from the winning score.
# plot average victory margin for front runners and comeback winners
plot_victory_margin <- function(round) {
poss <- poss_filter(round=round)
tm <- match_score(poss)
tm <- cbind(tm, win = match_winner(tm), first = first_try(poss))
tm1 <- tm %>% mutate(ws = ifelse(t2s>t1s, t2s, t1s)) %>% mutate(ls = ifelse(t2s>t1s, t1s, t2s))
x <- tm1 %>% filter(first==win) %>% transmute(diff = ws - ls)
y <- tm1 %>% filter(first!=win) %>% transmute(diff = ws - ls)
avmfr <- round(mean(x[,1],2)) # avm for front runners in pool play
avmcb <- round(mean(y[,1],2)) # avm for come back winners in pool play
x <- hist(x$diff, breaks=24, plot=FALSE)
y <- hist(y$diff, breaks=24, plot=FALSE)
plot(x,col=rgb(0,0,1,1/4), xlim=c(0,60), main=paste(round, "Victory Margin"), xlab="Winning Point Differential" )
plot(y,col=rgb(1,0,0,1/4), xlim=c(0,60), add=T)
abline(v=avmfr, col="Blue", lwd=4)
abline(v=avmcb, col="Red", lwd=4)
legend("topright", c("Front runner","Comeback"), pch=15,col=c(rgb(0,0,1,1/3),rgb(1,0,0,1/3)))
}
The histogram groups victories by point differential for both front runners and comeback winners. Except for 2-3 outliers, the comeback winners win by smaller margins than the front runners in Pool play. The comeback winners have a mean victory margin of 8 points (red horizontal line) while the front runners have a mean victory margin of 22 points (blue horizontal line) in Pool play.
plot_victory_margin("Pool")
The first team to score will probably win an international sevens match. This holds true across all rounds and both with and without non-core teams. On average, the team that scores first wins 65-80% of their matches. Converting the first try can increase the probability of winning by up to 15%. There is a clear relationship between scoring first and winning.
But how much does scoring the first try contribute to winning? Perhaps scoring first allows you to play conservatively while your opponent is forced to take risks. This phenomenon is widely observed in other sports. Near the end of the contest, the trailing competitor throws caution to the wind in hopes of scoring the improbable knockout. And in rugby sevens the entire match is near the end of the contest.
On the other hand, it may be that scoring first confers no special advantage. The eventual winner scores first because they are the better team. Correlation is not causality. But the data also show that first scorers win better in Pool play. They are more likely to advance to the Cup round than comeback winners. So teams should strive to score first in Pool play even if they are confident of the eventual outcome.
Ideas for future work include: