3 ;;; Time-stamp: <2009-03-26 08:18:29 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
113 (defpackage :lisp-stat-data-clos
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
137 :lisp-stat-data-clos
) ; for dataframe
138 (:export lists-of-same-size
141 make-dataframe-from-listoflist
142 make-array-from-listoflist
))
145 (defpackage :lisp-stat-regression-linear-clos
148 :lisp-stat-data-clos
)
149 (:export regression-model
))
152 (defpackage :lisp-stat-visualize
155 :lisp-stat-data-clos
))
157 (defpackage :lisp-stat-visualize-plplot
172 (defpackage :lisp-stat-ffi-int
175 (:export ccl-store-integer ccl-store-double ccl-store-ptr
178 (defpackage :lisp-stat-probability
183 (:export log-gamma set-seed
185 normal-cdf normal-quant normal-dens normal-rand
187 cauchy-cdf cauchy-quant cauchy-dens cauchy-rand
188 gamma-cdf gamma-quant gamma-dens gamma-rand
189 chisq-cdf chisq-quant chisq-dens chisq-rand
190 beta-cdf beta-quant beta-dens beta-rand
191 t-cdf t-quant t-dens t-rand
192 f-cdf f-quant f-dens f-rand
193 poisson-cdf poisson-quant poisson-pmf poisson-rand
194 binomial-cdf binomial-quant binomial-pmf binomial-rand
))
197 #| removed
, replace by lisp-matrix
198 (defpackage :lisp-stat-matrix
201 :lisp-stat-compound-data
)
202 (:export matrixp
;; matrix -- conflicts!
203 num-rows num-cols matmult identity-matrix diagonal
204 row-list column-list inner-product outer-product
206 ;; transpose bind-columns bind-rows
207 array-data-vector vector-to-array
209 check-matrix check-square-matrix
211 copy-array copy-vector
215 #| replaced by lisp-matrix
216 (defpackage :lisp-stat-linalg-data
221 :lisp-stat-compound-data
223 (:export
;; more to add
224 +mode-in
+ +mode-re
+ +mode-cx
+ mode-of
226 la-data-mode la-allocate la-free
228 la-get-double la-put-double
231 la-matrix la-free-matrix la-matrix-to-data la-data-to-matrix
232 la-vector la-free-vector la-vector-to-data la-data-to-vector
))
235 (defpackage :lisp-stat-math
237 :lisp-stat-object-system
239 :lisp-stat-compound-data
241 (:shadowing-import-from
:lisp-stat-object-system
242 slot-value call-method call-next-method
)
243 (:shadow 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
247 conjugate realpart imagpart phase
248 min max logand logior logxor lognot ffloor fceiling
249 ftruncate fround signum cis
)
250 (:export ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
251 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
252 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
254 conjugate realpart imagpart phase min max
255 logand logior logxor lognot ffloor fceiling ftruncate fround
257 (:documentation
"Vectorization of numerical functions"))
260 #|
;; some of this goes back in, but not all of it?
261 (defpackage :lisp-stat-linalg
268 :lisp-stat-compound-data
)
269 (:shadowing-import-from
:lisp-stat-math
270 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
271 asin acos atan sinh cosh tanh asinh acosh atanh float random
272 truncate floor ceiling round minusp zerop plusp evenp oddp
273 < <= = /= >= > complex conjugate realpart imagpart phase
274 min max logand logior logxor lognot ffloor fceiling
275 ftruncate fround signum cis
)
276 (:export chol-decomp lu-decomp lu-solve determinant inverse
277 sv-decomp qr-decomp rcondest make-rotation spline
278 kernel-dens kernel-smooth
279 fft make-sweep-matrix sweep-operator ax
+y eigen
281 check-real
;; for optimize
283 covariance-matrix matrix print-matrix solve
284 backsolve eigenvalues eigenvectors accumulate cumsum combine
292 (defpackage :lisp-stat-data
293 (:documentation
"Data management, integration, I/O, and other data technologies.")
294 (:nicknames
:ls-data
)
296 :lisp-stat-object-system
299 :lisp-stat-compound-data
)
300 (:shadowing-import-from
:lisp-stat-object-system
301 slot-value call-method call-next-method
)
302 (:export open-file-dialog read-data-file read-data-columns load-data
303 load-example
*variables
* *ask-on-redefine
*
304 def variables savevar undef
))
306 (defpackage :lisp-stat-descriptive-statistics
310 :lisp-stat-compound-data
313 (:shadowing-import-from
:lisp-stat-math
;; life is a vector!
314 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
315 asin acos atan sinh cosh tanh asinh acosh atanh float random
316 truncate floor ceiling round minusp zerop plusp evenp oddp
317 < <= = /= >= > ;; complex
318 conjugate realpart imagpart phase
319 min max logand logior logxor lognot ffloor fceiling
320 ftruncate fround signum cis
)
321 (:export standard-deviation
322 quantile median interquartile-range
326 (defpackage :lisp-stat-regression-linear
329 :lisp-stat-object-system
331 :lisp-stat-compound-data
332 :lisp-stat-descriptive-statistics
337 (:shadowing-import-from
:lisp-stat-object-system
338 slot-value call-method call-next-method
)
340 (:shadowing-import-from
:lisp-stat-math
341 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
342 asin acos atan sinh cosh tanh asinh acosh atanh float random
343 truncate floor ceiling round minusp zerop plusp evenp oddp
344 < <= = /= >= > ;; complex
345 conjugate realpart imagpart phase
346 min max logand logior logxor lognot ffloor fceiling
347 ftruncate fround signum cis
)
349 (:export regression-model regression-model-proto x y intercept
351 basis weights included
352 total-sum-of-squares residual-sum-of-squares
353 predictor-names response-name case-labels
354 ;; functions for helpers
357 (defpackage :lisp-stat
358 (:documentation
"Experimentation package for LispStat. Serious
359 work should be packaged up elsewhere for reproducibility. By this
360 I mean, creating a data/analytics/analysis package with the
361 minimal set of objects required.")
363 :lisp-stat-object-system
364 :lisp-stat-compound-data
365 :lisp-stat-probability
372 :lisp-matrix
;; conversion to a more robust linalg approach
373 :lisp-stat-descriptive-statistics
374 :lisp-stat-regression-linear
376 (:shadowing-import-from
:lisp-stat-object-system
377 slot-value call-method call-next-method
)
378 (:shadowing-import-from
:lisp-stat-math
379 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
380 asin acos atan sinh cosh tanh asinh acosh atanh float random
381 truncate floor ceiling round minusp zerop plusp evenp oddp
384 conjugate realpart imagpart phase
387 logand logior logxor lognot
388 ffloor fceiling ftruncate fround
396 fixnump check-nonneg-fixnum check-one-fixnum
397 check-one-real check-one-number
405 compound-data-p
*compound-data-proto
* compound-object-p
406 compound-data-seq compound-data-length
407 element-list element-seq
409 recursive-map-elements map-elements
412 get-next-element make-next-element set-next-element
420 ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
421 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
422 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
424 conjugate realpart imagpart phase min max
425 logand logior logxor lognot ffloor fceiling ftruncate fround
428 #|
;; The following need to be re-found in lisp-matrix...
431 matrixp num-rows num-cols matmult identity-matrix diagonal row-list
432 column-list inner-product outer-product cross-product transpose
433 bind-columns bind-rows
436 chol-decomp lu-decomp lu-solve determinant inverse
437 sv-decomp qr-decomp rcondest make-rotation spline
438 kernel-dens kernel-smooth
439 fft make-sweep-matrix sweep-operator ax
+y eigen
441 covariance-matrix matrix print-matrix solve
442 backsolve eigenvalues eigenvectors accumulate cumsum combine
445 ;; in linalg.lisp, possibly not supported by matlisp
446 spline kernel-dens kernel-smooth
454 make-rv-function make-rv-function-1
457 open-file-dialog read-data-file read-data-columns load-data
458 load-example
*variables
* *ask-on-redefine
*
459 def variables savevar undef
462 dataframe-like dataframe-array make-dataframe
463 varlabels caselabels nrows ncols
464 dataframe-dimension dataframe-dimensons
465 dfref dfref-case dfref-var
466 consistent-dataframe-p
468 list-of-columns list-of-rows
471 lists-of-same-size equal-listoflist
473 make-dataframe-from-listoflist make-array-from-listoflist
475 ;; statistics.lsp (descriptions, should probably be moved
477 standard-deviation quantile median interquartile-range
480 ;; probability (dists.lisp)
482 uniform-rand normal-cdf normal-quant normal-dens
483 normal-rand bivnorm-cdf cauchy-cdf cauchy-quant cauchy-dens
484 cauchy-rand gamma-cdf gamma-quant gamma-dens gamma-rand
485 chisq-cdf chisq-quant chisq-dens chisq-rand beta-cdf beta-quant
486 beta-dens beta-rand t-cdf t-quant t-dens t-rand f-cdf f-quant
487 f-dens f-rand poisson-cdf poisson-quant poisson-pmf poisson-rand
488 binomial-cdf binomial-quant binomial-pmf binomial-rand
490 ;; Here is where we have a problem -- lispstat core should be core
491 ;; data management and config problems, with packages providing
492 ;; specialized extensions to LispStat, i.e. regression, nonlin
493 ;; regression, bayesian regression via laplace approximation, etc.
495 ;; The following could be considered "recommended packages",
496 ;; similar to the idea of the recommended packages in R. Probably
497 ;; we want them to do the exporting within that package, therefore
498 ;; NOT being able to lock the "data-ish" package, but only the
499 ;; subpackages prior to export.
502 ;; -- linear regressin models.
503 regression-model regression-model-proto x y intercept sweep-matrix
504 basis weights included total-sum-of-squares residual-sum-of-squares
505 predictor-names response-name case-labels
509 ;; -- nonlinear regression models
510 nreg-model nreg-model-proto mean-function theta-hat epsilon
512 ;; we might need something like xtxinv here? But should be
513 ;; encapsulated, so we use the one in regression.lisp
516 bayes-model bayes-model-proto bayes-internals
529 ;;;; PACKAGES FOR USEABILITY
531 (defpackage :lisp-stat-data-examples
532 (:documentation
"Example data for unittests, examples, illustrations,")
535 (:shadowing-import-from
:lisp-stat
536 slot-value call-method call-next-method
538 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
539 asin acos atan sinh cosh tanh asinh acosh atanh float random
540 truncate floor ceiling round minusp zerop plusp evenp oddp
541 < <= = /= >= > > ;; complex
542 conjugate realpart imagpart phase
543 min max logand logior logxor lognot ffloor fceiling
544 ftruncate fround signum cis
547 (:export iron aluminum absorbtion
551 (defpackage :lisp-stat-user
552 (:documentation
"Experimentation package for LispStat.
553 Serious work should be placed in a similar package elsewhere for
554 reproducibility. But this should hint as to what needs to be
555 done for a user- or analysis-package.")
556 (:nicknames
:ls-user
)
560 :lisp-stat-data-examples
) ;; this last is to have 'things to play with'
561 (:shadowing-import-from
:lisp-stat
562 slot-value call-method call-next-method
564 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
565 asin acos atan sinh cosh tanh asinh acosh atanh float random
566 truncate floor ceiling round minusp zerop plusp evenp oddp
567 < <= = /= >= > > ;; complex
568 conjugate realpart imagpart phase
569 min max logand logior logxor lognot ffloor fceiling
570 ftruncate fround signum cis
574 (defpackage :lisp-stat-unittests
575 (:use
:common-lisp
:lift
:lisp-stat
:lisp-stat-data-examples
)
576 (:shadowing-import-from
:lisp-stat
577 slot-value call-method call-next-method
;; objects
578 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
;; lsmath
579 asin acos atan sinh cosh tanh asinh acosh atanh float random
580 truncate floor ceiling round minusp zerop plusp evenp oddp
581 < <= = /= >= > ;; complex
582 conjugate realpart imagpart phase
583 min max logand logior logxor lognot ffloor fceiling
584 ftruncate fround signum cis
)
585 (:export run-lisp-stat-tests run-lisp-stat-test scoreboard
; exec
586 almost
= almost
=lists numerical
=)) ; compare
588 (defpackage :lisp-stat-data-clos-example
590 :lift
:lisp-stat-unittests
591 :lisp-stat-data-examples
592 :lisp-stat-data-clos
)
593 (:export absorbtion aluminum iron
))
596 (defpackage :lisp-stat-optimize
601 :lisp-stat-object-system
603 :lisp-stat-compound-data
609 :lisp-stat-linalg-data
613 (:shadowing-import-from
:lisp-stat-object-system
614 slot-value call-method call-next-method
)
615 (:shadowing-import-from
:lisp-stat-math
616 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
617 asin acos atan sinh cosh tanh asinh acosh atanh float random
618 truncate floor ceiling round minusp zerop plusp evenp oddp
619 < <= = /= >= > complex conjugate realpart imagpart phase
620 min max logand logior logxor lognot ffloor fceiling
621 ftruncate fround signum cis
)
627 newtonmax nelmeadmax
))