Advertisement
Guest User

Untitled

a guest
Apr 30th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Racket 1.74 KB | None | 0 0
  1. #lang racket
  2.  
  3.  
  4. (define (findoutlier data)
  5.   (define found #f)
  6.   (for ([i data])
  7.     (cond
  8.       [(outlier i (mean data) (std. data)) (set! found #t)]))
  9.   found
  10.   )
  11.  
  12.  
  13. (define (outlier observation mean stdev)
  14.   (or (> (- mean (* (iqr stdev) 1.5)) observation) (< (+ mean (* (iqr stdev) 1.5)) observation))
  15.   )
  16.  
  17.  
  18. (define (iqr stdev)
  19.   (* (* stdev 0.674) 2)
  20.   )
  21.  
  22.  
  23. (define (zscore observed mean stdev)
  24.    (/ (- observed mean) stdev)
  25.    )
  26.  
  27.  
  28. (define (mean numbers)
  29.   (define sum 0)
  30.   (for ((x numbers)) (set! sum (+ x sum)))
  31.   (/ sum (length numbers))
  32.   )
  33.  
  34.  
  35. (define (std. numbers)
  36.   (define center (mean numbers))
  37.   (define sum 0)
  38.   (for ((x numbers))
  39.     (set! sum (+ sum (expt (- x center) 2)))
  40.     )
  41.   (expt (/ sum (- (length numbers) 1)) (/ 1 2))
  42.   )
  43.  
  44.  
  45. (define (correlation list1 list2)
  46.  
  47.   (define mean1 (mean list1))
  48.   (define mean2 (mean list2))
  49.   (define ldevs1 (for/list ((x list1)) (- x mean1)))
  50.   (define ldevs2 (for/list ((x list2)) (- x mean2)))
  51.  
  52.   (define numerator 0)
  53.   (for ((x (length list1))) (set! numerator (+ numerator (* (list-ref ldevs1 x) (list-ref ldevs2 x)) ) ))
  54.  
  55.   (define sqsums1 0)
  56.   (define sqsums2 0)
  57.   (for (( x ldevs1)) (set! sqsums1 (+ sqsums1 (expt x 2))))
  58.   (for (( x ldevs2)) (set! sqsums2 (+ sqsums2 (expt x 2))))
  59.   (define denominator (expt (* sqsums1 sqsums2) (/ 1 2)))
  60.  
  61.   (/ numerator denominator)
  62.  
  63.   )
  64.  
  65. (define (logorithm x y) (/ (log y) (log x)))
  66.  
  67. (define (linreg list1 list2)
  68.  
  69.   (define mean1 (mean list1))
  70.   (define mean2 (mean list2))
  71.   (define std1 (std. list1))
  72.   (define std2 (std. list2))
  73.   (define r (correlation list1 list2))
  74.  
  75.   (define slope (/ (* r std2) std1))
  76.   (define intercept (- mean2 (* slope mean1)))
  77.  
  78.   (list intercept slope)
  79.  
  80.   )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement