examples/statistics-example.ss
```(require (planet "gaussian.ss" ("williams" "science.plt")
"random-distributions"))
(require (planet "statistics.ss" ("williams" "science.plt")))
(require (planet "math.ss" ("williams" "science.plt")))

(define (naive-sort! data)
(let loop ()
(let ((n (vector-length data))
(sorted? #t))
(do ((i 1 (+ i 1)))
((= i n) data)
(if (< (vector-ref data i)
(vector-ref data (- i 1)))
(let ((t (vector-ref data i)))
(vector-set! data i (vector-ref data (- i 1)))
(vector-set! data (- i 1) t)
(set! sorted? #f))))
(if (not sorted?)
(loop)))))

(let ((data1 (make-vector 1000))
(data2 (make-vector 1000))
(w     (make-vector 1000)))
(do ((i 0 (+ i 1)))
((= i 1000) (void))
;; Random data from unit gaussian
(vector-set! data1 i (random-unit-gaussian))
(vector-set! data2 i (random-unit-gaussian))
;; Cos^2 weighting
(vector-set! w i
(expt (cos (- (* 2.0 pi (/ i 1000.0)) pi)) 2)))
(printf "Statistics Example~n")
(printf "                                mean = ~a~n"
(mean data1))
(printf "                            variance = ~a~n"
(variance data1))
(printf "                  standard deviation = ~a~n"
(standard-deviation data1))
(printf "                   variance from 0.0 = ~a~n"
(variance-with-fixed-mean data1 0.0))
(printf "         standard deviation from 0.0 = ~a~n"
(standard-deviation-with-fixed-mean data1 0.0))
(printf "                  absolute deviation = ~a~n"
(absolute-deviation data1))
(printf "         absolute deviation from 0.0 = ~a~n"
(absolute-deviation data1 0.0))
(printf "                                skew = ~a~n"
(skew data1))
(printf "                            kurtosis = ~a~n"
(kurtosis data1))
(printf "               lag-1 autocorrelation = ~a~n"
(lag-1-autocorrelation data1))
(printf "                          covariance = ~a~n"
(covariance data1 data2))
(printf "                       weighted mean = ~a~n"
(weighted-mean w data1))
(printf "                   weighted variance = ~a~n"
(weighted-variance w data1))
(printf "         weighted standard deviation = ~a~n"
(weighted-standard-deviation w data1))
(printf "          weighted variance from 0.0 = ~a~n"
(weighted-variance-with-fixed-mean w data1 0.0))
(printf "weighted standard deviation from 0.0 = ~a~n"
(weighted-standard-deviation-with-fixed-mean w data1 0.0))
(printf "         weighted absolute deviation = ~a~n"
(weighted-absolute-deviation w data1))
(printf "weighted absolute deviation from 0.0 = ~a~n"
(weighted-absolute-deviation w data1 0.0))
(printf "                       weighted skew = ~a~n"
(weighted-skew w data1))
(printf "                   weighted kurtosis = ~a~n"
(weighted-kurtosis w data1))
(printf "                             maximum = ~a~n"
(maximum data1))
(printf "                             minimum = ~a~n"
(minimum data1))
(printf "              index of maximum value = ~a~n"
(maximum-index data1))
(printf "              index of minimum value = ~a~n"
(minimum-index data1))
(naive-sort! data1)
(printf "                              median = ~a~n"
(median-from-sorted-data data1))
(printf "                        10% quantile = ~a~n"
(quantile-from-sorted-data data1 .1))
(printf "                        20% quantile = ~a~n"
(quantile-from-sorted-data data1 .2))
(printf "                        30% quantile = ~a~n"
(quantile-from-sorted-data data1 .3))
(printf "                        40% quantile = ~a~n"
(quantile-from-sorted-data data1 .4))
(printf "                        50% quantile = ~a~n"
(quantile-from-sorted-data data1 .5))
(printf "                        60% quantile = ~a~n"
(quantile-from-sorted-data data1 .6))
(printf "                        70% quantile = ~a~n"
(quantile-from-sorted-data data1 .7))
(printf "                        80% quantile = ~a~n"
(quantile-from-sorted-data data1 .8))
(printf "                        90% quantile = ~a~n"
(quantile-from-sorted-data data1 .9))
)```