• ベストアンサー

Monte Carlo法とBayes法

Monte Carlo法やBayes法で計算をするには、 (1)専用のソフトが必要なのでしょうか? (2)Excelでは無理なのでしょうか? (3)Monte Carlo法とBayes法について、少しでも良いので何か、教えてください。 (4)それともしお勧めの本やソフトあれば、こちらのほうも教えてください。 (1)~(4)のどれか一つでも良いので、教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maku_x
  • ベストアンサー率44% (164/371)
回答No.2

なかなかレスが付きませんね。やはり内容が高度と言うか、質問が漠然としていると言うか... かなり骨のある課題なので、授業や演習で出される課題ではなさそうですね。卒論等のテーマでしょうか。 私は統計学についてはズブの素人ですので、残念ながらモンテカルロ法やベイズ法を人様に教えられるような知識がありません。ですので、概念を示すのに留まります。 モンテカルロ法として一番簡単な例は、円周率πを求める方法です。 http://www.geocities.jp/turtle_wide/softcomp/al/p03.htm Java言語でのサンプルプログラムも掲載されていますので、Javaとはこういう風に書くものだ、と参考になるはずです。 ベイズ法は、この辺りですかね... 分かりやすいかどうかは微妙ですが。 http://www2.tba.t-com.ne.jp/nakada/takashi/bayes/idea.html 他にできることは、学校の図書館に統計学の本が置いてあるはずですから、初歩の本を調べる、程度ですかね。あとは、賢そうな同級生や大学院生の先輩に聞いてみる、とか。 > コンパイラ等のプログラミング言語処理ソフトを使えば、マクロを知らなくてもすぐに計算してくれるものなのでしょうか? マクロと言っても、一種のプログラミング言語ですから、どの言語を使うにしても、その言語の文法を知らなければ、プログラミングすることはできません。Java言語なら、上記のリンクに簡単なプログラムが載っていますし、C/C++言語なら、下記が参考になるでしょう。 http://mukun_mmg.at.infoseek.co.jp/mmg/cpp.html ただ、この手の計算には、変数(int, float, double)、演算子(+-*/など)、入出力(cin, cout)、繰り返し構文(for(;;){}、while(){}など)、乱数(rand(), srand(), time(), gettimeofday()など)、数学関数(pow(x,a), exp(x)など)の様な基本的な書き方が分かっていれば、プログラミングはできます。 > こちらはお店で売っているものなのでしょうか? C/C++言語に関しては、Microsoft Visual C++ と言う有料ソフトが有名ですが、高価なので、この場合ではフリーソフトで用が足りるでしょう。 なお、それぞれの処理速度は C/C++ > Java >> perl と言う順序になります。モンテカルロ法では計算を数10万回~数億回することになりそうですので、C/C++言語で書くのが実行速度が速いので、その方が良いでしょう。(但しC/C++の文法は初心者にはとっつきにくいとされる。) Java言語の処理系(コンパイラ、実行環境等) http://www.java.com/ja/ C/C++言語の処理系(コンパイラ、デバッガ) http://homepage3.nifty.com/mmgames/c_guide/p_bcc.html Microsoft Visual C++ も、昔のバージョンならば無料で使えるようです。 http://msdn2.microsoft.com/ja-jp/evalcenter/bb188238.aspx perl言語(ActivePerl)の処理系 http://www.activestate.com/store/productdetail.aspx?prdGuid=81fbce82-6bd5-49bc-a915-08d58c2648ca その他、私が使っている方法ですが、cygwin と言う Windows 上で Linux ライクなコマンド群を使える環境をインストールすれば、Java、C/C++、perl すべて使うことができます。(但し必要なパッケージを選択してインストールしなければならない) http://sohda.net/cygwin/

noname#48118
質問者

お礼

とても丁寧に教えて頂きましてありがとうございました。 時間の余裕があまりなく、そして私の知識にも限界があるようです。 しかし、もう少し勉強してわかってきたときに、活用したいと思います。 参考になりました。

その他の回答 (1)

  • maku_x
  • ベストアンサー率44% (164/371)
回答No.1

モンテカルロ法やベイズ法を使って、何をするのかが分かりませんので、詳細はそれぞれの言葉で検索して、調べて頂くとして、 (1) VBScript や JavaScript と言った言語を使用してプログラムを書けば、Windows に標準添付の Internet Explorer 上で実行することができますので、この場合は特別なソフトは不要です。Microsoft Acess や Excel がインストールされていれば、マクロでプログラムを書けば、それ以外のソフトは不要です。ですが、これらの方法では多量のデータを処理するのに時間がかかりますから、一般的にはコンパイラ等のプログラミング言語処理ソフトを私用したほうが良いでしょう。 (2) Excel のマクロで書けば可能ですが、多量の計算・データ処理は不得意と言えます。多量の計算を行うならば、下記のプログラミング言語を使用するのが良いでしょう。 (コンパイラ型言語) ※ プログラミング言語を実行可能ファイルに変換するもので、記述したプログラミング言語を高速に処理することができます。 C、C++、Java など (インタプリタ型言語) ※ プログラミング言語をそのままの形式で 1つづつ解釈して実行するもので、その分記述したプログラミング言語の処理速度は落ちます。 perl, PHP, ruby, BASIC など ※ この中で比較的良く使われるプログラミング言語としては、Java、C++、perl が挙げられます。 (3) (4) モンテカルロ法、ベイズ法、と言うキーワードで検索すれば、いろいろな情報が得られますので、探してみてください。

noname#48118
質問者

お礼

とても丁寧に教えてくださり、ありがとうございます。 もし良ければ、もう少し教えて頂けないでしょうか。 それぞれの言葉がわからず、検索にかけてみたのですが、まだぼやっとしてわかるようなわからない感じなのです。 (1)は、Internet Explorer も Microsoft Acess も Excel がインストールされているので、大丈夫だと思います。 マクロもマニュアルを見て勉強しようと思います。 >ですが、これらの方法では多量のデータを処理するのに時間がかかりますから、一般的にはコンパイラ等のプログラミング言語処理ソフトを私用したほうが良いでしょう。 ですが、時間が掛かるといった欠点がある以上、コンパイラ等のプログラミング言語処理ソフトを使えば、マクロを知らなくてもすぐに計算してくれるものなのでしょうか? (2)は >比較的良く使われるプログラミング言語としては、Java、C++、perl が挙げられます。 こちらはお店で売っているものなのでしょうか?(基本的過ぎた質問で申し訳ございません) リスク計算をしようと思っています。 例えば p(t)=x0/{√(2Πσ^2t^3)}exp[{-(x0+r*t)^2}/2σ^2t]という公式に数値をあてはめていきたいのです。 (この前段階でいくつか積分や統計学が必要になります。計算式自体、意味不明でこれから解読段階なのです…)

関連するQ&A