カバー裏から引用する。本書では,C を Visual C++ や UNIX 上で用いて,どのように統計データを解析するかを学びます.
各章末には演習問題がある。解答はない。
各章に C 言語のプログラムがある。このプログラムはお世辞にも美しいとはいえない。
特に、本書に掲載されているプログラムは、インデントが全くなかったり(第 13 章)、あったとしても一定の法則に従っていないため読みづらい。なぜこのような組版にしたのだろうか、不思議だ。
WEB には本書のプログラムが載っている。
https://str.toyokeizai.net/-/textbook/Introduction_to_statistical_data_analysis/program1.txt
https://str.toyokeizai.net/-/textbook/Introduction_to_statistical_data_analysis/program2.txt
である。こちらはインデントこそあるが、そのインデントの付け方がめちゃくちゃで、プログラムとしての品質に疑問が付く。
他にも妙な癖が散見される。たとえば、`n` 回の繰返しを普通は C 言語でこのように書く。
for (i = 0; i < n; i++) {
/* ここに処理を書く */
}
ところが本書では例外なく次のように書いている。
for (i = 1; i <= n; i++) {
/* ここに処理を書く */
}
配列のときはどうするのだろう。初期化を扱っているプログラムを見ると、ループの上限に直接値を書いて次のようにしている。
int a[3];
for (i = 0; i <= 2; i++) {
a[i] = 0
}
これはいただけないな。配列のときは次のようにすべきだろう。
#define N 3
int a[N];
for (i = 0; i < N; i++) {
a[i] = 0
}
この本の出版当時は const があったかどうかは知らないが、次だとさらにいい。
const int N = 3
int a[N];
for (i = 0; i < N; i++) {
a[i] = 0
}
第 9 章「乱数によるシミュレーション」では、基本的な確率分布と、その確率分布に従う乱数の発生について解説されている。p.144 に山内の近似式
とある。この山内とは、
山内二郎のことだろう。
第 11 章では「行列式と逆行列」について解説されているが、行列式はともかく、逆行列を実務の数値計算では扱ってはいけないと私は大学時代に教わった。たとえば、 正規方程式を解く場合であれば、逆行列を作るのではなく、対称行列をコレスキー分解してこれを前進消去・後退代入するというのが基本である。対称行列でない場合でも、 連立一次方程式を解く方法はいろいろある。数値計算と逆行列について、線形計算という書籍の p.1 では次のように述べられている。
(前略)ベクトル・行列記法によれば,方程式は \( A \boldsymbol{x} = \boldsymbol{b} \) であり,その解は \( \boldsymbol{x} \)`{::}^** = A^(-1)` \( \boldsymbol{b} \) となるが, この表示は数値計算の方法とは無縁である.逆行列 `C = A^(-1)` を計算してから積 `C *`\( \boldsymbol{b} \) を作る方法や,Cramer の公式を用いる方法は, 数値計算的には何の利点もない.(後略)
第 12 章では「回帰分析と最小二乗法」について解説されている。プログラムの部分を見てみると、なるほど、第 11 章で作った逆行列を計算に使っている。 一貫しているといえばそうだが、ちょっとこれを見て私はこの先を読む元気をなくした。
書名 | C による統計データ解析入門 |
著者 | 縄田和満 |
発行日 | 2001 年 10 月 18 日 |
発行元 | 東洋経済新報社 |
定価 | 2800 円(本体) |
サイズ | A5 版 |
ISBN | 4-492-47068-9 |
その他 | 草加市立図書館にて借りて読む。 |
まりんきょ学問所 > 統計 > 統計の本 >縄田和満:C による統計データ解析入門