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.
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)
| 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 |
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)
There are a number of generic methods available for an object returned by simMatch, these are print and summary, example use is show below.
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
simDfIf 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 |