Prawo Benforda
1-------------- - 2-------- - 3------ - 4---- - 5---- 6-- - 7-- 8-- 9
           					czyli słów kilka o prawie pierwszej cyfry

Projekt zaliczeniowy z kursu Mathematica II: aplikacje
Daria Kamińska
Wydział Fizyki, Astronomii i Informatyki Stosowanej UJ
Kraków 2010

Dawno, dawno temu...

(...) za siedmioma górami, za siedmioma lasami (...)

W ,,zamierzchłych czasach'', pewien astronom korzystając z tablic logarytmicznych, zauważył ciekawą zależność. Otóż początkowe strony były bardziej zużyte niż następne, co świadczy o częstszym ich używaniu.

Nasuwa się pytanie: Dlaczego?

Ten fakt Czytelniku, wyjaśni dalsza część prezentacji.
Tutaj zaznaczę, iż ów astronom to Simon Newcomb i niestety, zależność przez niego zaobserwowana, przeszła niezauważona. Musiało minąć 57 lat, by na nowo odkrył ją w 1938 roku Frank Benford. Jak można się spodziewać, zasada nosi odtąd nazwę prawa Benforda [1]

Trochę ,,magii''

By samodzielnie przekonać się, co tak zaintrygowało Newcomba, przeprowadźmy małe badanie. 
Otwórz dowolną stronę z danymi numerycznymi. Dla przykładu – trochę danych ze strony o Barbados w Wikipedii [9]:
• powierzchnia 431 (km^2),
• liczba ludności 281 968,
• PKB na osobę 19 233  USD.

Teraz wybierz pierwszą cyfrę znaczącą (czyli pierwszą, która nie jest zerem). Prawo Benforda stwierdza, iż w dowolnych zestawach liczb, pochodzących z życia codziennego, rozkład liczb na pierwszym miejscu wygląda następująco:

Grid[{{Style[TableForm[{{1,"30.1 %"},{2,"17.6 %"},{3,"12.5 %"},{4,"9.7 %"},{5,"7.9 %"},{6,"6.7 %"},{7,"5.8 %"},{8,"5.1 %"},{9,"4.6 %"}},TableHeadings->{None,{"Cyfra","Częstość"}},TableAlignments->Center],"Generic"],Text[Column[{"Częstość występowania cyfr od 1 do 9 maleje!","Brzmi nierozsądnie, prawda?","Sprawdźmy więc to."}] ]}}]

Prawo Benforda – gdzie go szukać?

