Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns tmath)
- (defn sum [list]
- (reduce + list)
- )
- (defn mean [list]
- (/ (sum list) (count list))
- )
- (defn prodsum [data]
- (cond
- (empty? data) 0
- :else (+
- (reduce * (first data))
- (prodsum (rest data))
- )
- )
- )
- (defn expsum [list]
- (sum (map * list list))
- )
- (defn nexpsum [data position]
- (-
- (*
- (count data)
- (expsum (map position data))
- )
- (Math/pow (sum (map position data)) 2)
- )
- )
- (defn nprodsum [data]
- (*
- (count data)
- (prodsum data)
- )
- )
- (defn pearson [data]
- (/
- (-
- (nprodsum data)
- (*
- (sum (map first data))
- (sum (map last data))
- )
- )
- (Math/sqrt
- (*
- (nexpsum data first)
- (nexpsum data last)
- )
- )
- )
- )
- (defn dev [n mean]
- (Math/pow (- n mean) 2)
- )
- (defn stddev [list]
- (Math/sqrt
- (*
- (/
- 1
- (count list)
- )
- (sum (map dev list (repeat (count list) (mean list))))
- )
- )
- )
- (defn slope [data]
- (*
- (pearson data)
- (/
- (stddev (map last data))
- (stddev (map first data))
- )
- )
- )
- (defn yintercept [data]
- (-
- (mean (map last data))
- (* (slope data) (mean (map first data)))
- )
- )
- (defn lreg [data]
- (str "f(x) = " (slope data) "x + " (yintercept data))
- )
- (lreg [
- [ 3.385 44.500]
- [ 0.480 15.500]
- [ 1.350 8.100]
- [ 465.000 423.000]
- [ 36.330 119.500]
- [ 27.660 115.000]
- [ 14.830 98.200]
- [ 1.040 5.500]
- [ 4.190 58.000]
- [ 0.425 6.400]
- [ 0.101 4.000]
- [ 0.920 5.700]
- [ 1.000 6.600]
- [ 0.005 0.140]
- [ 0.060 1.000]
- [ 3.500 10.800]
- [ 2.000 12.300]
- [ 1.700 6.300]
- [ 2547.000 4603.000]
- [ 0.023 0.300]
- [ 187.100 419.000]
- [ 521.000 655.000]
- [ 0.785 3.500]
- [ 10.000 115.000]
- [ 3.300 25.600]
- [ 0.200 5.000]
- [ 1.410 17.500]
- [ 529.000 680.000]
- [ 207.000 406.000]
- [ 85.000 325.000]
- [ 0.750 12.300]
- [ 62.000 1320.000]
- [ 6654.000 5712.000]
- [ 3.500 3.900]
- [ 6.800 179.000]
- [ 35.000 56.000]
- [ 4.050 17.000]
- [ 0.120 1.000]
- [ 0.023 0.400]
- [ 0.010 0.250]
- [ 1.400 12.500]
- [ 250.000 490.000]
- [ 2.500 12.100]
- [ 55.500 175.000]
- [ 100.000 157.000]
- [ 52.160 440.000]
- [ 10.550 179.500]
- [ 0.550 2.400]
- [ 60.000 81.000]
- [ 3.600 21.000]
- [ 4.288 39.200]
- [ 0.280 1.900]
- [ 0.075 1.200]
- [ 0.122 3.000]
- [ 0.048 0.330]
- [ 192.000 180.000]
- [ 3.000 25.000]
- [ 160.000 169.000]
- [ 0.900 2.600]
- [ 1.620 11.400]
- [ 0.104 2.500]
- [ 4.235 50.400]
- ])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement