Explore Movieology
Use the Wolfram Knowledgebase to study the per minute cost and box office receipts for films released since the year 2000. Additionally, explore the average runtime of these films, which, unusually among human‐made objects, appears to follow a so-called stable distribution law.
Use an implicitly defined entity class to select movies released since the turn of the millennium.
Length[movies =
EntityClass["Movie",
EntityProperty["Movie", "ReleaseDate"] ->
Between[{DateObject[{2000}], DateObject[{2015}]}]] // EntityList]
Retrieve the movie titles, genres, runtimes, production budgets, and box office totals.
movieData =
EntityValue[
movies, {EntityProperty["Movie", "Name"],
EntityProperty["Movie", "Genres"],
EntityProperty["Movie", "Runtime"],
EntityProperty["Movie", "ReleaseDate"],
EntityProperty["Movie", "ProductionBudget"],
EntityProperty["Movie", "DomesticBoxOfficeGross"]}];
The cost per minute of a released movie is a highly fluctuating function over time.
However, averaged over a month, some cost per minute periodicities become visible. In particular, the green grid lines denote the Fourth of July and the purple lines Thanksgiving in the following plot.
As shown in the following logarithmic plot, box office receipts per minute are an even more wildly fluctuating function.
The average runtime of the movies has been fairly consistent over the last 15 years.
Looking in more detail, the distribution of the movie runtimes appears relatively smooth.
movieRuntimes = DeleteMissing[movieData[[All, 3]]];
hg = Histogram[movieRuntimes, {1, 200, 5}, "PDF",
AxesLabel -> Automatic]
Modeling using a large number of built-in distributions indicates that the closest fit is provided by a Lévy stable distribution. Here, fits using a normal (distribution of the averages of random variables independently drawn from independent distributions), lognormal (the distribution of the multiplicative product of many independent positive random variables), and a stable distribution are computed.
edNormal =
EstimatedDistribution[movieRuntimes,
NormalDistribution[\[Mu], \[Sigma]]]
edLogNormal =
EstimatedDistribution[movieRuntimes,
LogNormalDistribution[\[Mu], \[Sigma]]]
edStable =
EstimatedDistribution[movieRuntimes,
StableDistribution[1, \[Alpha], \[Beta], \[Mu], \[Sigma]]]
Interestingly, the stable distribution is visually the best fit.
Only a few human‐made objects obey a stable distribution. One characteristic feature of a stable distribution is the occurrence of relatively large outliers, often a few times larger than the mean. This characteristic is fulfilled by movies. Here, an implicitly defined entity class is used to select the 10 longest (by running time) movies released after January 1, 2000.
longest =
EntityClass[
"Movie", {EntityProperty["Movie", "ReleaseDate"] ->
Between[{DateObject[{2000}], DateObject[{2015}]}],
EntityProperty["Movie", "Runtime"] -> TakeLargest[10]}] //
EntityList
Summarize in a grid.