3 ;;; Time-stamp: <2009-04-02 16:09:24 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
)
26 (:export ls-object objectp
*object
* kind-of-p make-object
28 *set-slot-hook
* proto-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
58 call-next-method call-method
)
59 (:export compound-data-p
*compound-data-proto
*
61 compound-data-seq compound-data-length
62 element-list element-seq
64 recursive-map-elements map-elements repeat
66 get-next-element make-next-element set-next-element
69 select split-list which
73 (defpackage :lisp-stat-macros
75 :lisp-stat-compound-data
)
76 (:export make-rv-function make-rv-function-1
))
78 (defpackage :lisp-stat-basics
80 :lisp-stat-object-system
84 :lisp-stat-compound-data
)
85 (:shadowing-import-from
:lisp-stat-object-system
86 call-method call-next-method
)
87 (:export permute-array sum prod count-elements mean
90 (defpackage :lisp-stat-float
92 (:export
+stat-float-typing
+ +stat-cfloat-typing
+ +stat-float-template
+
93 machine-epsilon base-float makedouble
95 make-base-trans-fun-2 make-base-trans-fun
97 BASE-LOG BASE-EXP BASE-EXPT BASE-SQRT BASE-SIN BASE-COS
98 BASE-TAN BASE-ASIN BASE-ACOS BASE-ATAN BASE-SINH
99 BASE-COSH BASE-TANH BASE-ASINH BASE-ACOSH BASE-ATANH
100 BASE-ABS BASE-PHASE BASE-FFLOOR BASE-FCEILING BASE-FTRUNCATE
101 BASE-FROUND BASE-SIGNUM BASE-CIS
))
103 (defpackage :lisp-stat-macros
105 :lisp-stat-compound-data
)
106 (:export make-rv-function make-rv-function-1
))
108 ;;; NEW CLOS STRUCTURE
112 (defpackage :lisp-stat-dataframe
116 ;; generic container class for data -- if small enough
117 ;; could be value, otherwise might be reference.
123 varlabels caselabels nrows ncols
124 dataframe-dimension dataframe-dimensons
125 dfref dfref-case dfref-var
126 consistent-dataframe-p
129 list-of-columns
;; list-of-variables
130 list-of-rows
;; list-of-observations
134 (defpackage :cls-data-listoflist
136 :lisp-stat-dataframe
) ; for dataframe
137 (:export lists-of-same-size
140 make-dataframe-from-listoflist
141 make-array-from-listoflist
))
144 (defpackage :lisp-stat-regression-linear-clos
147 :lisp-stat-dataframe
)
148 (:export regression-model
))
151 (defpackage :lisp-stat-visualize
154 :lisp-stat-dataframe
))
156 (defpackage :lisp-stat-visualize-plplot
171 (defpackage :lisp-stat-ffi-int
174 (:export ccl-store-integer ccl-store-double ccl-store-ptr
177 (defpackage :lisp-stat-probability
182 (:export log-gamma set-seed
184 normal-cdf normal-quant normal-dens normal-rand
186 cauchy-cdf cauchy-quant cauchy-dens cauchy-rand
187 gamma-cdf gamma-quant gamma-dens gamma-rand
188 chisq-cdf chisq-quant chisq-dens chisq-rand
189 beta-cdf beta-quant beta-dens beta-rand
190 t-cdf t-quant t-dens t-rand
191 f-cdf f-quant f-dens f-rand
192 poisson-cdf poisson-quant poisson-pmf poisson-rand
193 binomial-cdf binomial-quant binomial-pmf binomial-rand
))
196 #| removed
, replace by lisp-matrix
197 (defpackage :lisp-stat-matrix
200 :lisp-stat-compound-data
)
201 (:export matrixp
;; matrix -- conflicts!
202 num-rows num-cols matmult identity-matrix diagonal
203 row-list column-list inner-product outer-product
205 ;; transpose bind-columns bind-rows
206 array-data-vector vector-to-array
208 check-matrix check-square-matrix
210 copy-array copy-vector
214 #| replaced by lisp-matrix
215 (defpackage :lisp-stat-linalg-data
220 :lisp-stat-compound-data
222 (:export
;; more to add
223 +mode-in
+ +mode-re
+ +mode-cx
+ mode-of
225 la-data-mode la-allocate la-free
227 la-get-double la-put-double
230 la-matrix la-free-matrix la-matrix-to-data la-data-to-matrix
231 la-vector la-free-vector la-vector-to-data la-data-to-vector
))
234 (defpackage :lisp-stat-math
236 :lisp-stat-object-system
238 :lisp-stat-compound-data
240 (:shadowing-import-from
:lisp-stat-object-system
241 call-method call-next-method
)
242 (:shadow expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
243 asin acos atan sinh cosh tanh asinh acosh atanh float random
244 truncate floor ceiling round minusp zerop plusp evenp oddp
245 < <= = /= >= > ;; complex
246 conjugate realpart imagpart phase
247 min max logand logior logxor lognot ffloor fceiling
248 ftruncate fround signum cis
)
249 (:export ^
** expt
+ -
* / mod rem pmin pmax abs
1+ 1- log exp sqrt sin cos
250 tan asin acos atan sinh cosh tanh asinh acosh atanh float random
251 truncate floor ceiling round minusp zerop plusp evenp oddp
< <= =
253 conjugate realpart imagpart phase min max
254 logand logior logxor lognot ffloor fceiling ftruncate fround
256 (:documentation
"Vectorization of numerical functions"))
259 #|
;; some of this goes back in, but not all of it?
260 (defpackage :lisp-stat-linalg
267 :lisp-stat-compound-data
)
268 (:shadowing-import-from
:lisp-stat-math
269 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
270 asin acos atan sinh cosh tanh asinh acosh atanh float random
271 truncate floor ceiling round minusp zerop plusp evenp oddp
272 < <= = /= >= > complex conjugate realpart imagpart phase
273 min max logand logior logxor lognot ffloor fceiling
274 ftruncate fround signum cis
)
275 (:export chol-decomp lu-decomp lu-solve determinant inverse
276 sv-decomp qr-decomp rcondest make-rotation spline
277 kernel-dens kernel-smooth
278 fft make-sweep-matrix sweep-operator ax
+y eigen
280 check-real
;; for optimize
282 covariance-matrix matrix print-matrix solve
283 backsolve eigenvalues eigenvectors accumulate cumsum combine
291 (defpackage :lisp-stat-data
292 (:documentation
"Data management, integration, I/O, and other data technologies.")
293 (:nicknames
:ls-data
)
295 :lisp-stat-object-system
298 :lisp-stat-compound-data
)
299 (:shadowing-import-from
:lisp-stat-object-system
300 call-method call-next-method
)
301 (:export open-file-dialog read-data-file read-data-columns load-data
302 load-example
*variables
* *ask-on-redefine
*
303 def variables savevar undef
))
305 (defpackage :lisp-stat-descriptive-statistics
309 :lisp-stat-compound-data
312 (:shadowing-import-from
:lisp-stat-math
;; life is a vector!
313 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
314 asin acos atan sinh cosh tanh asinh acosh atanh float random
315 truncate floor ceiling round minusp zerop plusp evenp oddp
316 < <= = /= >= > ;; complex
317 conjugate realpart imagpart phase
318 min max logand logior logxor lognot ffloor fceiling
319 ftruncate fround signum cis
)
320 (:export standard-deviation
321 quantile median interquartile-range
325 (defpackage :lisp-stat-regression-linear
328 :lisp-stat-object-system
330 :lisp-stat-compound-data
331 :lisp-stat-descriptive-statistics
336 (:shadowing-import-from
:lisp-stat-object-system
337 call-method call-next-method
)
339 (:shadowing-import-from
:lisp-stat-math
340 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
341 asin acos atan sinh cosh tanh asinh acosh atanh float random
342 truncate floor ceiling round minusp zerop plusp evenp oddp
343 < <= = /= >= > ;; complex
344 conjugate realpart imagpart phase
345 min max logand logior logxor lognot ffloor fceiling
346 ftruncate fround signum cis
)
348 (:export regression-model regression-model-proto x y intercept
350 basis weights included
351 total-sum-of-squares residual-sum-of-squares
352 predictor-names response-name case-labels
353 ;; functions for helpers
356 (defpackage :lisp-stat
357 (:documentation
"Experimentation package for LispStat. Serious
358 work should be packaged up elsewhere for reproducibility. By this
359 I mean, creating a data/analytics/analysis package with the
360 minimal set of objects required.")
362 :lisp-stat-object-system
363 :lisp-stat-compound-data
364 :lisp-stat-probability
371 :lisp-matrix
;; conversion to a more robust linalg approach
372 :lisp-stat-descriptive-statistics
373 :lisp-stat-regression-linear
375 (:shadowing-import-from
:lisp-stat-object-system
376 call-method call-next-method
)
377 (:shadowing-import-from
:lisp-stat-math
378 expt
+ -
* / ** mod rem abs
1+ 1- log exp sqrt sin cos tan
379 asin acos atan sinh cosh tanh asinh acosh atanh float random
380 truncate floor ceiling round minusp zerop plusp evenp oddp
383 conjugate realpart imagpart phase
386 logand logior logxor lognot
387 ffloor fceiling ftruncate fround
395 fixnump check-nonneg-fixnum check-one-fixnum
396 check-one-nonneg-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 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 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 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-dataframe-example
590 :lift
:lisp-stat-unittests
591 :lisp-stat-data-examples
592 :lisp-stat-dataframe
)
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 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
))