Manipulate[
wybierapierwsza=Map[First,IntegerDigits[Select[Round[#,2],#>0&]]]&;
sortuje=Tally[Sort[#]]&;

danelista=BarChart[Table[#[[i,2]],{i,1,Length[#]}],ChartLabels->Placed[{{"1","2","3","4","5","6","7","8","9"},Framed/@Table[#[[i,2]],{i,1,Length[#]}]},{Below,Top}],PlotLabel->"Ilość wystąpień danej cyfry na pierwszym miejscu",ChartStyle->"Pastel"]&;

listawybor:={CountryData[#,"Population"]&/@CountryData[],CountryData[#,"CoastlineLength"]&/@CountryData[],Select[CountryData[#,"Area"]&/@CountryData[],NumericQ],Select[CountryData[#,"WaterArea"]&/@CountryData[],NumericQ],Select[CountryData[#,"ElectricityConsumption"]&/@CountryData[],NumericQ],Select[CountryData[#,"ElectricityProduction"]&/@CountryData[],NumericQ],CountryData[#,"Airports"]&/@CountryData[],Select[CountryData[#,"InternetUsers"]&/@CountryData[],NumericQ],Select[CountryData[#,"RoadLength"]&/@CountryData[],NumericQ],CountryData[#,"HighestElevation"]&/@CountryData[],Select[CountryData[#,"ArableLandArea"]&/@CountryData[],NumericQ],Select[CountryData[#,"LifeExpectancy"]&/@CountryData[],NumericQ]};


wybor[s_]:=Which[s=="liczba ludności",listawybor[[1]],s=="długość lini brzegowej państw",listawybor[[2]],s=="powierzchnia państw",listawybor[[3]],s=="powierzchnia wodna",listawybor[[4]],s=="produkcja elektryczności",listawybor[[5]],s=="zużycie elektryczności",listawybor[[5]],s=="liczba lotnisk",listawybor[[6]],s== "liczba użytkowników internetu",listawybor[[7]],s== "długość dróg",listawybor[[8]],s== "najwyższy punkt",listawybor[[9]],s== "powierzchnia ziemii uprawnej",listawybor[[10]],s== "oczekiwana długość życia",listawybor[[11]]];


wykresdanebenford:=danelista[sortuje[wybierapierwsza[wybor[q]]]];

wykresczystedane:=ListPlot[wybor[q],PlotLabel->"Czyste dane"];

wykreskolowy:=PieChart[
{{30.1,17.6,12.5,9.7,7.9,6.7,5.8,5.1,4.6},Table[sortuje[wybierapierwsza[wybor[q]]][[i,2]],{i,1,Length[sortuje[wybierapierwsza[wybor[q]]]]}]},ImageSize->Medium,ChartLegends->{Placed[{"Rozkład Benforda","Nasze dane"},Bottom],Placed[{"cyfra 1","cyfra 2","cyfra 3","cyfra 4","cyfra 5","cyfra 6","cyfra 7","cyfra 8","cyfra 9"},Right]},ChartStyle->{{EdgeForm@Dashed,EdgeForm[Thickness@0.006]},"Pastel"}];

tablicainfo=Style[Grid[{{"Cyfra" ,"Częstość występowania [%]", SpanFromLeft},{,"Rozkład Benforda","Nasze dane"},{Column[Table[u,{u,1,9}]],Column[{30.1,17.6,12.5,9.7,7.9,6.7,5.8,5.1,4.6}],Column[N[Table[100 #[[i,2]]/Total[Table[#[[u,2]],{u,1,Length[#]}]],{i,1,Length[#]}],5]]}},Frame->True],FontSize->14]&;

Row[{Column[{Show[wykresdanebenford,ImageSize->Medium],tablicainfo[sortuje[wybierapierwsza[wybor[q]]]]}],Show[wykreskolowy,ImageSize->Large]
}],

{{q,"liczba ludności","Wybierz rodzaj danych (zbiór dla wszystkich państw na świecie)"},{"liczba ludności","długość lini brzegowej państw","powierzchnia państw","powierzchnia wodna","produkcja elektryczności","zużycie elektryczności","liczba lotnisk", "liczba użytkowników internetu", "długość dróg", "najwyższy punkt", "powierzchnia ziemii uprawnej", "oczekiwana długość życia"}},SynchronousUpdating->False,SaveDefinitions->True,TrackedSymbols->True,ControlType->PopupMenu]

Za kulisami

Czy dostrzegłeś Czytelniku, iż większość danych idealnie wręcz spełnia rozkład Benforda? Ma na to oczywiście wpływ kilka czynników, jak na przykład:
▮  wielkość próbki – łatwiej o równomierny rozkład danych, 
▮  rodzaj danych – np. wzrost ludzi jako rozkład dyskretny (średnio 1,60–1,90 cm) nie nadaje się do naszej analizy.
Zauważmy także, iż zmiana jednostek zupełnie nie wpływa na uzyskane wyniki. Dla przykładu zestawienie pierwszych cyfr dla powierzchni państw.

<<Units`
<<PlotLegends`

dane=Select[CountryData[#,"Area"]&/@CountryData[],NumericQ];

hectare=Convert[# (Kilo Meter)^2,Hectare]&/@dane/Hectare;

barn=Convert[#(Kilo Meter)^2,Barn]&/@dane/Barn;

foot=Convert[# (Kilo Meter)^2, Foot^2]&/@dane/Foot^2;

wybierapierwsza=Map[First,IntegerDigits[Select[Round[#,2],#>0&]]]&;

sortuje=Tally[Sort[#]]&;

benford[k_]=Log[10,(k+1)/k];

wybiera:=Table[#[[i,2]],{i,1,9}]/Total[Table[#[[i,2]],{i,1,9}]]&;

razem:=wybiera[sortuje[wybierapierwsza[#]]]&;

ListPlot[{Table[benford[i],{i,1,9}],razem[dane],razem[foot]},Joined->True,PlotLegend->{Text[Style[Column[{"rozkład","Benforda"}],FontSize->20]],Text[Style[Column[{"kilometry","kwadratowe"}],FontSize->20]],Text[Style[Column[{"stopy","kwadratowe","(1 stopa=0.3048 m)"}],FontSize->20]]},LegendPosition->{1.1,-0.4},AxesLabel->{"pierwsza cyfra","prawdopodobieństwo wystąpienia"},ImageSize->72 15]

Dlaczego tak się dzieje?

Najbardziej obrazowe wyjaśnienie obserwowanego zjawiska proponuje na swojej stronie doktora Łukasza  Dębowskiego [4]:

,,Jeżeli w liczbach (Subscript[r, 1]), (Subscript[r, 2]), (Subscript[r, 3]), (Subscript[r, 4]), ... , (Subscript[r, N]) przeniesiemy przecinek na miejsce po pierwszej cyfrze, otrzymamy pewien podzbiór odcinka [1,N). Jeżeli każdą liczbę z tego podzbioru zlogarytmujemy, podzbiór ów przejdzie w podzbiór odcinka [0,log(N)), a niezmienniczość mnożenia zmieni się w niezmienniczość dodawania modulo log(N). Jedyna miara prawdopodobieństwa, która spełnia niezmienniczość dodawania, to miara, która ,zlogarytmowanemu' odcinkowi przypisuje prawdopodobieństwo równe jego długości podzielonej przez długość maksymalnego odcinka, czyli log(N). Teraz już tylko trzeba zauważyć, że zbiór wszystkich liczb o pierwszej cyfrze k odpowiada ,zlogarytmowanemu' odcinkowi [log(k),log(k + 1)).''

Jeśli jednak jesteś zainteresowany bardziej formalnym wyprowadzeniem omawianego prawa, to zapraszam do spisu literatury pozycja [2]  oraz kilku ciekawych opisów i demonstracji [3, 5–8].

Przy okazji wyjaśnił się także fakt większego zużycia początkowych stron w tablicach logarytmicznych. Częstsze występowanie w opracowaniach studentów mniejszych liczb, pociągało za sobą stosowanie mniejszych logarytmów co było równoważne z większym wytarciem początkowych stron tablic. Potrzeba jednak kogoś niezwykle błyskotliwego, by zauważyć i następnie przełożyć tę korelację na język statystyki!

Przykład niestandardowego zastosowania 
		 					(...) czyli seria ,,Nie róbcie tego w domu"

W artykułach omawiających prawo Benforda najbardziej spektakularne zastosowanie opatrzone jest tytułem w stylu „Jak oszukiwać fiskusa?” [4]. 
Otóż, wyobraź sobie Czytelniku, iż nie sfałszowane dane podatkowe także podlegają rozkładowi Benforda, zaś większość ludzi zmyślając jakieś dane nadużywa na początku piątki. Fakt ten znalazł zastosowanie w urzędach podatkowych, gdzie specjalne algorytmy sprawdzają rozkład cyfr na pierwszym miejscu i jeśli za bardzo odbiega on od oczekiwanego, kierują o tym informację do odpowiedniej osoby. Następstwem jest, jak łatwo się domyślić, kontrola podatkowa. W ten sposób odkryto np. defraudacje Jamesa Nelsona [1].

Dla zainteresowanych tematem:

[1] Strona w Wikipedii poświęcona rozkładowi Benforda:
	 http://pl.wikipedia.org/wiki/Rozk% C5 %82 ad_Benforda   
[2] Artukuł Theodora Hilla z 1995 roku, w którym matematycznie udowodnił prawo Benforda:
	http://projecteuclid.org/DPubS/Repository/1.0/Disseminate?view=body&id=pdf_ 	1&handle=euclid.ss/1177009869	
[3] Przystępne zaprezentowanie prawa Benforda na blogu Krabulca:
	http://krabulec.blogspot.com/2010/02/prawo-pierwszej-cyfry-niezmienniczosc.html
[4] Strona doktora Łukasza Dębowskiego popularyzująca rachunek prawdopodobieństwa:
	http://www.ipipan.waw.pl/~ldebowsk/uslugi/index.html
[5] Informacje dotyczące prawa Benforda na stronie WolframMathWorld:
	http://mathworld.wolfram.com/BenfordsLaw.html
[6] Prezentacje na stronie Wolframa w wykonaniu:
	Hectora Zenil http://demonstrations.wolfram.com/CountryDataAndBenfordsLaw/
	Stana Wagon http://demonstrations.wolfram.com/BenfordsLawAndDataSpread/
[7] Artykuł Pawła Strzeleckiego zamieszczony w Delcie omawiający na przykładzie potęg dwójki       niezmienniczość skalowania na której opiera się prawo Benforda 
	http://images.nexto.pl/upload/publisher/Gwo/public/matematyka%20 w %20 szkole_ 31%20 demo.pdf
[8] Fragment czasopisma ,,Matematyka w szkole" opisujący prawo Benforda 
	http://www.mimuw.edu.pl/delta/artykuly/delta2010-03/2010-03-potega.pdf
[9] Strona Barbados w Wikipedii:
	http://pl.wikipedia.org/wiki/Barbados