The Datasaurus dozen comprises thirteen data sets that have nearly identical simple descriptive statistics to two decimal places, yet have very different distributions and appear very different when graphed. It was inspired by the smaller Anscombe's quartet that was created in 1973.

Data The following table contains summary statistics for all thirteen data sets. PropertyValueAccuracyNumber of elements142exactMean of x54.26to 2 decimal placesSample variance of x: s16.76to 2 decimal placesMean of y47.83to 2 decimal placesSample variance of y: s26.93to 2 decimal placesCorrelation between x and y −0.06to 3 decimal placesLinear regression liney = 53 − 0.1xto 0 and 1 decimal places, respectivelyCoefficient of determination of the linear regression: 0.004to 3 decimal places

The thirteen data sets were labeled as the following:

away bullseye circle dino dots h_lines high_lines slant_down slant_up star v_line wide_lines x_shape

Similar to Anscombe's quartet, the Datasaurus dozen was designed to further illustrate the importance of looking at a set of data graphically before starting to analyze according to a particular type of relationship, and the inadequacy of basic statistic properties for describing realistic data sets.

Creation The first data set, in the shape of a Tyrannosaurus, that inspired the rest of the "datasaurus" data set was constructed in 2016 by Alberto Cairo. It was proposed by Maarten Lambrechts that this data set also be called "Anscombosaurus".

This data set was then accompanied by twelve other data sets that were created by Justin Matejka and George Fitzmaurice at Autodesk. Unlike Anscombe's quartet, where it is not known how the data set was generated, the authors used simulated annealing to make these data sets. They made small, random, and biased changes to each point towards the desired shape. Each shape took 200,000 iterations of perturbations to complete.

The pseudocode for this algorithm is as follows: current_ds ← initial_ds for x iterations, do: test_ds ← perturb(current_ds, temp) if similar_enough(test_ds, initial_ds): current_ds ← test_ds

function perturb(ds, temp): loop: test ← move_random_points(ds) if fit(test) > fit(ds) or temp > random(): return test

where initial_ds is the seed data set current_ds is the latest version of the data set fit() is a function used to check whether moving the points gets closer to the desired shape temp is the temperature of the simulated annealing algorithm similar_enough() is a function that checks whether the statistics for the two given data sets are similar enough move_random_points() is a function that randomly moves data points

See also Exploratory data analysis Goodness of fit Regression validation Simpson's paradox Statistical model validation Anscombe's quartet

References

External links Animated examples from Autodesk for the Datasaurus Dozen datasets datasauRus, datasets from the Datasaurus Dozen in R The Datasaurus Dozen in CSV and tab-delimited files https://www.openintro.org/data/index.php?data=datasaurus