鎌田@ミシガン州立大学大学院です 手回し計算機の話題からプログラミングの話題に変わってしまいますが、 プログラ ミングと数値計算に関してコメントしたいと思います。 [fpr 946]で、基本プログラム言語によるプログラミングを奨励されていますが、私 はこれには全面的に賛成しません。学習が目的であれば、計算の過程が理解できるの で役に立つことは確かですが、問題はどこまで知る必要があるのかということだと思 います。 たとえば、「標準正規のサンプルを発生させる」という状況において、学習者として 果たしてどこまで計算過程を知る必要があるでしょうか?ボックス・ミューラーの式 まででしょうか?それとも一様分布を発生させる線形合同法まで知る必要があるで しょうか?もし線形合同法まで知る必要があったとしても、それをプログラミングす るのは、あくまでも学習目的の練習プログラムのはずです。実際の場面で標準正規の サンプルが必要であれば、一発でそれが得られるライブラリあるいはサブ・プログラ ムを利用するのが普通だと思います。 私事ですが、自分で数値計算のためにプログラミングを始め(90年頃から QBASIC で 始めました)、それなりに自分用ののライブラリも蓄積しました。ところが、3年ほ ど前にS-Plus という「半言語半パッケージ」を知り、それ以来QBASICを使ったこと はありません。別にQBASICがよくなかったというわけではなく(むしろQBASICは私の ような素人プログラマーには使いやすかったと思います)、基本プログラム言語を数 値計算のために使う必要性を全く感じなくなったからです。(プログラムをコンパイ ルする必要があれば別ですが) S-Plus の宣伝ではありませんが、念のため S-Plus がどんなものかというと、S と いう基本言語がベースにあり、統計その他のプロシージャー(S-Plus ではファンク ションといいます)が S 言語で書かれているというものです。さらに、組み込まれ ているファンクションのコードがユーザーにも見れます。ユーザーが自分で書いた ファンクションは、S-Plus にもともと組み込まれているファンクションと同等に扱 われます。つまり、自分でアルゴリズムを開発することもできるし、もともと組み込 まれているアルゴリズムを改造することも容易にできるわけです。 上と同様のことはSASでもできますよね。もちろんコードを見たり改造したりは、簡 単には出来ないでしょうけれど。 たとえば、多変量正規分布を発生させるプログラムは、コレスキー分解のファンク ションがすでに組み込まれているし、行列計算もできるので、たったの4行(かそれ 以下)で書けます。もちろんSによってコレスキー分解のファンクションを自分なり に書くことは出来まが、「多変量正規分布を発生させる」目的のために、そのことに 学習的な意味があるとは思えません。 鎌田明人 kamataak (at) pilot.msu.edu
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。