I guess this is a famous result, but it was new to me: George Zipf observed in 1949 that the populations of the cities in just about every country follow a power-law distribution. The largest city is always about twice as large as the second largest, and three times as big as the third largest, and so on. You can see this in action in R by plotting the populations of Canadian cities in 1996 (available as dataset cities in the DAAG package) against their rank on a log-log scale:
While the population of cities tends to follow the Zipf law that Strogatz describes within a nation, this scaling does not hold for the whole collection of world cities. The distribution ends up being somewhat flatter - particularly among the largest cities. This may result from barriers to migration between countries.



See also here: http://anyall.org/blog/2009/05/zipfs-law-and-world-city-populations/
Posted by: Hadley | May 28, 2009 at 14:53
Not Denmark I am afraid:
kom <- structure(list(kommune = structure(c(1L, 2L, 3L, 4L, 5L, 6L,
7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L,
20L, 21L, 22L, 23L, 24L, 25L, 26L, 29L, 32L, 46L, 27L, 28L, 30L,
31L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L,
45L, 47L, 48L, 49L, 50L, 51L, 52L, 53L, 54L, 55L, 56L, 57L, 58L,
59L, 60L, 61L, 62L, 63L, 64L, 65L, 66L, 68L, 69L, 67L, 70L, 71L,
72L, 73L, 74L, 75L, 76L, 77L, 78L, 79L, 80L, 81L, 82L, 83L, 84L,
85L, 87L, 89L, 86L, 88L, 90L, 91L, 92L, 93L, 94L, 95L, 96L, 97L,
98L), .Label = c("101 Københavns Kommune", "147 Frederiksberg Kommune",
"151 Ballerup Kommune", "153 Brøndby Kommune", "155 Dragør Kommune",
"157 Gentofte Kommune", "159 Gladsaxe Kommune", "161 Glostrup Kommune",
"163 Herlev Kommune", "165 Albertslund Kommune", "167 Hvidovre Kommune",
"169 Høje-Taastrup Kommune", "173 Lyngby-Taarbæk Kommune", "175 Rødovre Kommune",
"183 Ishøj Kommune", "185 Tårnby Kommune", "187 Vallensbæk Kommune",
"190 Furesø Kommune", "201 Allerød Kommune", "210 Fredensborg Kommune",
"217 Helsingør Kommune", "219 Hillerød Kommune", "223 Hørsholm Kommune",
"230 Rudersdal Kommune", "240 Egedal Kommune", "250 Frederikssund Kommune",
"253 Greve Kommune", "259 Køge Kommune", "260 Halsnæs Kommune",
"265 Roskilde Kommune", "269 Solrød Kommune", "270 Gribskov Kommune",
"306 Odsherred Kommune", "316 Holbæk Kommune", "320 Faxe Kommune",
"326 Kalundborg Kommune", "329 Ringsted Kommune", "330 Slagelse Kommune",
"336 Stevns Kommune", "340 Sorø Kommune", "350 Lejre Kommune",
"360 Lolland Kommune", "370 Næstved Kommune", "376 Guldborgsund Kommune",
"390 Vordingborg Kommune", "400 Bornholms Kommune", "410 Middelfart Kommune",
"420 Assens Kommune", "430 Faaborg-Midtfyn Kommune", "440 Kerteminde Kommune",
"450 Nyborg Kommune", "461 Odense Kommune", "479 Svendborg Kommune",
"480 Nordfyns Kommune", "482 Langeland Kommune", "492 Ærø Kommune",
"510 Haderslev Kommune", "530 Billund Kommune", "540 Sønderborg Kommune",
"550 Tønder Kommune", "561 Esbjerg Kommune", "563 Fanø Kommune",
"573 Varde Kommune", "575 Vejen Kommune", "580 Aabenraa Kommune",
"607 Fredericia Kommune", "615 Horsens Kommune", "621 Kolding Kommune",
"630 Vejle Kommune", "657 Herning Kommune", "661 Holstebro Kommune",
"665 Lemvig Kommune", "671 Struer Kommune", "706 Syddjurs Kommune",
"707 Norddjurs Kommune", "710 Favrskov Kommune", "727 Odder Kommune",
"730 Randers Kommune", "740 Silkeborg Kommune", "741 Samsø Kommune",
"746 Skanderborg Kommune", "751 Århus Kommune", "756 Ikast-Brande Kommune",
"760 Ringkøbing-Skjern Kommune", "766 Hedensted Kommune", "773 Morsø Kommune",
"779 Skive Kommune", "787 Thisted Kommune", "791 Viborg Kommune",
"810 Brønderslev Kommune", "813 Frederikshavn Kommune", "820 Vesthimmerlands Kommune",
"825 Læsø Kommune", "840 Rebild Kommune", "846 Mariagerfjord Kommune",
"849 Jammerbugt Kommune", "851 Aalborg Kommune", "860 Hjørring Kommune"
), class = "factor"), kom_nr = c(101L, 147L, 151L, 153L, 155L,
157L, 159L, 161L, 163L, 165L, 167L, 169L, 173L, 175L, 183L, 185L,
187L, 190L, 201L, 210L, 217L, 219L, 223L, 230L, 240L, 250L, 260L,
270L, 400L, 253L, 259L, 265L, 269L, 306L, 316L, 320L, 326L, 329L,
330L, 336L, 340L, 350L, 360L, 370L, 376L, 390L, 410L, 420L, 430L,
440L, 450L, 461L, 479L, 480L, 482L, 492L, 510L, 530L, 540L, 550L,
561L, 563L, 573L, 575L, 580L, 607L, 621L, 630L, 615L, 657L, 661L,
665L, 671L, 706L, 707L, 710L, 727L, 730L, 740L, 741L, 746L, 751L,
756L, 760L, 766L, 779L, 791L, 773L, 787L, 810L, 813L, 820L, 825L,
840L, 846L, 849L, 851L, 860L), indbyggere = c(509.861, 93.444,
47.116, 33.831, 13.261, 68.913, 62.562, 20.673, 26.567, 27.602,
49.38, 47.158, 51.449, 36.144, 20.687, 40.016, 12.399, 37.667,
23.493, 39.24, 60.844, 46.568, 24.197, 53.869, 40.533, 44.102,
30.824, 40.512, 42.817, 47.773, 56.637, 80.687, 20.759, 33.129,
69.01, 35.418, 49.743, 32.092, 77.457, 21.892, 29.18, 26.603,
48.219, 80.732, 63.496, 46.6, 37.274, 42.054, 51.95, 23.63, 31.607,
186.932, 59.04, 29.47, 13.741, 6.712, 56.414, 26.181, 76.913,
40.367, 114.244, 3.192, 50.125, 42.447, 60.189, 49.463, 87.781,
104.933, 80.102, 84.208, 57.02, 22.067, 22.672, 41.281, 38.581,
45.604, 21.562, 93.644, 87.371, 4.085, 56.044, 298.538, 39.893,
58.368, 45.561, 48.356, 92.084, 22.091, 45.549, 35.525, 62.751,
38.277, 2.003, 28.753, 42.667, 38.957, 195.145, 67.121), rank = c(98L,
91L, 56L, 30L, 6L, 80L, 76L, 8L, 20L, 22L, 61L, 57L, 65L, 33L,
9L, 41L, 5L, 35L, 16L, 39L, 75L, 54L, 18L, 67L, 44L, 50L, 26L,
43L, 49L, 58L, 70L, 85L, 10L, 29L, 81L, 31L, 63L, 28L, 83L, 12L,
24L, 21L, 59L, 86L, 78L, 55L, 34L, 46L, 66L, 17L, 27L, 95L, 73L,
25L, 7L, 4L, 69L, 19L, 82L, 42L, 94L, 2L, 64L, 47L, 74L, 62L,
89L, 93L, 84L, 87L, 71L, 13L, 15L, 45L, 37L, 53L, 11L, 92L, 88L,
3L, 68L, 97L, 40L, 72L, 52L, 60L, 90L, 14L, 51L, 32L, 77L, 36L,
1L, 23L, 48L, 38L, 96L, 79L)), .Names = c("kommune", "kom_nr",
"indbyggere", "rank"), row.names = c(NA, -98L), class = "data.frame")
plot(sort(kom$indbyggere,decreasing=TRUE), log="xy", ylab="Indbyggere (1000)",xlab="Kommune rang",main="Danske byer")
Posted by: Andreas | May 29, 2009 at 06:56
Very interesting Andreas, thanks! Although it does seem the relationship is still fairly linear for all but the smallest towns in Denmark. The Strogatz article suggests the law holds only for the "largest cities", but I'm not sure how "largest" should be defined. This article also looked at the Zipf's law for Denmark.
Posted by: David Smith | May 29, 2009 at 10:12