3 ;;; Time-stamp: <2009-04-15 08:47:26 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
339 :lisp-matrix
;; conversion to a more robust linalg approach
340 :lisp-stat-descriptive-statistics
341 :lisp-stat-regression-linear
343 (:shadowing-import-from
:lisp-stat-object-system
344 call-method call-next-method
)
345 (:shadowing-import-from
:lisp-stat-math
346 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
347 asin acos atan sinh cosh tanh asinh acosh atanh float random
348 truncate floor ceiling round minusp zerop plusp evenp oddp
351 conjugate realpart imagpart phase
354 logand logior logxor lognot
355 ffloor fceiling ftruncate fround
364 fixnump check-nonneg-fixnum check-one-fixnum
365 check-one-nonneg-fixnum
366 check-one-real check-one-number
374 compound-data-p
*compound-data-proto
* compound-object-p
375 compound-data-seq compound-data-length
376 element-list element-seq
378 recursive-map-elements map-elements
381 get-next-element make-next-element set-next-element
389 ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
390 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
391 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
393 conjugate realpart imagpart phase min max
394 logand logior logxor lognot ffloor fceiling ftruncate fround
397 #|
;; The following need to be re-found in lisp-matrix...
400 matrixp num-rows num-cols matmult identity-matrix diagonal row-list
401 column-list inner-product outer-product cross-product transpose
402 bind-columns bind-rows
405 chol-decomp lu-decomp lu-solve determinant inverse
406 sv-decomp qr-decomp rcondest make-rotation spline
407 kernel-dens kernel-smooth
408 fft make-sweep-matrix sweep-operator ax
+y eigen
410 covariance-matrix matrix print-matrix solve
411 backsolve eigenvalues eigenvectors accumulate cumsum combine
414 ;; in linalg.lisp, possibly not supported by matlisp
415 spline kernel-dens kernel-smooth
423 make-rv-function make-rv-function-1
426 open-file-dialog read-data-file read-data-columns load-data
427 load-example
*variables
* *ask-on-redefine
*
428 def variables savevar undef
431 dataframe-like dataframe-array make-dataframe
432 varlabels caselabels nrows ncols
433 dataframe-dimension dataframe-dimensons
434 dfref dfref-case dfref-var
435 consistent-dataframe-p
437 list-of-columns list-of-rows
440 lists-of-same-size equal-listoflist
442 listoflist-
>dataframe listoflist-
>array listoflist-
>matrix-like
444 ;; statistics.lsp (descriptions, should probably be moved
446 standard-deviation quantile median interquartile-range
449 ;; probability (dists.lisp)
451 uniform-rand normal-cdf normal-quant normal-dens
452 normal-rand bivnorm-cdf cauchy-cdf cauchy-quant cauchy-dens
453 cauchy-rand gamma-cdf gamma-quant gamma-dens gamma-rand
454 chisq-cdf chisq-quant chisq-dens chisq-rand beta-cdf beta-quant
455 beta-dens beta-rand t-cdf t-quant t-dens t-rand f-cdf f-quant
456 f-dens f-rand poisson-cdf poisson-quant poisson-pmf poisson-rand
457 binomial-cdf binomial-quant binomial-pmf binomial-rand
459 ;; Here is where we have a problem -- lispstat core should be core
460 ;; data management and config problems, with packages providing
461 ;; specialized extensions to LispStat, i.e. regression, nonlin
462 ;; regression, bayesian regression via laplace approximation, etc.
464 ;; The following could be considered "recommended packages",
465 ;; similar to the idea of the recommended packages in R. Probably
466 ;; we want them to do the exporting within that package, therefore
467 ;; NOT being able to lock the "data-ish" package, but only the
468 ;; subpackages prior to export.
471 ;; -- linear regressin models.
472 regression-model fit-model
473 estimates covariance-matrix
475 regression-model-proto x y intercept sweep-matrix
476 basis weights included total-sum-of-squares residual-sum-of-squares
477 predictor-names response-name case-labels
481 ;; -- nonlinear regression models
482 nreg-model nreg-model-proto mean-function theta-hat epsilon
484 ;; we might need something like xtxinv here? But should be
485 ;; encapsulated, so we use the one in regression.lisp
488 bayes-model bayes-model-proto bayes-internals
501 ;;;; PACKAGES FOR USEABILITY
503 (defpackage :lisp-stat-data-examples
504 (:documentation
"Example data for unittests, examples, illustrations,")
507 (:shadowing-import-from
:lisp-stat
508 call-method call-next-method
510 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
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
519 (:export iron aluminum absorbtion
523 (defpackage :lisp-stat-user
524 (:documentation
"Experimentation package for LispStat.
525 Serious work should be placed in a similar package elsewhere for
526 reproducibility. But this should hint as to what needs to be
527 done for a user- or analysis-package.")
528 (:nicknames
:ls-user
)
532 :lisp-stat-data-examples
) ;; this last is to have 'things to play with'
533 (:shadowing-import-from
:lisp-stat
534 call-method call-next-method
536 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
537 asin acos atan sinh cosh tanh asinh acosh atanh float random
538 truncate floor ceiling round minusp zerop plusp evenp oddp
539 < <= = /= >= > > ;; complex
540 conjugate realpart imagpart phase
541 min max logand logior logxor lognot ffloor fceiling
542 ftruncate fround signum cis
546 (defpackage :lisp-stat-unittests
549 :lisp-stat
:lisp-stat-data-examples
)
550 (:shadowing-import-from
:lisp-stat
551 call-method call-next-method
;; objects
552 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
;; lsmath
553 asin acos atan sinh cosh tanh asinh acosh atanh float random
554 truncate floor ceiling round minusp zerop plusp evenp oddp
555 < <= = /= >= > ;; complex
556 conjugate realpart imagpart phase
557 min max logand logior logxor lognot ffloor fceiling
558 ftruncate fround signum cis
)
559 (:export run-lisp-stat-tests run-lisp-stat-test scoreboard
; exec
560 almost
= almost
=lists numerical
=)) ; compare
562 (defpackage :lisp-stat-dataframe-example
564 :lift
:lisp-stat-unittests
565 :lisp-stat-data-examples
566 :lisp-stat-dataframe
)
567 (:export absorbtion aluminum iron
))
570 (defpackage :lisp-stat-optimize
575 :lisp-stat-object-system
577 :lisp-stat-compound-data
583 :lisp-stat-linalg-data
587 (:shadowing-import-from
:lisp-stat-object-system
588 call-method call-next-method
)
589 (:shadowing-import-from
:lisp-stat-math
590 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
591 asin acos atan sinh cosh tanh asinh acosh atanh float random
592 truncate floor ceiling round minusp zerop plusp evenp oddp
593 < <= = /= >= > complex conjugate realpart imagpart phase
594 min max logand logior logxor lognot ffloor fceiling
595 ftruncate fround signum cis
)
601 newtonmax nelmeadmax
))