servevolleyR

Simulate a match between two players, given a number of parameters, that include probability of each player winning a point on their first serve, on their second serve, and the probability that their first serve will go in.

Usage

simMatch(pA, pB, sets = c(3, 5), tiebreaks = TRUE,
         finalSetTiebreak = FALSE, players = c("A", "B"), detail = FALSE,
         p2A = NULL, firstServeA = NULL,
         p2B = NULL, firstServeB = NULL)

Arguments

param details default
pA probability of player A winning point on their first serve
pB probability of player B winning point on their first serve
sets number of sets (3 or 5)
tiebreaks play tiebreaks in the event the set reaches 6 games all TRUE
finalSetTiebreak play a final set tiebreak if sets and games are tied, otherwise keep playing FALSE
players player names (vector of length 2) c(“A”, “B”)
detail return a detailed list about the match, including service probabilities, sets won, set data, games won, game data and result FALSE
p2A probability of player A winning point on their second serve NULL
firstServeA probability of player A’s first serve being in NULL
p2A probability of player B winning point on their second serve NULL
firstServeB probability of player B’s first serve being in NULL

Return

The default function returns a 1, if player A wins the match, or 0, if player B wins the match. If detail argument is changed to TRUE, then the function will return a list with details about the simulated match, including service probabilities, sets and games won by each player, and the result (1 or 0)

Methods

There are a number of generic methods available for an object returned by simMatch, these are print and summary, example use is show below.

Example

simMatch(sets = 3, finalSetTiebreak = TRUE,
         pA = .78, pB = .70,
         p2A = .56, firstServeA = .67,
         p2B = .6, firstServeB = .7)
## [1] 1

Adding detail = TRUE will return a detailed list with data about the simulated match.

egMatch <- simMatch(sets = 3, finalSetTiebreak = TRUE, detail = TRUE,
                    pA = .78, pB = .70,
                    p2A = .56, firstServeA = .67,
                    p2B = .6, firstServeB = .7)

The object egMatch has a class of svR_match which comes with a print method

egMatch
## Match Result:
##  B won the match.
## 
##  player sets set1 set2
##       A    0    4    4
##       B    2    6    6
summary(egMatch)
## Match Result:
##  B won the match.
## 
##  player sets set1 set2
##       A    0    4    4
##       B    2    6    6
## 
## Server probabilities:
## 
##  player    p   p2 firstServe
##       A 0.78 0.56       0.67
##       B 0.70 0.60       0.70

Using simDf

If the function is called with detail = TRUE, then the list returned can be converted into a dataset using the simDf function:

df <- simDf(egMatch)
head(df)
##   playerA playerB mA mB result setNo pA pB setA setB set_res gameNo
## 1       A       B  0  2      0     1  A  B    4    6       0      1
## 2       A       B  0  2      0     1  A  B    4    6       0      2
## 3       A       B  0  2      0     1  A  B    4    6       0      3
## 4       A       B  0  2      0     1  A  B    4    6       0      4
## 5       A       B  0  2      0     1  A  B    4    6       0      5
## 6       A       B  0  2      0     1  A  B    4    6       0      6
##   serving    p   p2 firstServe game_res server returner
## 1       A 0.78 0.56       0.67        1      4        1
## 2       B 0.70 0.60       0.70        1      4        2
## 3       A 0.78 0.56       0.67        1      4        1
## 4       B 0.70 0.60       0.70        1      4        1
## 5       A 0.78 0.56       0.67        1      4        2
## 6       B 0.70 0.60       0.70        1      4        2

The dataset contains the following variables:

variables about
playerA player A (who started the match serving)
playerB player B (who started the match returning)
mA sets won by player A
mB sets won by player B
result match result, (1 if player A wins, 0 otherwise)
setNo set number
pA player A (who started the set serving)
pB player B (who started the set returning)
setA games won by player A
setB games won by player B
set_res set result (1 if player A wins, 0 if player B wins)
gameNo game number in set
serving player serving
p probability of server winning a point on their first serve
p2 probability of server winning a point on their second serve
firstServe probability of first serve being in
game_res game result (1 if server wins, 0 if returner wins)
server number of points won by server in service game
returner number of points won by returner in service game