Skip to content

Exploring Ticket Prices

November 4, 2014

Here’s an two-way table sports example. If you attend any professional sports event in the United States, you’ll see that it can be quite expensive, especially if you consider the total cost, including tickets, travel, parking, and food. That raises several questions:
(1) how does the average ticket price vary across cities?
(2) how does the average price vary across different professional sports?

On the fan cost Team Marketing Report website, we find the average ticket price for all professional teams in different sports. I collect the average prices for five cities and for four sports (basketball, football, baseball, and ice hockey).

In R, I create a matrix with rows corresponding to cities and columns corresponding to sports. Note that I use the dimnames function to provide labels for the rows and columns.

ticket.prices <- matrix(c(98.69, 88.53, 108.44, 122, 111.69,
                          37.42, 32.59, 44.16, 52.32, 51.55,
                          39.25, 35.50, 77.65, 72.64, 129.38,
                          74.65, 67.06, 78.80, 88.70, 77.87),
                          nrow=5, ncol=4)
dimnames(ticket.prices)[[1]] <- c("Philadelphia", "Minnesota",
                                  "Chicago", "New England", "New York")
dimnames(ticket.prices)[[2]] <- c("NFL", "MLB", "NBA", "NHL")
ticket.prices
##                 NFL   MLB    NBA   NHL
## Philadelphia  98.69 37.42  39.25 74.65
## Minnesota     88.53 32.59  35.50 67.06
## Chicago      108.44 44.16  77.65 78.80
## New England  122.00 52.32  72.64 88.70
## New York     111.69 51.55 129.38 77.87

I reorder the rows and columns so the cities are in order, from cheapest to most expensive, and likewise the sports are in order with regards to cost.

ticket.prices <- ticket.prices[c(2, 1, 3, 5, 4),
                               c(2, 3, 4, 1)]
ticket.prices
##                MLB    NBA   NHL    NFL
## Minnesota    32.59  35.50 67.06  88.53
## Philadelphia 37.42  39.25 74.65  98.69
## Chicago      44.16  77.65 78.80 108.44
## New York     51.55 129.38 77.87 111.69
## New England  52.32  72.64 88.70 122.00

I use the medpolish function to perform an additive fit to this table. I display the fit, and also plot the fit using the plot2way function in the LearnEDA package. (By the way, I used a graphics application to rotate the display so that values of the fit are horizontal lines.)

fit <- medpolish(ticket.prices)
## 1: 192.34
## 2: 135.2
## Final: 135.2
fit
##
## Median Polish Results (Dataset: "ticket.prices")
##
## Overall: 72.0625
##
## Row Effects:
##    Minnesota Philadelphia      Chicago     New York  New England
##     -15.9525      -8.4575       0.0000       5.1075       8.6075
##
## Column Effects:
##     MLB     NBA     NHL     NFL
## -26.185  -8.030   8.030  35.085
##
## Residuals:
##                  MLB     NBA     NHL     NFL
## Minnesota     2.6650 -12.580  2.9200 -2.6650
## Philadelphia  0.0000 -16.325  3.0150  0.0000
## Chicago      -1.7175  13.618 -1.2925  1.2925
## New York      0.5650  60.240 -7.3300 -0.5650
## New England  -2.1650   0.000  0.0000  6.2450
library(LearnEDA)
plot2way(fit$row + fit$overall, fit$col,
  dimnames(ticket.prices)[[1]],
  dimnames(ticket.prices)[[2]])

ticketprices copy

Here are some comments about the fit and the residuals.

  • The additive fit is helpful for understanding differences in average ticket prices between cities and between sports. As expected, tickets are most expensive in New York and New England. The differences are substantial. For example, on average, ticket prices are over $24 higher in New England than Minnesota. Also, football is the most expensive sport, followed by hockey, basketball, and baseball. By looking at the column effects, we can say, for example, that average ticket prices tend to be $16 higher for hockey games than basketball.
  • Does the additive fit explain the variation in the average ticket prices? To answer this, we look at the residuals. Most of the residuals look small (relative to the sizes of the row and col effects), but several residuals are large. For example, basketball tickets in New York look unusually high, and basketball tickets in Philly seem unusually low.
  • It is not clear here if it is best to use an additive fit. When we think of changes in ticket prices, typically we talk in terms of percentage increase or decrease. For example, one might hear that the Cavaliers raised their prices by 20% this year. So it might make sense to use a multiplicative fit for this data.

From → 6 Two-way tables

Comments are closed.