Using data from fbref.com, I attempted to figure out if there was a relationship between Days of Rest (Between Home Games) and points. Ultimately, there was no correlation.

1st. Load CSV files

restMLS = read.csv("https://docs.google.com/spreadsheets/d/1zFTRwmiY221xzlq2ZrM86oTbhrVr68_d8J80-vNLeao/gviz/tq?tqx=out:csv&sheet=2021", header = TRUE) # All Games


nNA_RestMLS = read.csv("https://docs.google.com/spreadsheets/d/1zFTRwmiY221xzlq2ZrM86oTbhrVr68_d8J80-vNLeao/gviz/tq?tqx=out:csv&sheet=nNA", header = TRUE) # Not including first home games; to eliminate NAs
summary(nNA_RestMLS[,3 ])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     3.0     7.0    10.5    12.1    17.0    46.0
days =nNA_RestMLS$Days.Since.Last.Home.Game

wins = nNA_RestMLS$Win.
ties = nNA_RestMLS$Tie.
losses = nNA_RestMLS$Loss.
points = nNA_RestMLS$Points
sumDaysRest = replicate(46, 0)
nDaysRest = replicate(46, 0)

for (i in 1:432)  {
  daysRest = days[i]
  sumDaysRest[daysRest] =  sumDaysRest[daysRest] + points[i] 
  nDaysRest[daysRest] = nDaysRest[daysRest] + 1
}
averagePoints = replicate(46, NA)

for (j in 1:46)  {
  n = nDaysRest[j]
  if (n > 0)  {
    averagePoints[j] = sumDaysRest[j] / nDaysRest[j]
  }
}
averagePoints
##  [1]        NA        NA 1.7777778 1.8750000 1.7142857 1.8571429 1.2786885
##  [8] 2.1818182 1.4000000 2.0000000 1.3548387 1.0000000 2.0000000 1.7073171
## [15] 1.7222222 3.0000000 1.5000000 1.4000000 3.0000000 2.2222222 1.7500000
## [22] 2.6000000 1.5000000 2.5555556 0.3333333 1.2500000 1.5000000 1.8750000
## [29]        NA        NA 1.7500000 1.6666667        NA        NA 0.0000000
## [36] 1.0000000        NA 0.0000000 3.0000000        NA        NA        NA
## [43]        NA        NA        NA 0.0000000
plot(c(1:46), averagePoints, main = "2021 Days Between Home Games vs Points",,pch = 19, xlab = "Days Between Home Games", ylab = "Expected Points")
abline(h = 1.706, col = "red")

The plot shows little to no correlation between days of rest and points. The next graph shows that the majority of games are played within the first 10 days, so the variance afterwards is to be expected.

averagePoints[14]
## [1] 1.707317
mean(points)
## [1] 1.706019
averagePoints[21]
## [1] 1.75
hist(days, xlab = "Days Between Home Games", col = "#054715", main = "Histogram of Days Between Home Games")

The histogram appears to show a somewhat poisson-looking distribution of the days between home games.

plot(c(1:15), averagePoints[1:15], xlab= "Days Between Home Games", ylab = "Expected Points", main = "Days Between Home Games vs Expected Points", pch = 20)
abline(h = mean(points), col = "red")

Looking at just days 3-14 of rest, there appears to be an outlier at 7 days rest.

nDaysRest[7]
## [1] 61
nDaysRest[8]
## [1] 22

The seven days of rest had 61 games in 2021, a fair amount to postulate that 7 days of rest could indicate a poor performance/

Is there anything special about 7 days between home games? Does the trend continue in previous years?

Let’s look at 2019 data.

nNA_2019RestMLS = read.csv("https://docs.google.com/spreadsheets/d/1zFTRwmiY221xzlq2ZrM86oTbhrVr68_d8J80-vNLeao/gviz/tq?tqx=out:csv&sheet=2019", header = TRUE) # Not including first home games; to eliminate NAs
points2019 = nNA_2019RestMLS$Points
sumDaysRest = replicate(46, 0)
nDaysRest = replicate(46, 0)

for (i in 1:432)  {
  daysRest = days[i]
  sumDaysRest[daysRest] =  sumDaysRest[daysRest] + points2019[i] 
  nDaysRest[daysRest] = nDaysRest[daysRest] + 1
}
averagePoints = replicate(46, NA)

for (j in 1:46)  {
  n = nDaysRest[j]
  if (n > 0)  {
    averagePoints[j] = sumDaysRest[j] / nDaysRest[j]
  }
}
plot(c(1:46), averagePoints, main = "2019 Days Between Home Games vs Points",,pch = 19, xlab = "Days Between Home Games", ylab = "Expected Points")
abline(h = 1.706, col = "red")

At 7 days in 2019, the expected points is right on the average line.

So, even at 7 days between home games, there’s no difference in expected points. So there’s no excuse for coaches to say that a long stretch away from home impacted a home performance.