岡本@金沢大学文学部です。 <[fpr 947] RE: 手回し計算機>に対するコメントです。 >手回し計算機の話題からプログラミングの話題に変わってしまいますが、 >プログラミングと数値計算に関してコメントしたいと思います。 基本的には慣れと好みの問題だと思いますが、少しコメントさせて 頂きます。 ただし、慣れと好みと言っても、これらが独立な事柄なのかどうかは 疑わしいところですが。 J.W.McAllister 'Is beauty a sign of truth in scientific theories ?' American Scientist, 1998, March-April, 86, No.2.では、「美しい理論は 真理である可能性が高い」という考え方に対して、何が美しいと判断される のかを論じ、批判が行われています。真理であることが美しいという判断を 育てるというような主張です。 この論文では、理論の進化に適応できなかった物理学者の話がありますが、 心理学会の場合このような偉大な心理学者の例というと誰になるのでしょうか? ともかく、McAllisterの考え方を援用すれば、 慣れた言語が好みの言語、 ということになるのでしょうか。 >たとえば、「標準正規のサンプルを発生させる」という状況において、学習者 として >果たしてどこまで計算過程を知る必要があるでしょうか?ボックス・ミューラ ーの式 >まででしょうか?それとも一様分布を発生させる線形合同法まで知る必要があ るで >しょうか?もし線形合同法まで知る必要があったとしても、それをプログラミ ングす >るのは、あくまでも学習目的の練習プログラムのはずです。実際の場面で標準 正規の >サンプルが必要であれば、一発でそれが得られるライブラリあるいはサブ・プ ログラ >ムを利用するのが普通だと思います。 例えば、通常のシミュレーションで用いる場合、ひとまず、 それで十分でしょう。 しかし、シミュレーションの結果についての慎重な検討が必要に なったときには乱数生成のアルゴリズムのチェックも必要になります。 いくつかの乱数生成用ライブラリ類の検討については、P.Onghena (1993, Behavior Research Methods, Instruments, & Computers) 'A theoretical and empirical comparison...'(pp.384-395)に結果報告が載っています。 シミュレーションで乱数生成アルゴリズムの検討が必要になった私自身の 経験としては最近次のようなことがありました。 Staircase/Up-Down法のシミュレーションを行ったのですが論文に書かれて いるような安定したデータが得られなかったのです。 用いた乱数生成のアルゴリズムに何か好ましくない癖があるのかと 思い、以前に使用したことのあるより良質の乱数を生成するアルゴリズムに 代えてみました。しかし、同じように、安定したとはいえないデータが 得られました。 安定したデータが得られるとしている論文を読み返してみると、 それらの論文では代表値で結果が報告されていました。シミュ レーションにおける個々のデータが不安定でも、代表値なら良い 値が報告されても不思議ではありません。 実験法としてUp-Down法などを用いる場合は、個々のデータの 振る舞いが重要なのですが。 >たとえば、多変量正規分布を発生させるプログラムは、コレスキー分解の >ファンクションがすでに組み込まれているし、行列計算もできるので、 >たったの4行(かそれ以下)で書けます。 >(S-Plusについての記述です:引用者注) 一時期、Cの簡潔な記述(短い変数名など)がよいものとして評価 されていたように思います。 しかし、最近は単なる短さより、長くても分かり易い方がよいとする 意見も見掛けるようになりました。 人間が読むものは、短ければ短いほど良いというものでもないと 思います。 もっとも、S-Plusで短くなるのは、多分、実行時にサブルーチン コールで行列演算が行われているからでしょう。それなら、単に 短くするという考え方とは異なりますが、しかし、サブルーチン コールで記述が短くなるというのなら、他の言語でも同じです。 岡本安晴 C00279 (at) simail.ne.jp p.s. 鎌田さんはS-Plusを勧めておられます。 私はPascal処理系の1つであるDelphiを勧めます。 Windowsでのプログラミングが容易である、アカデミックプライスが 1万5千円(Standard版)であるという理由もありますが、私は現在 次のことが気に入っているからです。 (1)オブジェクト/クラス型が使い易い。 (2)数値計算のプログラムを開発する時、複数のMemoコンポーネント を用いて計算経過の監視ができる。私がこの機能をよく使うのは 極値探索法を用いている時です。探索がうまく行かない時、 いくつかのチェックポイントの値をMemoコンポーネントに分けて 表示してチェックしています。汎用機のTSSでのCRT上の表示、 MS-DOSの場合のディスプレイでの表示のときと比べて、この 複数のMemoコンポーネントに同時表示するという方法は大変 便利なものだと思っています。 (3)実行が高速である。シミュレーション内で極値探索が行われている というように、計算量が多いときには実行速度も重要なポイントに なります。
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。