3 ;;; Time-stamp: <2009-04-16 17:21:52 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
23 (defpackage :lisp-stat-object-system
24 (:nicknames
:ls-objects
:lsos
)
26 (:shadow
:call-method
:call-next-method
)
27 (:export ls-object objectp
*object
* kind-of-p make-object
29 *set-slot-hook
* proto-slot-value self
30 send call-next-method call-method
31 defmeth defproto instance-slots proto-name
))
33 (defpackage :lisp-stat-types
34 (:documentation
"Provides some typeing for LispStat, but is clearly
38 check-nonneg-fixnum check-one-nonneg-fixnum
39 check-one-fixnum check-one-real check-one-number
))
41 (defpackage :lisp-stat-float
43 (:export
+stat-float-typing
+ +stat-cfloat-typing
+ +stat-float-template
+
44 machine-epsilon base-float makedouble
46 make-base-trans-fun-2 make-base-trans-fun
48 base-log base-exp base-expt base-sqrt base-sin base-cos
49 base-tan base-asin base-acos base-atan base-sinh
50 BASE-COSH BASE-TANH BASE-ASINH BASE-ACOSH BASE-ATANH
51 BASE-ABS BASE-PHASE BASE-FFLOOR BASE-FCEILING BASE-FTRUNCATE
52 BASE-FROUND BASE-SIGNUM BASE-CIS
))
54 (defpackage :lisp-stat-compound-data
56 :lisp-stat-object-system
58 (: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 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
113 (defpackage :lisp-stat-dataframe
117 ;; generic container class for data -- if small enough
118 ;; could be value, otherwise might be reference.
124 varlabels caselabels nrows ncols
125 dataframe-dimension dataframe-dimensons
126 dfref dfref-case dfref-var
127 consistent-dataframe-p
130 list-of-columns
;; list-of-variables
131 list-of-rows
;; list-of-observations
135 (defpackage :cls-data-listoflist
138 :lisp-stat-dataframe
) ; for dataframe
139 (:export lists-of-same-size
142 listoflist-
>dataframe
144 listoflist-
>matrix-like
))
146 (defpackage :lisp-stat-model
147 (:documentation
"Model management for data analysis.")
151 ;; data structures for model and model/data combination
152 model statistical-model analysis
))
155 (defpackage :lisp-stat-regression-linear-clos
158 :lisp-stat-dataframe
)
159 (:export regression-model
))
162 (defpackage :lisp-stat-visualize
165 :lisp-stat-dataframe
))
167 (defpackage :lisp-stat-visualize-plplot
182 (defpackage :lisp-stat-ffi-int
185 (:export ccl-store-integer ccl-store-double ccl-store-ptr
188 (defpackage :lisp-stat-probability
193 (:export log-gamma set-seed
195 normal-cdf normal-quant normal-dens normal-rand
197 cauchy-cdf cauchy-quant cauchy-dens cauchy-rand
198 gamma-cdf gamma-quant gamma-dens gamma-rand
199 chisq-cdf chisq-quant chisq-dens chisq-rand
200 beta-cdf beta-quant beta-dens beta-rand
201 t-cdf t-quant t-dens t-rand
202 f-cdf f-quant f-dens f-rand
203 poisson-cdf poisson-quant poisson-pmf poisson-rand
204 binomial-cdf binomial-quant binomial-pmf binomial-rand
))
208 (defpackage :lisp-stat-math
210 :lisp-stat-object-system
212 :lisp-stat-compound-data
214 (:shadowing-import-from
:lisp-stat-object-system
215 call-method call-next-method
)
216 (:shadow expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
217 asin acos atan sinh cosh tanh asinh acosh atanh float random
218 truncate floor ceiling round minusp zerop plusp evenp oddp
219 < <= = /= >= > ;; complex
220 conjugate realpart imagpart phase
221 min max logand logior logxor lognot ffloor fceiling
222 ftruncate fround signum cis
)
223 (:export ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
224 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
225 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
227 conjugate realpart imagpart phase min max
228 logand logior logxor lognot ffloor fceiling ftruncate fround
230 (:documentation
"Vectorization of numerical functions"))
233 #|
;; some of this goes back in, but not all of it?
234 (defpackage :lisp-stat-linalg
241 :lisp-stat-compound-data
)
242 (:shadowing-import-from
:lisp-stat-math
243 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
244 asin acos atan sinh cosh tanh asinh acosh atanh float random
245 truncate floor ceiling round minusp zerop plusp evenp oddp
246 < <= = /= >= > complex conjugate realpart imagpart phase
247 min max logand logior logxor lognot ffloor fceiling
248 ftruncate fround signum cis
)
249 (:export chol-decomp lu-decomp lu-solve determinant inverse
250 sv-decomp qr-decomp rcondest make-rotation spline
251 kernel-dens kernel-smooth
252 fft make-sweep-matrix sweep-operator ax
+y eigen
254 check-real
;; for optimize
256 covariance-matrix matrix print-matrix solve
257 backsolve eigenvalues eigenvectors accumulate cumsum combine
265 (defpackage :lisp-stat-data
266 (:documentation
"Data management, integration, I/O, and other data technologies.")
267 (:nicknames
:ls-data
)
269 :lisp-stat-object-system
272 :lisp-stat-compound-data
)
273 (:shadowing-import-from
:lisp-stat-object-system
274 call-method call-next-method
)
275 (:export open-file-dialog read-data-file read-data-columns load-data
276 load-example
*variables
* *ask-on-redefine
*
277 def variables savevar undef
))
279 (defpackage :lisp-stat-descriptive-statistics
283 :lisp-stat-compound-data
286 (:shadowing-import-from
:lisp-stat-math
;; life is a vector!
287 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
288 asin acos atan sinh cosh tanh asinh acosh atanh float random
289 truncate floor ceiling round minusp zerop plusp evenp oddp
290 < <= = /= >= > ;; complex
291 conjugate realpart imagpart phase
292 min max logand logior logxor lognot ffloor fceiling
293 ftruncate fround signum cis
)
294 (:export standard-deviation
295 quantile median interquartile-range
299 (defpackage :lisp-stat-regression-linear
302 :lisp-stat-object-system
304 :lisp-stat-compound-data
305 :lisp-stat-descriptive-statistics
)
306 (:shadowing-import-from
:lisp-stat-object-system
307 call-method call-next-method
)
308 (:export regression-model fit-model
310 estimates covariance-matrix
311 ;; functions for helpers
313 print-object
;; for method dispatch
317 regression-model-proto x y intercept
319 basis weights included
320 total-sum-of-squares residual-sum-of-squares
321 predictor-names response-name case-labels
324 (defpackage :lisp-stat
325 (:documentation
"Experimentation package for LispStat. Serious
326 work should be packaged up elsewhere for reproducibility. By this
327 I mean, creating a data/analytics/analysis package with the
328 minimal set of objects required.")
330 :lisp-stat-object-system
331 :lisp-stat-compound-data
332 :lisp-stat-probability
340 :lisp-matrix
;; conversion to a more robust linalg approach
341 :lisp-stat-descriptive-statistics
342 :lisp-stat-regression-linear
344 (:shadowing-import-from
:lisp-stat-object-system
345 call-method call-next-method
)
346 (:shadowing-import-from
:lisp-stat-math
347 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
348 asin acos atan sinh cosh tanh asinh acosh atanh float random
349 truncate floor ceiling round minusp zerop plusp evenp oddp
352 conjugate realpart imagpart phase
355 logand logior logxor lognot
356 ffloor fceiling ftruncate fround
365 fixnump check-nonneg-fixnum check-one-fixnum
366 check-one-nonneg-fixnum
367 check-one-real check-one-number
375 compound-data-p
*compound-data-proto
* compound-object-p
376 compound-data-seq compound-data-length
377 element-list element-seq
379 recursive-map-elements map-elements
382 get-next-element make-next-element set-next-element
390 ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
391 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
392 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
394 conjugate realpart imagpart phase min max
395 logand logior logxor lognot ffloor fceiling ftruncate fround
398 #|
;; The following need to be re-found in lisp-matrix...
401 matrixp num-rows num-cols matmult identity-matrix diagonal row-list
402 column-list inner-product outer-product cross-product transpose
403 bind-columns bind-rows
406 chol-decomp lu-decomp lu-solve determinant inverse
407 sv-decomp qr-decomp rcondest make-rotation spline
408 kernel-dens kernel-smooth
409 fft make-sweep-matrix sweep-operator ax
+y eigen
411 covariance-matrix matrix print-matrix solve
412 backsolve eigenvalues eigenvectors accumulate cumsum combine
415 ;; in linalg.lisp, possibly not supported by matlisp
416 spline kernel-dens kernel-smooth
424 make-rv-function make-rv-function-1
427 open-file-dialog read-data-file read-data-columns load-data
428 load-example
*variables
* *ask-on-redefine
*
429 def variables savevar undef
432 dataframe-like dataframe-array make-dataframe
433 varlabels caselabels nrows ncols
434 dataframe-dimension dataframe-dimensons
435 dfref dfref-case dfref-var
436 consistent-dataframe-p
438 list-of-columns list-of-rows
441 lists-of-same-size equal-listoflist
443 listoflist-
>dataframe listoflist-
>array listoflist-
>matrix-like
445 ;; statistics.lsp (descriptions, should probably be moved
447 standard-deviation quantile median interquartile-range
450 ;; probability (dists.lisp)
452 uniform-rand normal-cdf normal-quant normal-dens
453 normal-rand bivnorm-cdf cauchy-cdf cauchy-quant cauchy-dens
454 cauchy-rand gamma-cdf gamma-quant gamma-dens gamma-rand
455 chisq-cdf chisq-quant chisq-dens chisq-rand beta-cdf beta-quant
456 beta-dens beta-rand t-cdf t-quant t-dens t-rand f-cdf f-quant
457 f-dens f-rand poisson-cdf poisson-quant poisson-pmf poisson-rand
458 binomial-cdf binomial-quant binomial-pmf binomial-rand
460 ;; Here is where we have a problem -- lispstat core should be core
461 ;; data management and config problems, with packages providing
462 ;; specialized extensions to LispStat, i.e. regression, nonlin
463 ;; regression, bayesian regression via laplace approximation, etc.
465 ;; The following could be considered "recommended packages",
466 ;; similar to the idea of the recommended packages in R. Probably
467 ;; we want them to do the exporting within that package, therefore
468 ;; NOT being able to lock the "data-ish" package, but only the
469 ;; subpackages prior to export.
472 ;; -- linear regressin models.
473 regression-model fit-model
474 estimates covariance-matrix
476 regression-model-proto x y intercept sweep-matrix
477 basis weights included total-sum-of-squares residual-sum-of-squares
478 predictor-names response-name case-labels
482 ;; -- nonlinear regression models
483 nreg-model nreg-model-proto mean-function theta-hat epsilon
485 ;; we might need something like xtxinv here? But should be
486 ;; encapsulated, so we use the one in regression.lisp
489 bayes-model bayes-model-proto bayes-internals
502 ;;;; PACKAGES FOR USEABILITY
504 (defpackage :lisp-stat-data-examples
505 (:documentation
"Example data for unittests, examples, illustrations,")
508 (:shadowing-import-from
:lisp-stat
509 call-method call-next-method
511 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
512 asin acos atan sinh cosh tanh asinh acosh atanh float random
513 truncate floor ceiling round minusp zerop plusp evenp oddp
514 < <= = /= >= > > ;; complex
515 conjugate realpart imagpart phase
516 min max logand logior logxor lognot ffloor fceiling
517 ftruncate fround signum cis
520 (:export iron aluminum absorbtion
524 (defpackage :lisp-stat-user
525 (:documentation
"Experimentation package for LispStat.
526 Serious work should be placed in a similar package elsewhere for
527 reproducibility. But this should hint as to what needs to be
528 done for a user- or analysis-package.")
529 (:nicknames
:ls-user
)
533 :lisp-stat-data-examples
) ;; this last is to have 'things to play with'
534 (:shadowing-import-from
:lisp-stat
535 call-method call-next-method
537 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
538 asin acos atan sinh cosh tanh asinh acosh atanh float random
539 truncate floor ceiling round minusp zerop plusp evenp oddp
540 < <= = /= >= > > ;; complex
541 conjugate realpart imagpart phase
542 min max logand logior logxor lognot ffloor fceiling
543 ftruncate fround signum cis
547 (defpackage :lisp-stat-unittests
550 :lisp-stat
:lisp-stat-data-examples
)
551 (:shadowing-import-from
:lisp-stat
552 call-method call-next-method
;; objects
553 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
;; lsmath
554 asin acos atan sinh cosh tanh asinh acosh atanh float random
555 truncate floor ceiling round minusp zerop plusp evenp oddp
556 < <= = /= >= > ;; complex
557 conjugate realpart imagpart phase
558 min max logand logior logxor lognot ffloor fceiling
559 ftruncate fround signum cis
)
560 (:export run-lisp-stat-tests run-lisp-stat-test scoreboard
; exec
561 almost
= almost
=lists numerical
=)) ; compare
563 (defpackage :lisp-stat-dataframe-example
565 :lift
:lisp-stat-unittests
566 :lisp-stat-data-examples
567 :lisp-stat-dataframe
)
568 (:export absorbtion aluminum iron
))
571 (defpackage :lisp-stat-optimize
576 :lisp-stat-object-system
578 :lisp-stat-compound-data
584 :lisp-stat-linalg-data
588 (:shadowing-import-from
:lisp-stat-object-system
589 call-method call-next-method
)
590 (:shadowing-import-from
:lisp-stat-math
591 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
592 asin acos atan sinh cosh tanh asinh acosh atanh float random
593 truncate floor ceiling round minusp zerop plusp evenp oddp
594 < <= = /= >= > complex conjugate realpart imagpart phase
595 min max logand logior logxor lognot ffloor fceiling
596 ftruncate fround signum cis
)
602 newtonmax nelmeadmax
))