「遺伝統計学の基礎」をひと通り読んだのだけれども,はっきり言ってわかりにくい本だった.内容はあっちこっちに飛んで統一感が無いし,シミュレーションがある割には天下り的な理論導入で具体性に欠けるし,結局何がやりたくてどういう手法を使ってどんな結果が出たら嬉しいのかが終始読み取るのに苦労した.そりゃお前が不勉強で物知らずだからだろと言われればそれまでなんだけど,この本の売りであるRのコードとシミュレーションに関して個人的に思うところがあったので,ちょっと書き留めておこうと思う.簡単に言ってしまえば,理論を身につけてシミュレーションを理解する流れが非常にダルい.

この本の中に出てくるシミュレーションをきちんと理解するのは,何も知らない読者にとっては恐ろしく大変だ.書いてある内容が難解すぎて大変というわけではない.本文は平易に書かれているし,数式だってそれほど苦労するほどではない.シミュレーションも「こういう原理があってこういう解析をすると知りたいことが計算できるよね?じゃあRで適当にそれっぽいデータ作ってシミュレーションしてみよう.ほら,結果はきちんと出ましたね」という感じで淡々と進んでいく.頭から読み進めると「確かにそうだ,確かにそうだ」と解った気になるのだが,ひと通り読んだあとに振り返ってみて,この章は何を書いてあったかなと考えると,頭に残っているのは説明された事実とシミュレーションの結果だけ.じゃあこれが何処でどんな風に使えるのか,そして何がしたかったのかと首を傾げることになる.

シミュレーションを理解するのに一番重要な点は,何よりまず前提条件を理解することだ.どんな結果を期待してるか?データセットはどういう値や集合を用いるか?初期値はどう指定する?可変なパラメータは何だ?解析の肝となる数式はどれだ?といった具合に,とにかくコードの上で用意されたシミュレートの舞台の裏側を理解する必要がある.時には結果から遡って解釈する必要がある.しかし,言ってしまえば逆に細部なんて理解しなくてもシミュレーションは雰囲気さえ掴めれば細部を理解してなくてもおおよそ予測が付く.解析の流れがわかっていれば,それを一般化するだけで済むのだ.そして,それに必要なのは具体例だ.この本で一番問題だと思うのは,その前提条件の理解において,具体例となるような理論とコードを橋渡しする部分が非常に乏しいことだ.具体的に観測される値をpやqなどで表すことは数式の上で書かれていても,それがどういう値を取るかといった具体例などの数字はコードの部分まで出てこない.用いるデータセットは時に何らかの手を加えた関数からランダムに作られるが,それが結果を導くのに都合のいい事は感覚で分かるものの意図が説明されず分からないことが多い.また,長いコードや関数定義が入れ子になっているコードほど,理論のところで説明された数式がコードのどの部分に該当するかが分かりにくい.理論とコードを行ったり来たり見比べて,ようやく「理論の制約条件はここのコードに効いてくるのか」とか「コードで作ってるデータセットはこういう結果を導いたいからなのか」といったことが見えてくる.

シミュレーションは予定調和で進んでいくだけで,その裏の意図を理解するのに非常に苦労する.このように,理論的な解釈からいきなり具体的な値と解析コードに落としこむ部分が難解なのだ.理論を理解する難しさとコードを理解する難しさが重なって,どっちつかずに曖昧なまま読み進めていかざるを得ない.まあ,そうやって理解する過程にこそ意義があるというなら,それはまあそうなんだろう.現に自分も躍起になって他の資料を当たったりコード書きなおしたりして勉強した.ただ,この本は何にしてもはっきりしなくて不親切というのが率直な感想だ.なんで小さな値で実際に解析をやってみせて,それを大きな値でシミュレートするという方向に持って行かないんだろう.なんでRのコードでシミュレートしたり作図した結果を提示して終わるんじゃなくて,ここの値がこうだからこういう意味を持つんですよ,これが見たいからこんな条件でシミュレーションを作ったんですよといった具体的な解釈をしないんだろう.

結局のところ,現場を知ってる専門家に向けた難易度とも思えず,遺伝統計学を一から学ぶ学生にとっては具体例に乏しく,リファレンスとして使うにも纏まりに欠け,どんな読者を対象としているのかよく分からない本だった.

最後に…

余計な補足かもしれないが,この本は誤植が多い.公式の訂正以外にも有志が独自に訂正情報を出しているので,これから読む人は参考にするべきだろう.個人的に確認した範囲では,有志の訂正情報は大体正しかったと思う.