September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
73
Task/Benfords-law/Clojure/benfords-law.clj
Normal file
73
Task/Benfords-law/Clojure/benfords-law.clj
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
(ns example
|
||||
(:gen-class))
|
||||
|
||||
(defn abs [x]
|
||||
(if (> x 0)
|
||||
x
|
||||
(- x)))
|
||||
|
||||
(defn calc-benford-stats [digits]
|
||||
" Frequencies of digits in data "
|
||||
(let [y (frequencies digits)
|
||||
tot (reduce + (vals y))]
|
||||
[y tot]))
|
||||
|
||||
(defn show-benford-stats [v]
|
||||
" Prints in percent the actual, Benford expected, and difference"
|
||||
(let [fd (map (comp first str) v)] ; first digit of each record
|
||||
(doseq [q (range 1 10)
|
||||
:let [[y tot] (calc-benford-stats fd)
|
||||
d (first (str q)) ; reference digit
|
||||
f (/ (get y d 0) tot 0.01) ; percent of occurence of digit
|
||||
p (* (Math/log10 (/ (inc q) q)) 100) ; Benford expected percent
|
||||
e (abs (- f p))]] ; error (difference)
|
||||
(println (format "%3d %10.2f %10.2f %10.2f"
|
||||
q
|
||||
f
|
||||
p
|
||||
e)))))
|
||||
|
||||
; Generate fibonacci results
|
||||
(def fib (lazy-cat [0N 1N] (map + fib (rest fib))))
|
||||
|
||||
;(def fib-digits (map (comp first str) (take 10000 fib)))
|
||||
(def fib-digits (take 10000 fib))
|
||||
(def header " found-% expected-% diff")
|
||||
|
||||
(println "Fibonacci Results")
|
||||
(println header)
|
||||
(show-benford-stats fib-digits)
|
||||
;
|
||||
; Universal Constants from Physics (using first column of data)
|
||||
(println "Universal Constants from Physics")
|
||||
(println header)
|
||||
(let [
|
||||
data-parser (fn [s]
|
||||
(let [x (re-find #"\s{10}-?[0|/\.]*([1-9])" s)]
|
||||
(if (not (nil? x)) ; Skips records without number
|
||||
(second x)
|
||||
x)))
|
||||
|
||||
input (slurp "http://physics.nist.gov/cuu/Constants/Table/allascii.txt")
|
||||
|
||||
y (for [line (line-seq (java.io.BufferedReader.
|
||||
(java.io.StringReader. input)))]
|
||||
(data-parser line))
|
||||
z (filter identity y)]
|
||||
(show-benford-stats z))
|
||||
|
||||
; Sunspots
|
||||
(println "Sunspots average count per month since 1749")
|
||||
(println header)
|
||||
(let [
|
||||
data-parser (fn [s]
|
||||
(nth (re-find #"(.+?\s){3}([1-9])" s) 2))
|
||||
|
||||
; Sunspot data loaded from file (saved from ;https://solarscience.msfc.nasa.gov/greenwch/SN_m_tot_V2.0.txt")
|
||||
; (note: attempting to load directly from url causes https Trust issues, so saved to file after loading to Browser)
|
||||
input (slurp "SN_m_tot_V2.0.txt")
|
||||
y (for [line (line-seq (java.io.BufferedReader.
|
||||
(java.io.StringReader. input)))]
|
||||
(data-parser line))]
|
||||
|
||||
(show-benford-stats y))
|
||||
Loading…
Add table
Add a link
Reference in a new issue