パッケージdescriptiveは記述統計計算とグラフ作成を行うための関数一式を含みます。
ソースコードと一緒にMaximaツリーに3つのデータセットがあります:
pidigits.data, wind.data, biomed.data
パッケージdescriptiveの関数の参考文献として、
どんな統計マニュアルでも使うことができます。
コメント、バグ、提案は、 ’mario AT edu DOT xunta DOT es’にコンタクトしてください。
以下は、
descriptiveの中の記述関数が
引数やリスト、行列の性質に依存して如何に機能するかを示す
簡単な例です。
(%i1) load ("descriptive")$
(%i2) /* univariate sample */ mean ([a, b, c]);
c + b + a
(%o2) ---------
3
(%i3) matrix ([a, b], [c, d], [e, f]);
[ a b ]
[ ]
(%o3) [ c d ]
[ ]
[ e f ]
(%i4) /* multivariate sample */ mean (%);
e + c + a f + d + b
(%o4) [---------, ---------]
3 3
多変数標本では、平均は列それぞれに関して計算されることに注意してください。
異なるサイズかもしれない複数の標本の場合、
Maxima関数mapが標本それぞれに対して望みの結果を得るのに使うことができます。
(%i1) load ("descriptive")$
(%i2) map (mean, [[a, b, c], [d, e]]);
c + b + a e + d
(%o2) [---------, -----]
3 2
この場合、サイズ3と2の2つの標本がリストに格納されました。
1変数標本は以下のようにリストに格納されなければいけません。
(%i1) s1 : [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]; (%o1) [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
多変数標本は以下のように行列に格納されなければいけません。
(%i1) s2 : matrix ([13.17, 9.29], [14.71, 16.88], [18.50, 16.88],
[10.58, 6.63], [13.33, 13.25], [13.21, 8.12]);
[ 13.17 9.29 ]
[ ]
[ 14.71 16.88 ]
[ ]
[ 18.5 16.88 ]
(%o1) [ ]
[ 10.58 6.63 ]
[ ]
[ 13.33 13.25 ]
[ ]
[ 13.21 8.12 ]
この場合、 列の数は確率変数次元に等しく、行の数はサプルのサイズです。
データは手で入力することができますが、
大きな標本は普通プレインテキストファイルの中に格納されています。
例えば、ファイルpidigits.dataは
数%piの最初の100桁を含みます:
3
1
4
1
5
9
2
6
5
3 ...
Maximaでこれらの桁をロードするためには、
(%i1) s1 : read_list (file_search ("pidigits.data"))$
(%i2) length (s1); (%o2) 100
他方、ファイルwind.dataは
アイルランド共和国の5つの気象台の毎日の平均風速を含みます。
(これは12の気象台で取得されたデータセットの一部です。
元のファイルはStatLib Data Repositoryから無料でダウンロードでき、
その分析はHaslett, J., Raftery, A. E. (1989) Space-time Modelling with Long-memory Dependence: Assessing Ireland’s Wind Power Resource, with Discussion. Applied Statistics 38, 1-50
で議論されてます。)
以下ではデータをロードします:
(%i1) s2 : read_matrix (file_search ("wind.data"))$
(%i2) length (s2); (%o2) 100
(%i3) s2 [%]; /* last record */ (%o3) [3.58, 6.0, 4.58, 7.62, 11.25]
いくつかの標本は数値でないデータを含みます。
例えば、ファイルbiomed.data
(StatLib Data Repositoryからダウンロードされた別のもっと大きなものの一部)は、
異なる年齢の、2つのグループAとBの患者から測定された4つの血圧を含みます。
(%i1) s3 : read_matrix (file_search ("biomed.data"))$
(%i2) length (s3); (%o2) 100
(%i3) s3 [1]; /* first record */ (%o3) [A, 30, 167.0, 89.0, 25.6, 364]
最初の個人はグループAに属し、30歳で、血圧は167.0, 89.0, 25.6 and 364でした。
カテゴリデータを扱う時には気をつけなければいけません。
次の例では、シンボルaが以前のある時点で値に割り当てられ、
その後、カテゴリ値aを持つ標本が取られます。
(%i1) a : 1$
(%i2) matrix ([a, 3], [b, 5]);
[ 1 3 ]
(%o2) [ ]
[ b 5 ]
continuous_freqの引数は数のリストでなければいけません。
範囲を区間に分割し、それらの中に値がいくつあるか数えます。
二番目の引数はオプションで、
欲しいクラス数(デフォルトが10)か、
クラス境界と欲しいクラスを含むリストか
境界だけ含むリストのいずれかです。
引数 listは(2個か3個の)実数のリストでなければいけません。
もしサンプル値がすべて等しいなら、この関数は振幅2の1クラスだけ返します。
例:
オプション引数は欲しいクラス数を示します。
出力の最初のリストは区間境界を含み、二番目は対応する個数を含みます:
区間[0, 1.8]すなわち0か1である桁が16あり、
(1.8, 3.6]すなわち2か3である桁が24あり、など。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) continuous_freq (s1, 5);
(%o3) [[0, 1.8, 3.6, 5.4, 7.2, 9.0], [16, 24, 18, 17, 25]]
オプション引数は、境界-2と12を持つクラスを7個欲しいことを示します。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) continuous_freq (s1, [-2,12,7]);
(%o3) [[- 2, 0, 2, 4, 6, 8, 10, 12], [8, 20, 22, 17, 20, 13, 0]]
オプション引数は、境界-2と12を持つクラスをデフォルト個欲しいことを示します:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) continuous_freq (s1, [-2,12]);
3 4 11 18 32 39 46 53
(%o3) [[- 2, - -, -, --, --, 5, --, --, --, --, 12],
5 5 5 5 5 5 5 5
[0, 8, 20, 12, 18, 9, 8, 25, 0, 0]]
数値的、記述的両方の離散標本の中の絶対頻度を数えます。 唯一の引数はリストです。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) discrete_freq (s1);
(%o3) [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
[8, 8, 12, 12, 10, 8, 9, 8, 12, 13]]
最初のリストは標本値を与え、二番目はそれらの絶対頻度を与えます。
コマンド? colと? transposeは最後の入力を理解するのを助けるはずです。
これはMaxima submatrix関数の変形の一種です。
最初の引数はデータ行列であり、二番目は述語関数であり、
オプションの付加引数は返す列の番号です。
その振る舞いは例を使ってよりよく理解されます。
以下は最初の測候所での風速が18より大きかった多変量レコードです。
ラムダ式の中でi番目の成分はv[i]として参照されることを参考にしてください。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) subsample (s2, lambda([v], v[1] > 18));
[ 19.38 15.37 15.12 23.09 25.25 ]
[ ]
[ 18.29 18.66 19.08 26.08 27.63 ]
(%o3) [ ]
[ 20.25 21.46 19.95 27.71 23.38 ]
[ ]
[ 18.79 18.96 14.46 26.38 21.84 ]
以下の例では、測候所番号1で16以上で、かつ、測候所番号4で25ノットより小さな風速 のレコードの一番目、二番目、五番目の成分だけをリクエストします。 標本は、測候所1, 2, 5からのデータだけを含みます。 この場合、述語関数は通常のMaxima関数として定義されます。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) g(x):= x[1] >= 16 and x[4] < 25$
(%i4) subsample (s2, g, 1, 2, 5);
[ 19.38 15.37 25.25 ]
[ ]
[ 17.33 14.67 19.58 ]
(%o4) [ ]
[ 16.92 13.21 21.21 ]
[ ]
[ 17.25 18.46 23.87 ]
以下はbiomed.dataのカテゴリ変数の例です。
38歳より年上のグループBの患者に対応するレコードが欲しいです。
(%i1) load ("descriptive")$
(%i2) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) h(u):= u[1] = B and u[2] > 38 $
(%i4) subsample (s3, h);
[ B 39 28.0 102.3 17.1 146 ]
[ ]
[ B 39 21.0 92.4 10.3 197 ]
[ ]
[ B 39 23.0 111.5 10.0 133 ]
[ ]
[ B 39 26.0 92.6 12.3 196 ]
(%o4) [ ]
[ B 39 25.0 98.7 10.0 174 ]
[ ]
[ B 39 21.0 93.2 5.9 181 ]
[ ]
[ B 39 18.0 95.0 11.3 66 ]
[ ]
[ B 39 39.0 88.5 7.6 168 ]
統計解析には血圧だけを使うかもしれません。
(%i1) load ("descriptive")$
(%i2) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) subsample (s3, lambda([v], v[1] = B and v[2] > 38),
3, 4, 5, 6);
[ 28.0 102.3 17.1 146 ]
[ ]
[ 21.0 92.4 10.3 197 ]
[ ]
[ 23.0 111.5 10.0 133 ]
[ ]
[ 26.0 92.6 12.3 196 ]
(%o3) [ ]
[ 25.0 98.7 10.0 174 ]
[ ]
[ 21.0 93.2 5.9 181 ]
[ ]
[ 18.0 95.0 11.3 66 ]
[ ]
[ 39.0 88.5 7.6 168 ]
いかはs3の多変量平均です。
(%i1) load ("descriptive")$
(%i2) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) mean (s3);
65 B + 35 A 317 6 NA + 8144.999999999999
(%o3) [-----------, ---, 87.178, ------------------------,
100 10 100
3 NA + 19587
18.123, ------------]
100
ここで、一番目の成分は、AとBはカテゴリなので意味がなく、
二番目の成分は個々人の平均の歳の有理表現であり、
四番目と最後の値はある奇妙な振る舞いを示しています。
これは、
This is because symbol
シンボルNAがnon availableデータを示すようにここで使われているからで、
二つの平均は無意味です。
情報のある種の喪失を意味しますが、
可能な解はNAシンボルを持つ行を行列から取り除くことです。
(%i1) load ("descriptive")$
(%i2) s3 : read_matrix (file_search ("biomed.data"))$
(%i3) g(v):= v[4] # NA and v[6] # NA $
(%i4) mean (subsample (s3, g, 3, 4, 5, 6));
(%o4) [79.4923076923077, 86.2032967032967, 16.93186813186813,
2514
----]
13
これは標本平均です。以下のように定義されます。
n
====
_ 1 \
x = - > x
n / i
====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) mean (s1);
471
(%o3) ---
100
(%i4) %, numer; (%o4) 4.71
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) mean (s2); (%o6) [9.9485, 10.1607, 10.8685, 15.7166, 14.8441]
これは標本分散です。以下のように定義されます。
n
====
2 1 \ _ 2
s = - > (x - x)
n / i
====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) var (s1), numer; (%o3) 8.425899999999999
関数var1も参照してください。
これは標本分散です。以下のように定義されます。
n
====
1 \ _ 2
--- > (x - x)
n-1 / i
====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) var1 (s1), numer; (%o3) 8.5110101010101
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) var1 (s2);
(%o5) [17.39586540404041, 15.13912778787879, 15.63204924242424,
32.50152569696971, 24.66977392929294]
関数varも参照してください。
これは分母\(n\)の分散である関数varの平方根です。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) std (s1), numer; (%o3) 2.902740084816414
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) std (s2);
(%o5) [4.149928523480858, 3.871399812729241, 3.933920277534866,
5.672434260526957, 4.941970881136392]
関数varとstd1も参照してください。
これは分母\(n-1\)の分散である関数var1の平方根です。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) std1 (s1), numer; (%o3) 2.917363553109228
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) std1 (s2);
(%o5) [4.170835096721089, 3.89090320978032, 3.953738641137555,
5.701010936401517, 4.966867617451963]
See also functions var1 and std.
次数\(k\)の非中心モーメントです。以下のように定義されます。
n
====
1 \ k
- > x
n / i
====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) noncentral_moment (s1, 1), numer; /* the mean */ (%o3) 4.71
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) noncentral_moment (s2, 5);
(%o6) [319793.8724761505, 320532.1923892463,
391249.5621381556, 2502278.205988911, 1691881.797742255]
関数central_momentも参照してください。
次数\(k\)の中心モーメントです。以下のように定義されます。
n
====
1 \ _ k
- > (x - x)
n / i
====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) central_moment (s1, 2), numer; /* the variance */ (%o3) 8.425899999999999
(%i5) s2 : read_matrix (file_search ("wind.data"))$
(%i6) central_moment (s2, 3);
(%o6) [11.29584771375004, 16.97988248298583, 5.626661952750102,
37.5986572057918, 25.85981904394192]
関数noncentral_momentとmeanも参照してください。
変動係数は標本標準偏差(std)を平均meanで割った商です。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) cv (s1), numer; (%o3) .6193977819764815
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) cv (s2);
(%o5) [.4192426091090204, .3829365309260502, 0.363779605385983,
.3627381836021478, .3346021393989506]
関数stdとmeanも参照してください。
これは標本listの最小値です。
引数が行列の時、
sminは
統計変数に関連付けられた列の最小値を含むリストを返します。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) smin (s1); (%o3) 0
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) smin (s2); (%o5) [0.58, 0.5, 2.67, 5.25, 5.17]
See also function smax.
これは標本listの最大値です。
引数が行列の時、
smaxは
統計変数に関連付けられた列の最大値を含むリストを返します。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) smax (s1); (%o3) 9
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) smax (s2); (%o5) [20.25, 21.46, 20.04, 29.63, 27.63]
関数sminも参照してください。
範囲は極値の差です。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) range (s1); (%o3) 9
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) range (s2); (%o5) [19.67, 20.96, 17.37, 24.38, 22.46]
これは標本listのp分位数です。pは\([0, 1]\)の範囲の数です。
標本分位数にはいくつかの定義がありますが
(Hyndman, R. J., Fan, Y. (1996) Sample quantiles in statistical packages. American Statistician, 50, 361-365)、
パッケージdescriptiveでは線形内挿に基づいたものが実装されています。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) /* 1st and 3rd quartiles */
[quantile (s1, 1/4), quantile (s1, 3/4)], numer;
(%o3) [2.0, 7.25]
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) quantile (s2, 1/4); (%o5) [7.2575, 7.477500000000001, 7.82, 11.28, 11.48]
一旦標本が順に並べられると、 もし標本サイズが奇数ならメジアンは中央値であり、 そうでなければ2つの中央値の平均です。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) median (s1);
9
(%o3) -
2
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) median (s2); (%o5) [10.06, 9.855, 10.73, 15.48, 14.105]
メジアンは1/2分位数です。
関数quantileも参照してください。
四分位範囲は
三番目と一番目の分位数の差
quantile(list,3/4) - quantile(list,1/4)
です。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) qrange (s1);
21
(%o3) --
4
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) qrange (s2);
(%o5) [5.385, 5.572499999999998, 6.022500000000001,
8.729999999999999, 6.649999999999999]
関数quantileも参照してください。
平均偏差です。以下のように定義されます。
n
====
1 \ _
- > |x - x|
n / i
====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) mean_deviation (s1);
51
(%o3) --
20
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) mean_deviation (s2);
(%o5) [3.287959999999999, 3.075342, 3.23907, 4.715664000000001,
4.028546000000002]
関数meanも参照してください。
メジアン偏差です。以下のように定義されます。
n
====
1 \
- > |x - med|
n / i
====
i = 1
ここでmedはlistのメジアンです。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) median_deviation (s1);
5
(%o3) -
2
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) median_deviation (s2); (%o5) [2.75, 2.755, 3.08, 4.315, 3.31]
関数meanも参照してください。
調和平均です。以下のように定義されます。
n
--------
n
====
\ 1
> --
/ x
==== i
i = 1
例:
(%i1) load ("descriptive")$
(%i2) y : [5, 7, 2, 5, 9, 5, 6, 4, 9, 2, 4, 2, 5]$
(%i3) harmonic_mean (y), numer; (%o3) 3.901858027632205
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) harmonic_mean (s2);
(%o5) [6.948015590052786, 7.391967752360356, 9.055658197151745,
13.44199028193692, 13.01439145898509]
関数meanとgeometric_meanも参照してください。
幾何平均です。以下のように定義されます。
/ n \ 1/n
| /===\ |
| ! ! |
| ! ! x |
| ! ! i|
| i = 1 |
\ /
例:
(%i1) load ("descriptive")$
(%i2) y : [5, 7, 2, 5, 9, 5, 6, 4, 9, 2, 4, 2, 5]$
(%i3) geometric_mean (y), numer; (%o3) 4.454845412337012
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) geometric_mean (s2);
(%o5) [8.82476274347979, 9.22652604739361, 10.0442675714889,
14.61274126349021, 13.96184163444275]
関数meanとharmonic_meanも参照してください。
尖度係数です。以下のように定義されます。
n
====
1 \ _ 4
---- > (x - x) - 3
4 / i
n s ====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) kurtosis (s1), numer; (%o3) - 1.273247946514421
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) kurtosis (s2);
(%o5) [- .2715445622195385, 0.119998784429451,
- .4275233490482861, - .6405361979019522, - .4952382132352935]
関数mean, var, skewnessも参照してください。
歪度係数です。以下のように定義されます。
n
====
1 \ _ 3
---- > (x - x)
3 / i
n s ====
i = 1
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) skewness (s1), numer; (%o3) .009196180476450424
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) skewness (s2);
(%o5) [.1580509020000978, .2926379232061854, .09242174416107717,
.2059984348148687, .2142520248890831]
関数mean, var, kurtosisも参照してください。
Pearsonの歪度係数です。以下のように定義されます。
_
3 (x - med)
-----------
s
ここで medはlistのメジアンです。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) pearson_skewness (s1), numer; (%o3) .2159484029093895
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) pearson_skewness (s2);
(%o5) [- .08019976629211892, .2357036272952649,
.1050904062491204, .1245042340592368, .4464181795804519]
関数mean, var, medianも参照してください。
分位歪度係数です。以下のように定義されます。
c - 2 c + c
3/4 1/2 1/4
--------------------
c - c
3/4 1/4
ここで\(c_p\)は標本listのp分位数です。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) quartile_skewness (s1), numer; (%o3) .04761904761904762
(%i4) s2 : read_matrix (file_search ("wind.data"))$
(%i5) quartile_skewness (s2);
(%o5) [- 0.0408542246982353, .1467025572005382,
0.0336239103362392, .03780068728522298, .2105263157894735]
関数quantileも参照してください。
多変量標本の共分散行列です。以下のように定義されます。
n
====
1 \ _ _
S = - > (X - X) (X - X)'
n / j j
====
j = 1
ここで\(X_j\)は標本行列の\(j\)番目の行です。
例:
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) fpprintprec : 7$ /* change precision for pretty output */
(%i4) cov (s2);
[ 17.22191 13.61811 14.37217 19.39624 15.42162 ]
[ ]
[ 13.61811 14.98774 13.30448 15.15834 14.9711 ]
[ ]
(%o4) [ 14.37217 13.30448 15.47573 17.32544 16.18171 ]
[ ]
[ 19.39624 15.15834 17.32544 32.17651 20.44685 ]
[ ]
[ 15.42162 14.9711 16.18171 20.44685 24.42308 ]
関数cov1も参照してください。
多変量標本の共分散行列です。以下のように定義されます。
n
====
1 \ _ _
S = --- > (X - X) (X - X)'
1 n-1 / j j
====
j = 1
ここで\(X_j\)は標本行列の\(j\)番目の行です。
例:
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) fpprintprec : 7$ /* change precision for pretty output */
(%i4) cov1 (s2);
[ 17.39587 13.75567 14.51734 19.59216 15.5774 ]
[ ]
[ 13.75567 15.13913 13.43887 15.31145 15.12232 ]
[ ]
(%o4) [ 14.51734 13.43887 15.63205 17.50044 16.34516 ]
[ ]
[ 19.59216 15.31145 17.50044 32.50153 20.65338 ]
[ ]
[ 15.5774 15.12232 16.34516 20.65338 24.66977 ]
関数covも参照してください。
関数global_variancesは大域分散尺度のリストを返します:
trace(S_1),
trace(S_1)/p,
determinant(S_1),
sqrt(determinant(S_1)),
determinant(S_1)^(1/p), (以下の文献で定義されています: Peña, D. (2002) Análisis de datos multivariantes; McGraw-Hill, Madrid.)
determinant(S_1)^(1/(2*p)).
ここでpは多変量確率変数の次元であり、
\(S_1\)はcov1が返す共分散行列です。
例:
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) global_variances (s2);
(%o3) [105.338342060606, 21.06766841212119, 12874.34690469686,
113.4651792608501, 6.636590811800795, 2.576158149609762]
関数global_variancesはオプションの論理引数を取ります:
global_variances(x,true)は、
Maximaにxがデータ行列であることを伝え、global_variances(x)と同様に作られます。
一方、global_variances(x,false)は
xがデータ行列ではなく、共分散行列であることを意味し、再計算は避けられます。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) s : cov1 (s2)$
(%i4) global_variances (s, false);
(%o4) [105.338342060606, 21.06766841212119, 12874.34690469686,
113.4651792608501, 6.636590811800795, 2.576158149609762]
covとcov1も参照してください。
多変量標本の相関行列です。
例:
(%i1) load ("descriptive")$
(%i2) fpprintprec : 7 $
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) cor (s2);
[ 1.0 .8476339 .8803515 .8239624 .7519506 ]
[ ]
[ .8476339 1.0 .8735834 .6902622 0.782502 ]
[ ]
(%o4) [ .8803515 .8735834 1.0 .7764065 .8323358 ]
[ ]
[ .8239624 .6902622 .7764065 1.0 .7293848 ]
[ ]
[ .7519506 0.782502 .8323358 .7293848 1.0 ]
関数corはオプションの論理引数を取ります:
cor(x,true)は、
Maximaにxがデータ行列であることを伝え、cor(x)と同様に作られます。
一方、cor(x,false)は
xがデータ行列ではなく、共分散行列であることを意味し、再計算は避けられます。
(%i1) load ("descriptive")$
(%i2) fpprintprec : 7 $
(%i3) s2 : read_matrix (file_search ("wind.data"))$
(%i4) s : cov1 (s2)$
(%i5) cor (s, false); /* this is faster */
[ 1.0 .8476339 .8803515 .8239624 .7519506 ]
[ ]
[ .8476339 1.0 .8735834 .6902622 0.782502 ]
[ ]
(%o5) [ .8803515 .8735834 1.0 .7764065 .8323358 ]
[ ]
[ .8239624 .6902622 .7764065 1.0 .7293848 ]
[ ]
[ .7519506 0.782502 .8323358 .7293848 1.0 ]
covとcov1も参照してください。
関数list_correlationsは相関尺度のリストを返します:
-1 ij
S = (s )
1 i,j = 1,2,...,p
2 1
R = 1 - -------
i ii
s s
ii
変数の残りが独立変数として使われるとき これらは\(X_i\)上の線形多変量回帰モデルの適合度の指標です。
ij
s
r = - ------------
ij.rest / ii jj\ 1/2
|s s |
\ /
例:
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) z : list_correlations (s2)$
(%i4) fpprintprec : 5$ /* for pretty output */
(%i5) z[1]; /* precision matrix */
[ .38486 - .13856 - .15626 - .10239 .031179 ]
[ ]
[ - .13856 .34107 - .15233 .038447 - .052842 ]
[ ]
(%o5) [ - .15626 - .15233 .47296 - .024816 - .10054 ]
[ ]
[ - .10239 .038447 - .024816 .10937 - .034033 ]
[ ]
[ .031179 - .052842 - .10054 - .034033 .14834 ]
(%i6) z[2]; /* multiple correlation vector */ (%o6) [.85063, .80634, .86474, .71867, .72675]
(%i7) z[3]; /* partial correlation matrix */
[ - 1.0 .38244 .36627 .49908 - .13049 ]
[ ]
[ .38244 - 1.0 .37927 - .19907 .23492 ]
[ ]
(%o7) [ .36627 .37927 - 1.0 .10911 .37956 ]
[ ]
[ .49908 - .19907 .10911 - 1.0 .26719 ]
[ ]
[ - .13049 .23492 .37956 .26719 - 1.0 ]
関数list_correlationsもオプションの論理引数を取ります:
list_correlations(x,true)は、
Maximaにxがデータ行列であることを伝え、
list_correlations(x)と同様に作られます。
一方、list_correlations(x,false)は
xがデータ行列ではなく、共分散行列であることを意味し、再計算は避けられます。
covとcov1も参照してください。
1変量、多変量どちらの標本でも離散統計変数の棒グラフをプロットします
dataは1標本を意味する結果のリストかもしれませんし、 それぞれサイズmのn個の標本を意味するm行n列の行列かもしれません。
利用可能なオプションは以下のものです:
drawパッケージで定義されたもの。
3/4): 長方形の相対幅。
値は範囲[0,1]内でなければいけません。
clustered):
複数の標本をいかに表示するか示します。
有効な値: clusteredと stacked。
1): 棒の2つの隣り合うグループの隙間を表す正の整数。
[]): 複数の標本のための色のリスト。
指定された色よりもたくさん標本がある時は、
追加で必要な色はランダムに選ばれます。
更に詳しくはcolorを参照してください。
absolute): 縦座標のスケールを示します。
可能な値: absolute, relative, percent。
orderlessp): 可能な値はorderlesspかordergreatpです。
統計的結果がどちら向きにx軸に並んでいるかを示します。
[]): 凡例に使われる文字列のリスト。
リストの長さが0か標本の長さ以外なら、
エラーメッセージを返します。
0): x軸上のどこからプロットされるか示します。
barsplotが内部で割り当てる
xticsを除くすべてのグローバル drawオプション
もしこのオプションに自分の値を設定し、複雑なシーンを構築したいなら、
barsplot_descriptionを使用してください。
以下の例を参照してください。
drawオプション: key, color,
fill_color, fill_density, line_width。
barsも参照してください。
関数barsplot_descriptionは
他のグラフィックオブジェクトと一緒に複雑なシーンを生成するために
グラフィックオブジェクトを生成します。
wxMaximaとiMaximaインターフェイスで埋め込みヒストグラムを生成するための
関数wxbarsplotもあります。
例:
行列形式での1変量標本。絶対頻度。
(%i1) load ("descriptive")$
(%i2) m : read_matrix (file_search ("biomed.data"))$
(%i3) barsplot(
col(m,2),
title = "Ages",
xlabel = "years",
box_width = 1/2,
fill_density = 3/4)$
異なるサイズの2つの標本。 相対頻度とユーザー宣言の色を使って。
(%i1) load ("descriptive")$
(%i2) l1:makelist(random(10),k,1,50)$
(%i3) l2:makelist(random(10),k,1,100)$
(%i4) barsplot(
l1,l2,
box_width = 1,
fill_density = 1,
bars_colors = [black, grey],
frequencies = relative,
sample_keys = ["A", "B"])$
サイズが等しい4つの非数標本。
(%i1) load ("descriptive")$
(%i2) barsplot(
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
title = "Asking for something to four groups",
ylabel = "# of individuals",
groups_gap = 3,
fill_density = 0.5,
ordering = ordergreatp)$
スタックバー。
(%i1) load ("descriptive")$
(%i2) barsplot(
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
makelist([Yes, No, Maybe][random(3)+1],k,1,50),
title = "Asking for something to four groups",
ylabel = "# of individuals",
grouping = stacked,
fill_density = 0.5,
ordering = ordergreatp)$
複数プロット文脈でのbarsplot。
(%i1) load ("descriptive")$
(%i2) l1:makelist(random(10),k,1,50)$
(%i3) l2:makelist(random(10),k,1,100)$
(%i4) bp1 :
barsplot_description(
l1,
box_width = 1,
fill_density = 0.5,
bars_colors = [blue],
frequency = relative)$
(%i5) bp2 :
barsplot_description(
l2,
box_width = 1,
fill_density = 0.5,
bars_colors = [red],
frequency = relative)$
(%i6) draw(gr2d(bp1), gr2d(bp2))$
棒グラフ関連オプションについては、パッケージdrawのbarsを参照してください。
関数histogramとpiechartも参照してください。
この関数は箱ひげ図をプロットします。
引数dataはリストだったり行列だったりします。
箱ひげ図は主に異なる標本の比較に使われるので、リストはあまり興味深くありません。
行列の場合には多変量統計変数の複数成分おw比較することが可能です。
しかし、できる限り異なる標本サイズの標本のリストも許すようにしています。
実際、これは、パッケージdescriptiveの中で
この種のデータ構造を許容する唯一の関数です
利用可能なオプションは以下のものです:
3/4): 箱の相対幅。
この値は範囲[0,1]内でなければいけません。
vertical): 可能な値: vertical
と horizontal。
boxplotが内部で割り当てる
points_joined, point_size, point_type,
xtics, ytics, xrange, yrangeを除く
すべての drawオプション。
もしこのオプションに自分の値を設定し、複雑なシーンを構築したいなら、
boxplot_descriptionを使用してください。
drawオプション: key, color, line_width。
関数boxplot_descriptionは
他のグラフィックオブジェクトと一緒に複雑なシーンを生成するために
グラフィックオブジェクトを生成します。
wxMaximaとiMaximaインターフェイスで埋め込みヒストグラムを生成するための
関数wxbarsplotもあります。
例:
多変量標本の箱ひげ図。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix(file_search("wind.data"))$
(%i3) boxplot(s2,
box_width = 0.2,
title = "Windspeed in knots",
xlabel = "Stations",
color = red,
line_width = 2)$
異なるサイズの3つの標本の箱ひげ図。
(%i1) load ("descriptive")$
(%i2) A :
[[6, 4, 6, 2, 4, 8, 6, 4, 6, 4, 3, 2],
[8, 10, 7, 9, 12, 8, 10],
[16, 13, 17, 12, 11, 18, 13, 18, 14, 12]]$
(%i3) boxplot (A, box_orientation = horizontal)$
この関数は一連の標本からヒストグラムをプロットします。 標本データは数のリストか一次元行列に保存しなければいけません。
利用可能なオプションは以下のものです:
10): ヒストグラムのクラス数、もしくは
クラスの境界と数か境界だけを含むリスト。
absolute): 縦座標のスケールを示します。
可能な値: absolute, relative, percent。
auto): ヒストグラムチックのフォーマット。
可能な値: auto, endpoints, intervals, かラベルのリスト。
histogramが内部で割り当てるxrange, yrange, xticsを除く
すべてのグローバル drawオプション。
もしこれらのオプションに自分の値を設定したいなら、
histogram_descriptionを利用してください。
以下の例を参照してください。
drawオプション: key, color,
fill_color, fill_densityと line_width.
barsも参照してください。
関数 histogram_descriptionは他のグラフィックオブジェクトと一緒に
複雑なシーンを生成するのに適したグラフィックオブジェクトを生成します。
wxMaximaと iMaximaインターフェイスで埋め込みヒストグラムを生成する
関数wxhistogramもあります。
例:
8クラスを持つ簡単なヒストグラム。
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) histogram (
s1,
nclasses = 8,
title = "pi digits",
xlabel = "digits",
ylabel = "Absolute frequency",
fill_color = grey,
fill_density = 0.6)$
ヒストグラムの境界を-2と12に、クラス数を3に設定します。 また予め定義されたチックを導入します:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) histogram (
s1,
nclasses = [-2,12,3],
htics = ["A", "B", "C"],
terminal = png,
fill_color = "#23afa0",
fill_density = 0.6)$
xrangeを設定しシーンの中に明示的な曲線を足すのに
histogram_descriptionを利用します:
(%i1) load ("descriptive")$
(%i2) ( load("distrib"),
m: 14, s: 2,
s2: random_normal(m, s, 1000) ) $
(%i3) draw2d(
grid = true,
xrange = [5, 25],
histogram_description(
s2,
nclasses = 9,
frequency = relative,
fill_density = 0.5),
explicit(pdf_normal(x,m,s), x, m - 3*s, m + 3* s))$
barsplotに似ていますが、長方形の代わりに扇をプロットします。
利用可能なオプションは以下のものです:
[]): セクタの色のリスト。
指定した色よりも多くセクタがあるときは、必要な色の超過分がランダムに選ばれます。
それらについて更に知るには colorを参照してください。
[0,0]): 円グラフの中心。
1): 円グラフの半径。
piechartが内部で割り当てるkeyを除いたすべてのグローバル drawオプション。
もしこのオプションに自分の値を設定し、複雑なシーンを構築したいなら、
piechart_descriptionを利用してください。
drawオプション: key, color,
fill_display, line_width。
ellipseも参照してください。
関数 piechart_descriptionは他のグラフィックオブジェクトと一緒に
複雑なシーンを生成するのに適したグラフィックオブジェクトを生成します。
wxMaximaと iMaximaインターフェイスで埋め込みヒストグラムを生成する
関数wxhistogramもあります。
例:
(%i1) load ("descriptive")$
(%i2) s1 : read_list (file_search ("pidigits.data"))$
(%i3) piechart(
s1,
xrange = [-1.1, 1.3],
yrange = [-1.1, 1.1],
title = "Digit frequencies in pi")$
関数barsplotも参照してください。
1変量(list)や多変量(matrix)の標本の散布図をプロットします。
利用可能なオプションは histogramが許すものと同じです。
関数 scatterplot_descriptionは他のグラフィックオブジェクトと一緒に
複雑なシーンを生成するのに適したグラフィックオブジェクトを生成します。
wxMaximaと iMaximaインターフェイスで埋め込みヒストグラムを生成する
関数wxscatterplotもあります。
例:
シミュレーティッドGauss標本の1変量散布図。
(%i1) load ("descriptive")$
(%i2) load ("distrib")$
(%i3) scatterplot(
random_normal(0,1,200),
xaxis = true,
point_size = 2,
dimensions = [600,150])$
二次元散布図。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) scatterplot(
submatrix(s2, 1,2,3),
title = "Data from stations #4 and #5",
point_type = diamant,
point_size = 2,
color = blue)$
3次元散布図。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) scatterplot(submatrix (s2, 1,2), nclasses=4)$
5つのクラスのヒストグラムと5次元散布図。
(%i1) load ("descriptive")$
(%i2) s2 : read_matrix (file_search ("wind.data"))$
(%i3) scatterplot(
s2,
nclasses = 5,
frequency = relative,
fill_color = blue,
fill_density = 0.3,
xtics = 5)$
2次元か3次元で孤立点か線で結んだ点をプロットすることについては、
pointsを参照してください。
histogramも参照してください。
1変量、多変量どちらの標本でも離散統計変数のスターダイアグラムをプロットします
dataは1標本を意味する結果のリストかもしれませんし、 それぞれサイズmのn個の標本を意味するm行n列の行列かもしれません。
利用可能なオプションは以下のものです:
[]): 多変量標本の色のリスト。
指定した色よりも多くセクタがあるときは、必要な色の超過分がランダムに選ばれます。
それらについて更に知るには colorを参照してください。
absolute): 半径のスケールを示します。
可能な値: absolute, relative, percent。
orderlessp): 可能な値はorderlesspかordergreatpです。
統計的結果がどちら向きにx軸に並んでいるかを示します。
[]): 凡例に使われる文字列のリスト。
リストの長さが0か標本の長さ以外なら、
エラーメッセージを返します。
[0,0]): ダイアグラムの中心。
1): ダイアグラムの半径。
starplotが内部で割り当てるpoints_joined, point_type, keyを除いたすべてのグローバル drawオプション。
もしこのオプションに自分の値を設定し、複雑なシーンを構築したいなら、
starplot_descriptionを利用してください。
drawオプション: line_width。
関数 starplot_descriptionは他のグラフィックオブジェクトと一緒に
複雑なシーンを生成するのに適したグラフィックオブジェクトを生成します。
wxMaximaと iMaximaインターフェイスで埋め込みヒストグラムを生成する
関数wxstarplotもあります。
例:
絶対頻度に基づいたプロット。 ユーザーが定義した位置と半径。
(%i1) load ("descriptive")$
(%i2) l1: makelist(random(10),k,1,50)$
(%i3) l2: makelist(random(10),k,1,200)$
(%i4) starplot(
l1, l2,
stars_colors = [blue,red],
sample_keys = ["1st sample", "2nd sample"],
star_center = [1,2],
star_radius = 4,
proportional_axes = xy,
line_width = 2 ) $
幹葉図をプロットします。
固有の利用可能なオプションは:
1): 葉の単位を示します;
10のべきでなければいけません。
例:
(%i1) load ("descriptive")$
(%i2) load("distrib")$
(%i3) stemplot(
random_normal(15, 6, 100),
leaf_unit = 0.1);
-5|4
0|37
1|7
3|6
4|4
5|4
6|57
7|0149
8|3
9|1334588
10|07888
11|01144467789
12|12566889
13|24778
14|047
15|223458
16|4
17|11557
18|000247
19|4467799
20|00
21|1
22|2335
23|01457
24|12356
25|455
27|79
key: 6|3 = 6.3
(%o3) done