3 ;;; Time-stamp: <2009-03-10 08:43:49 tony>
4 ;;; Creation: <2008-03-11 19:18:34 user>
5 ;;; File: packages.lisp
6 ;;; Author: AJ Rossini <blindglobe@gmail.com>
7 ;;; Copyright: (c)2007--2008, AJ Rossini. BSD, LLGPL, or GPLv2, depending
9 ;;; Purpose: package structure description for lispstat
11 ;;; What is this talk of 'release'? Klingons do not make software
12 ;;; 'releases'. Our software 'escapes', leaving a bloody trail of
13 ;;; designers and quality assurance people in its wake.
15 ;;; This organization and structure is new to the 21st Century
22 (defpackage :lisp-stat-object-system
23 (:nicknames
:ls-objects
:lsos
)
25 (:shadow
:call-method
:call-next-method
:slot-value
)
26 (:export ls-object objectp
*object
* kind-of-p make-object
28 *set-slot-hook
* slot-value self
29 send call-next-method call-method
30 defmeth defproto instance-slots proto-name
))
32 (defpackage :lisp-stat-types
33 (:documentation
"Provides some typeing for LispStat, but is clearly
37 check-nonneg-fixnum check-one-nonneg-fixnum
38 check-one-fixnum check-one-real check-one-number
))
40 (defpackage :lisp-stat-float
42 (:export
+stat-float-typing
+ +stat-cfloat-typing
+ +stat-float-template
+
43 machine-epsilon base-float makedouble
45 make-base-trans-fun-2 make-base-trans-fun
47 base-log base-exp base-expt base-sqrt base-sin base-cos
48 base-tan base-asin base-acos base-atan base-sinh
49 BASE-COSH BASE-TANH BASE-ASINH BASE-ACOSH BASE-ATANH
50 BASE-ABS BASE-PHASE BASE-FFLOOR BASE-FCEILING BASE-FTRUNCATE
51 BASE-FROUND BASE-SIGNUM BASE-CIS
))
53 (defpackage :lisp-stat-compound-data
55 :lisp-stat-object-system
57 (:shadowing-import-from
:lisp-stat-object-system
59 call-next-method call-method
)
60 (:export compound-data-p
*compound-data-proto
*
62 compound-data-seq compound-data-length
63 element-list element-seq
65 recursive-map-elements map-elements repeat
67 get-next-element make-next-element set-next-element
70 select split-list which
74 (defpackage :lisp-stat-macros
76 :lisp-stat-compound-data
)
77 (:export make-rv-function make-rv-function-1
))
79 (defpackage :lisp-stat-basics
81 :lisp-stat-object-system
85 :lisp-stat-compound-data
)
86 (:shadowing-import-from
:lisp-stat-object-system
87 slot-value call-method call-next-method
)
88 (:export permute-array sum prod count-elements mean
91 (defpackage :lisp-stat-float
93 (:export
+stat-float-typing
+ +stat-cfloat-typing
+ +stat-float-template
+
94 machine-epsilon base-float makedouble
96 make-base-trans-fun-2 make-base-trans-fun
98 BASE-LOG BASE-EXP BASE-EXPT BASE-SQRT BASE-SIN BASE-COS
99 BASE-TAN BASE-ASIN BASE-ACOS BASE-ATAN BASE-SINH
100 BASE-COSH BASE-TANH BASE-ASINH BASE-ACOSH BASE-ATANH
101 BASE-ABS BASE-PHASE BASE-FFLOOR BASE-FCEILING BASE-FTRUNCATE
102 BASE-FROUND BASE-SIGNUM BASE-CIS
))
104 (defpackage :lisp-stat-macros
106 :lisp-stat-compound-data
)
107 (:export make-rv-function make-rv-function-1
))
109 ;;; NEW CLOS STRUCTURE
111 (defpackage :lisp-stat-data-clos
114 (:export get-variable-matrix get-variable-vector
115 ;; generic container class for data -- if small enough
116 ;; could be value, otherwise might be reference.
120 (defpackage :lisp-stat-regression-linear-clos
123 :lisp-stat-data-clos
)
124 (:export regression-model
))
130 (defpackage :lisp-stat-ffi-int
133 (:export ccl-store-integer ccl-store-double ccl-store-ptr
136 (defpackage :lisp-stat-probability
141 (:export log-gamma set-seed
143 normal-cdf normal-quant normal-dens normal-rand
145 cauchy-cdf cauchy-quant cauchy-dens cauchy-rand
146 gamma-cdf gamma-quant gamma-dens gamma-rand
147 chisq-cdf chisq-quant chisq-dens chisq-rand
148 beta-cdf beta-quant beta-dens beta-rand
149 t-cdf t-quant t-dens t-rand
150 f-cdf f-quant f-dens f-rand
151 poisson-cdf poisson-quant poisson-pmf poisson-rand
152 binomial-cdf binomial-quant binomial-pmf binomial-rand
))
155 #| removed
, replace by lisp-matrix
156 (defpackage :lisp-stat-matrix
159 :lisp-stat-compound-data
)
160 (:export matrixp
;; matrix -- conflicts!
161 num-rows num-cols matmult identity-matrix diagonal
162 row-list column-list inner-product outer-product
164 ;; transpose bind-columns bind-rows
165 array-data-vector vector-to-array
167 check-matrix check-square-matrix
169 copy-array copy-vector
173 #| replaced by lisp-matrix
174 (defpackage :lisp-stat-linalg-data
179 :lisp-stat-compound-data
181 (:export
;; more to add
182 +mode-in
+ +mode-re
+ +mode-cx
+ mode-of
184 la-data-mode la-allocate la-free
186 la-get-double la-put-double
189 la-matrix la-free-matrix la-matrix-to-data la-data-to-matrix
190 la-vector la-free-vector la-vector-to-data la-data-to-vector
))
193 (defpackage :lisp-stat-math
195 :lisp-stat-object-system
197 :lisp-stat-compound-data
199 (:shadowing-import-from
:lisp-stat-object-system
200 slot-value call-method call-next-method
)
201 (:shadow expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
202 asin acos atan sinh cosh tanh asinh acosh atanh float random
203 truncate floor ceiling round minusp zerop plusp evenp oddp
204 < <= = /= >= > ;; complex
205 conjugate realpart imagpart phase
206 min max logand logior logxor lognot ffloor fceiling
207 ftruncate fround signum cis
)
208 (:export ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
209 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
210 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
212 conjugate realpart imagpart phase min max
213 logand logior logxor lognot ffloor fceiling ftruncate fround
215 (:documentation
"Vectorization of numerical functions"))
218 #|
;; some of this goes back in, but not all of it?
219 (defpackage :lisp-stat-linalg
226 :lisp-stat-compound-data
)
227 (:shadowing-import-from
:lisp-stat-math
228 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
229 asin acos atan sinh cosh tanh asinh acosh atanh float random
230 truncate floor ceiling round minusp zerop plusp evenp oddp
231 < <= = /= >= > complex conjugate realpart imagpart phase
232 min max logand logior logxor lognot ffloor fceiling
233 ftruncate fround signum cis
)
234 (:export chol-decomp lu-decomp lu-solve determinant inverse
235 sv-decomp qr-decomp rcondest make-rotation spline
236 kernel-dens kernel-smooth
237 fft make-sweep-matrix sweep-operator ax
+y eigen
239 check-real
;; for optimize
241 covariance-matrix matrix print-matrix solve
242 backsolve eigenvalues eigenvectors accumulate cumsum combine
250 (defpackage :lisp-stat-data
251 (:documentation
"Data management, integration, I/O, and other data technologies.")
252 (:nicknames
:ls-data
)
254 :lisp-stat-object-system
257 :lisp-stat-compound-data
)
258 (:shadowing-import-from
:lisp-stat-object-system
259 slot-value call-method call-next-method
)
260 (:export open-file-dialog read-data-file read-data-columns load-data
261 load-example
*variables
* *ask-on-redefine
*
262 def variables savevar undef
))
264 (defpackage :lisp-stat-descriptive-statistics
268 :lisp-stat-compound-data
271 (:shadowing-import-from
:lisp-stat-math
;; life is a vector!
272 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
273 asin acos atan sinh cosh tanh asinh acosh atanh float random
274 truncate floor ceiling round minusp zerop plusp evenp oddp
275 < <= = /= >= > ;; complex
276 conjugate realpart imagpart phase
277 min max logand logior logxor lognot ffloor fceiling
278 ftruncate fround signum cis
)
279 (:export standard-deviation
280 quantile median interquartile-range
284 (defpackage :lisp-stat-regression-linear
287 :lisp-stat-object-system
289 :lisp-stat-compound-data
290 :lisp-stat-descriptive-statistics
295 (:shadowing-import-from
:lisp-stat-object-system
296 slot-value call-method call-next-method
)
298 (:shadowing-import-from
:lisp-stat-math
299 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
300 asin acos atan sinh cosh tanh asinh acosh atanh float random
301 truncate floor ceiling round minusp zerop plusp evenp oddp
302 < <= = /= >= > ;; complex
303 conjugate realpart imagpart phase
304 min max logand logior logxor lognot ffloor fceiling
305 ftruncate fround signum cis
)
307 (:export regression-model regression-model-proto x y intercept
309 basis weights included
310 total-sum-of-squares residual-sum-of-squares
311 predictor-names response-name case-labels
312 ;; functions for helpers
315 (defpackage :lisp-stat
316 (:documentation
"Experimentation package for LispStat. Serious
317 work should be packaged up elsewhere for reproducibility. By this
318 I mean, creating a data/analytics/analysis package with the
319 minimal set of objects required.")
321 :lisp-stat-object-system
322 :lisp-stat-compound-data
323 :lisp-stat-probability
329 :lisp-matrix
;; conversion to a more robust linalg approach
330 :lisp-stat-descriptive-statistics
331 :lisp-stat-regression-linear
)
332 (:shadowing-import-from
:lisp-stat-object-system
333 slot-value call-method call-next-method
)
334 (:shadowing-import-from
:lisp-stat-math
335 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
336 asin acos atan sinh cosh tanh asinh acosh atanh float random
337 truncate floor ceiling round minusp zerop plusp evenp oddp
340 conjugate realpart imagpart phase
343 logand logior logxor lognot
344 ffloor fceiling ftruncate fround
352 fixnump check-nonneg-fixnum check-one-fixnum
353 check-one-real check-one-number
361 compound-data-p
*compound-data-proto
* compound-object-p
362 compound-data-seq compound-data-length
363 element-list element-seq
365 recursive-map-elements map-elements
368 get-next-element make-next-element set-next-element
376 ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
377 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
378 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
380 conjugate realpart imagpart phase min max
381 logand logior logxor lognot ffloor fceiling ftruncate fround
384 #|
;; The following need to be re-found in lisp-matrix...
387 matrixp num-rows num-cols matmult identity-matrix diagonal row-list
388 column-list inner-product outer-product cross-product transpose
389 bind-columns bind-rows
392 chol-decomp lu-decomp lu-solve determinant inverse
393 sv-decomp qr-decomp rcondest make-rotation spline
394 kernel-dens kernel-smooth
395 fft make-sweep-matrix sweep-operator ax
+y eigen
397 covariance-matrix matrix print-matrix solve
398 backsolve eigenvalues eigenvectors accumulate cumsum combine
401 ;; in linalg.lisp, possibly not supported by matlisp
402 spline kernel-dens kernel-smooth
410 make-rv-function make-rv-function-1
413 open-file-dialog read-data-file read-data-columns load-data
414 load-example
*variables
* *ask-on-redefine
*
415 def variables savevar undef
417 ;; statistics.lsp (descriptions, should probably be moved
419 standard-deviation quantile median interquartile-range
422 ;; probability (dists.lisp)
424 uniform-rand normal-cdf normal-quant normal-dens
425 normal-rand bivnorm-cdf cauchy-cdf cauchy-quant cauchy-dens
426 cauchy-rand gamma-cdf gamma-quant gamma-dens gamma-rand
427 chisq-cdf chisq-quant chisq-dens chisq-rand beta-cdf beta-quant
428 beta-dens beta-rand t-cdf t-quant t-dens t-rand f-cdf f-quant
429 f-dens f-rand poisson-cdf poisson-quant poisson-pmf poisson-rand
430 binomial-cdf binomial-quant binomial-pmf binomial-rand
432 ;; Here is where we have a problem -- lispstat core should be core
433 ;; data management and config problems, with packages providing
434 ;; specialized extensions to LispStat, i.e. regression, nonlin
435 ;; regression, bayesian regression via laplace approximation, etc.
437 ;; The following could be considered "recommended packages",
438 ;; similar to the idea of the recommended packages in R. Probably
439 ;; we want them to do the exporting within that package, therefore
440 ;; NOT being able to lock the "data-ish" package, but only the
441 ;; subpackages prior to export.
444 ;; -- linear regressin models.
445 regression-model regression-model-proto x y intercept sweep-matrix
446 basis weights included total-sum-of-squares residual-sum-of-squares
447 predictor-names response-name case-labels
451 ;; -- nonlinear regression models
452 nreg-model nreg-model-proto mean-function theta-hat epsilon
454 ;; we might need something like xtxinv here? But should be
455 ;; encapsulated, so we use the one in regression.lisp
458 bayes-model bayes-model-proto bayes-internals
))
461 ;;;; PACKAGES FOR USEABILITY
463 (defpackage :lisp-stat-data-examples
464 (:documentation
"Example data for unittests, examples, illustrations,")
467 (:shadowing-import-from
:lisp-stat
468 slot-value call-method call-next-method
470 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
471 asin acos atan sinh cosh tanh asinh acosh atanh float random
472 truncate floor ceiling round minusp zerop plusp evenp oddp
473 < <= = /= >= > > ;; complex
474 conjugate realpart imagpart phase
475 min max logand logior logxor lognot ffloor fceiling
476 ftruncate fround signum cis
479 (:export iron aluminum absorbtion
483 (defpackage :lisp-stat-user
484 (:documentation
"Experimentation package for LispStat.
485 Serious work should be placed in a similar package elsewhere for
486 reproducibility. But this should hint as to what needs to be
487 done for a user- or analysis-package.")
488 (:nicknames
:ls-user
)
492 :lisp-stat-data-examples
) ;; this last is to have 'things to play with'
493 (:shadowing-import-from
:lisp-stat
494 slot-value call-method call-next-method
496 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
497 asin acos atan sinh cosh tanh asinh acosh atanh float random
498 truncate floor ceiling round minusp zerop plusp evenp oddp
499 < <= = /= >= > > ;; complex
500 conjugate realpart imagpart phase
501 min max logand logior logxor lognot ffloor fceiling
502 ftruncate fround signum cis
506 (defpackage :lisp-stat-unittests
507 (:use
:common-lisp
:lift
:lisp-stat
:lisp-stat-data-examples
)
508 (:shadowing-import-from
:lisp-stat
509 slot-value call-method call-next-method
;; objects
510 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
;; lsmath
511 asin acos atan sinh cosh tanh asinh acosh atanh float random
512 truncate floor ceiling round minusp zerop plusp evenp oddp
513 < <= = /= >= > ;; complex
514 conjugate realpart imagpart phase
515 min max logand logior logxor lognot ffloor fceiling
516 ftruncate fround signum cis
)
517 (:export run-lisp-stat-tests run-lisp-stat-test scoreboard
; exec
518 almost
= almost
=lists numerical
=)) ; compare
520 (defpackage :lisp-stat-data-clos-example
522 :lift
:lisp-stat-unittests
523 :lisp-stat-data-examples
524 :lisp-stat-data-clos
)
525 (:export absorbtion aluminum iron
))
528 (defpackage :lisp-stat-optimize
533 :lisp-stat-object-system
535 :lisp-stat-compound-data
541 :lisp-stat-linalg-data
545 (:shadowing-import-from
:lisp-stat-object-system
546 slot-value call-method call-next-method
)
547 (:shadowing-import-from
:lisp-stat-math
548 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
549 asin acos atan sinh cosh tanh asinh acosh atanh float random
550 truncate floor ceiling round minusp zerop plusp evenp oddp
551 < <= = /= >= > complex conjugate realpart imagpart phase
552 min max logand logior logxor lognot ffloor fceiling
553 ftruncate fround signum cis
)
559 newtonmax nelmeadmax
))