Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (define (findoutlier data)
- (define found #f)
- (for ([i data])
- (cond
- [(outlier i (mean data) (std. data)) (set! found #t)]))
- found
- )
- (define (outlier observation mean stdev)
- (or (> (- mean (* (iqr stdev) 1.5)) observation) (< (+ mean (* (iqr stdev) 1.5)) observation))
- )
- (define (iqr stdev)
- (* (* stdev 0.674) 2)
- )
- (define (zscore observed mean stdev)
- (/ (- observed mean) stdev)
- )
- (define (mean numbers)
- (define sum 0)
- (for ((x numbers)) (set! sum (+ x sum)))
- (/ sum (length numbers))
- )
- (define (std. numbers)
- (define center (mean numbers))
- (define sum 0)
- (for ((x numbers))
- (set! sum (+ sum (expt (- x center) 2)))
- )
- (expt (/ sum (- (length numbers) 1)) (/ 1 2))
- )
- (define (correlation list1 list2)
- (define mean1 (mean list1))
- (define mean2 (mean list2))
- (define ldevs1 (for/list ((x list1)) (- x mean1)))
- (define ldevs2 (for/list ((x list2)) (- x mean2)))
- (define numerator 0)
- (for ((x (length list1))) (set! numerator (+ numerator (* (list-ref ldevs1 x) (list-ref ldevs2 x)) ) ))
- (define sqsums1 0)
- (define sqsums2 0)
- (for (( x ldevs1)) (set! sqsums1 (+ sqsums1 (expt x 2))))
- (for (( x ldevs2)) (set! sqsums2 (+ sqsums2 (expt x 2))))
- (define denominator (expt (* sqsums1 sqsums2) (/ 1 2)))
- (/ numerator denominator)
- )
- (define (logorithm x y) (/ (log y) (log x)))
- (define (linreg list1 list2)
- (define mean1 (mean list1))
- (define mean2 (mean list2))
- (define std1 (std. list1))
- (define std2 (std. list2))
- (define r (correlation list1 list2))
- (define slope (/ (* r std2) std1))
- (define intercept (- mean2 (* slope mean1)))
- (list intercept slope)
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement