Benford's law: Difference between revisions

(Added a Scheme implementation.)
Line 2,569:
9 4.500 4.576 9 10.060 4.576 9 4.600 4.576
</pre>
 
=={{header|Picat}}==
<lang Picat>go =>
 
N = 1000,
Fib = [fib(I) : I in 1..N],
check_benford(Fib),
nl.
 
% Check a list of numbers for Benford's law
check_benford(L) =>
Len = L.len,
println(len=Len),
Count = [F[1].to_integer() : Num in L, F=Num.to_string()].occurrences(),
P = new_map([I=D/Len : I=D in Count]),
println("Benford (percent):"),
foreach(D in 1..9)
B = benford(D)*100,
PI = P.get(D,0)*100,
Diff = abs(PI - B),
printf("%d: count=%5d observed: %0.2f%% Benford: %0.2f%% diff=%0.3f\n", D,Count.get(D,0),PI,B,Diff)
end,
nl.
 
benford(D) = log10(1+1/D).
 
% create an occurrences map of a list
occurrences(List) = Map =>
Map = new_map(),
foreach(E in List)
Map.put(E, cond(Map.has_key(E),Map.get(E)+1,1))
end.</lang>
 
Output:
 
<pre>
Benford (percent):
1: count= 301 observed: 30.10% Benford: 30.10% diff=0.003
2: count= 177 observed: 17.70% Benford: 17.61% diff=0.091
3: count= 125 observed: 12.50% Benford: 12.49% diff=0.006
4: count= 96 observed: 9.60% Benford: 9.69% diff=0.091
5: count= 80 observed: 8.00% Benford: 7.92% diff=0.082
6: count= 67 observed: 6.70% Benford: 6.69% diff=0.005
7: count= 56 observed: 5.60% Benford: 5.80% diff=0.199
8: count= 53 observed: 5.30% Benford: 5.12% diff=0.185
9: count= 45 observed: 4.50% Benford: 4.58% diff=0.076
</pre>
 
Extra credit:
Data from https://en.wikipedia.org/wiki/Land_use_statistics_by_country "Cultivated land (km^2)"
 
Output:
<pre>
Benford (percent):
1: count= 72 observed: 33.64% Benford: 30.10% diff=3.542
2: count= 38 observed: 17.76% Benford: 17.61% diff=0.148
3: count= 29 observed: 13.55% Benford: 12.49% diff=1.058
4: count= 19 observed: 8.88% Benford: 9.69% diff=0.812
5: count= 20 observed: 9.35% Benford: 7.92% diff=1.428
6: count= 12 observed: 5.61% Benford: 6.69% diff=1.087
7: count= 9 observed: 4.21% Benford: 5.80% diff=1.594
8: count= 11 observed: 5.14% Benford: 5.12% diff=0.025
9: count= 4 observed: 1.87% Benford: 4.58% diff=2.707
</pre>
 
 
 
 
=={{header|PicoLisp}}==
495

edits