> (help 'median)
MEDIAN [function-doc]
Args: (x)
Returns the median of the elements of X.
ヘルプの参照は、help 関数に ヘルプを求めたい関数の名前の前に'(シングルクォーテーション)をつけて実行する。結果として、その関数に関する、引数の個数と内容の説明の記述が得られる。
関数名がうろ覚えの場合には、help* 関数に部分的な名前を作用することにより、その文字列を含む全ての関数名のヘルプが返される。
> (help* 'norm)
この結果は、norm を含む沢山の関数名のヘルプが返される。
シンプルに、ある文字列を含む関数名を返す関数 apropos がある。
これにより、関数を探し、help 関数でそのヘルプをみるのがいいだろう。
> (apropos 'norm)
NORMALREG-MODEL
NORM
BIVNORM-CDF
NORMAL-QUANT
NORMAL-RAND
NORMAL
NORMAL-CDF
NORMAL-DENS
(defun funcname (parameter)
body ) <-- 見やすさのために改行している
のように定義する。
(/ (^ (- height (mean height)) 2) (length height))
のように、変数 height の分散は計算されたので、分散を計算する関数 var は
> (defun var (x)
(/ (sum (^ (- x (mean x)) 2)) (length x)))
VAR
> (var height)
47.64000000000001
> (var weight)
16.240000000000002
として定義して利用できる。ついでに不偏分散を計算する関数を定義すると
> (defun uvar (x)
(/ (sum (^ (- x (mean x)) 2)) (- (length x) 1)))
UVAR
> (uvar height)
52.933333333333344
また、ユーザ定義関数を新たな関数を定義するのに利用できる。
標準偏差を計算する関数は以下のように定義できる。
> (defun std (x)
(sqrt (var x)))
STD
ここで、Lisp-Statが準備している標準偏差を計算する関数 standard-deviation を使ってみると、
> (std height)
6.902173570694959
> (standard-deviation height)
7.275529763071094
今、定義したものと値が異なっている。これは、Lisp-Statは不変標準偏差を出力しているからであり、
> (defun ustd (x)
(sqrt (uvar x)))
USTD
> (ustd height)
7.275529763071095
とすることにより、確認できた。
演習5 例題2のデータについて、次のことを行ないなさい。
条件をつけて、評価したい場合には、cond を利用する。
> (defun my-abs (x)
(cond ( (> x 0) x)
( (= x 0) 0)
( (< x 0) (- x))))
MY-ABS
> (histogram height)
> (boxplot height)
boxplot に変数のリストを与えると、平行箱ひげ図がプロットされる。
> (boxplot (list height weight))
2次元プロットとしては、散布図をかく plot-points、折れ線がある。
> (plot-points height weight)
これで、身長と体重の散布図をかくことができる。
By Yoshiro Yamamoto