• 締切済み

Excelで最大値を与える説明変数求める方法

ソルバーを使うと結構な確率でエラーになります。 共役傾斜法とか準ニュートン法ってのが「最初にどこからスタートするか」に依存するからのような気がするのですが、そこで、 (1)適当に正規分布に従う乱数を100個発生させる。 (2)その乱数を説明変数にして目的変数を得る。これを100回繰り返す。 (3)100個の目的変数が得られたら、そのうち目的変数の値が大きい方から上位50個についての説明変数の標準偏差を求める(下位50個は捨てる) (4)上位50個の目的変数のうちでも最大値を与える説明変数1つを選らんで平均値とし、(3)で求めた上位50個の標準偏差を標準偏差として、この2つのパラメータにて正規分布に従う乱数を50個出す。 (5)先ほど(3)で使った上位50個の説明変数(下位50個は捨てる)と(4)の50個説明変数の計100個より100個の目的変数を得る (6)以後(3)~(5)を何度も何度も繰り返す。そのうちに上位50個の標準偏差がだんだん小さくなってくる。ある程度小さくなったところで、そのときの説明変数を「目的変数を最大にする説明変数」とする。 というVBAのマクロを組んでみたところ、時間はかなりかかるするものの(と言っても等間隔の目的変数をしらみつぶしにする方法よりははるかに速い)、エラーになりにくい(もちろん関数が収束するなら)し、結果を念のためソルバーに入れてやるとほぼそこから答えが動かない、と、結構いいような気がするのですが、悲しいことに基礎的な素養が無いからこれが数理的に正しいことなのかわかりません。 感覚的には正しい気がするのですが、いかがなものでしょうか。

みんなの回答

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

質問者さんが考えた方法は、遺伝的アルゴリズムの一種ですね。 収束すれば、少なくともlocal maximum(局所最大値)にはなっているのではないでしょうか。 制約なしの最適化問題(目的変数がとれる範囲などが決まっていない場合)に対して非常に強力な、遺伝的アルゴリズムとして、 Differential Evolution(DE法) っていうものがあります。 質問者さんのアイディアと似ている部分もあるような気もします。ちょっと違いますが。 DE法は、実際かなり強力で、目的関数がぐにゃぐにゃしてる場合(いたるところに、local maximumがあるような場合)にも、結構使えます。 http://en.wikipedia.org/wiki/Differential_evolution

min669
質問者

お礼

うわぁ~英語だぁ…日本語でも分からんのに自分にはちょっと荷が重いですが、「遺伝的アルゴリズム」というキーワードが分かったので、それを手がかりにちょっと勉強してみます。

  • f272
  • ベストアンサー率46% (8014/17130)
回答No.1

数理的に正しいって言うのがどういう意味かよくわからないけど、極大値を求める方法のひとつですね。それが最大値であるかどうかは、説明変数から目的変数を得る式の形によるのでなんともいえません。その式がかなり滑らかであれば不必要に多量の計算をしていることになりますが、式がかなりでこぼこの時にはよい方法です。 私なら、一様分布に従う乱数をつくりそれを説明変数の初期値にして共役傾斜法とか準ニュートン法を使います。うまくいかないのであれば次の乱数を作り、またそれを説明変数の初期値にして共役傾斜法とか準ニュートン法を使います。滑らかな式で表されているのでしたらこれで十分です。

min669
質問者

お礼

最初は一様分布、と言うか探索する範囲を等間隔で区切って→その中で最大値を求めて→範囲を狭くして行って…という方法をやったのですが、とても時間がかかってVBAごときじゃ実用にならなかったんですよね。で、正規分布なら凸部分がどんどん高い方へ向いていくだろう、というアイディアでした。 ちなみに、ということでExcelのファイルを添付したかったのですが、音声とか画像でないと受け付けてくれないんですよね。拡張子をmp3とかに変えてみても駄目でした。

関連するQ&A

  • 二変数の線形近似の方法

    ある二変数(x,y)に正の相関があることがわかりました。 最小二乗法などで回帰直線を求めてみたのですが、散布図に当てはめても、どうもずれているようなものになってしまいました。 変数が正規分布しているとみなせるなら、傾きが(yの標準偏差)/(xの標準偏差)、点(xの平均,yの平均)を通る直線で近似できると思うのですが、かなり歪んだ分布で、片方に裾が広がっています。 このようなケースでうまく近似する直線を求めるにはどうすればよいでしょうか。方法が間違っているのでしょうか。 質問に不備がありましたら補足要求をお願いします。よろしくご指導ください。

  • 最大値(最小値)の分布

    ある母集団は、平均値がAの正規分布又はポアソン分布であり、その標準偏差は√Aで表されます。その母集団から、N個サンプリングしたとします。(正規分布とポアソン分布のどちらで考えてもいいです。) N個サンプリングしたデータについて、最大値と最小値の標準偏差はどのように表されるでしょうか。平均値Aとサンプリング数Nで表されるはずなのですが、どうしても分かりません。 よろしくお願いいたします。

  • 中心極限定理と分布について

    中心極限定理により、不規則変数の加算によってできる不規則変数は、 平均値を中心に正規分布するようになるため z= y-6 は、平均:0、標準偏差:1の正規乱数となり、基本となる正規分布:N(0,1)と書く。 と書いてあるのですが、正規分布Nというのは山なりの感じの図でよろしいのでしょうか? 後これだけ見てz=y-6が平均0で標準偏差1というのもよくわかりません・・・ ノートを見てもzというのは書いてないのですが、数学関係でいう専門用語のzはなんでしょう。 また中心極限定理もよくわかりません、すいません・・・

  • 正規分布・確率変数の質問です。

    1)標準正規分布に従う乱数を、平均μ、分散σ2(←2乗です。)の正規乱数に変換したい。どのようにすればいいか理由と共に答えよ。 2)確率変数Xが(0,1)の範囲で一様分布に従うとき、Y=1-Xと変換すれば、Yはまた一様分布となることを示せ。 大学院入試問題の上記2題の問題の回答方法がわかりません。 当方確率は計算系しかやってこなかったのでこのようなタイプの問題は解いたことがありません。 レベル的にはどの程度のものなのでしょうか? このような問題対策にはどういった演習をすればよいのでしょうか? ご教授願います。

  • 最大値の平均と標準偏差

    仕事で解が解けずに悩んでいます。助けてください。 平均値E(1)~E(N) 標準偏差V(1)~V(N)の正規分布の確率分布を持つN群の独立した事象があるとします。各集団のn数は等しく十分に大きいものとします。 このときに各集団から1つづつ任意にサンプルをNコ取り出して、その最大値がどのような確率分布(平均と標準偏差)になるか、一般解を求めたいと考えています。 もっとも単純な例として、等しい分布の集団から2コ取り出す例で 平均:E(1)=E(2)=150 標準偏差;V(1)=V(2)=50とおいてn=5000で実数検証してみると、最大値の分布は E=178 V=40ぐらいになりました。 処理時間ばらつきを持つ工程をNコ連続配置したときにスループットがどのようになるかの推定が目的です。

  • 平均値と標準偏差から確立密度関数(曲線)を描く方法

    確立密度からその平均値と標準偏差を求めると正規分布曲線を描くことが可能ですが、同じように平均値と標準偏差を使ってスチューデントt分布やラプラス分布、コーシー分布曲線を求めることは可能なのでしょうか? 現在、確率変数とその確立密度の値はあるのですが、正規分布には乗らないため別のフィッティング関数を探しています。

  • 重回帰分析の説明変数の対数化について

    重回帰分析を行っています。説明変数の対数化の必要性ついて教えてください。先生によると、説明変数を対数化し、正規分布に近づけることで、残差を正規に近づける効果があると聞いたのですが。。。ここで質問なのですが、たとえば臨床検査値をそのまま説明変数としてステップワイズにかけても選択されないのに、対数化すると有意な因子として選択されるとします。この対数化された検査値の解釈の仕方なのですが、臨床現場での生かすとしたら、「対数化された臨床検査値が目的変数に影響を与える」という意味になるのでしょうか。

  • 正規分布に従う乱数

    C言語で平均,標準偏差を指定して正規分布に従う乱数を発生させるにはどうしたらよいのでしょうか?

  • 標準偏差について

    ある正規分布(標準偏差a)に従う集団からある正規分布(標準偏差b)に従う集団を引いたもの(または足したもの)の正規分布の標準偏差cは、aとbを用いてどのように表せるのでしょうか? 確か数式があったと思うのですが、ど忘れしました。 平均はただ足しただけだったと思うのですが、 標準偏差は足してルートとったりとかしてたような気が… ネットで調べてもうまく見つからないので、 覚えている方がいればお願いします。 稚拙な説明で申し訳ありません。

  • 確率統計 プログラム

    (1) 正規乱数の発生–中心極限定理の利用  中心極限定理を利用して,区間[0, 1) の一様乱数から標準正規分布N(0, 1) に従う正 規乱数を100,000 個発生し,そのデータから得られる以下の各項目を報告しなさい. ここでは,一様乱数の生成は合同式法を用い,また,正規乱数の生成は中心極限定 理を利用して,いずれも自分で作成したC 言語プログラムで実現すること.(既存の RAND 関数などを用いない) 1. 100,000 個の正規乱数の平均値.なお,理論値は0 である. 2. 100,000 個の正規乱数の標準偏差.なお,理論値は1 である. 3. 100,000 個の正規乱数のヒストグラム(頻度分布).ただしここでのヒストグラ ムは,区間[−5, 5] を100 分割したものとする. 4. 100,000 個の正規乱数のヒストグラム.ただしここでのヒストグラムは,区間 [2.5, 5] を25 分割したものとする.これは,前項3 の右端部を取り出したもので ある. 5. 正規乱数を発生して上項1 ∼ 4 を求めるために作成した,プログラムのソース. (2) 正規乱数の発生–Box-Muller 法  ボックス・ミュラー法により,区間[0, 1) の一様乱数から標準正規分布N(0, 1) に従う 正規乱数を100,000 個発生し,そのデータから得られる以下の各項目を報告しなさい. ここでは,一様乱数の生成は合同式法を用い,また,正規乱数の生成はBox-Muller 法 を用いて,いずれも自分で作成したC言語プログラムで実現すること.(既存のRAND 関数などを用いない) 1. 正規乱数の平均値. 2. 正規乱数の標準偏差. 3. 正規乱数のヒストグラム.区間[−5, 5] を100 分割したものとする. 4. 正規乱数のヒストグラム.区間[2.5, 5] を25 分割したものとする. 5. プログラムのソース. (3) 両者の比較課題1, 2 で得られた結果を比較し,2 つの方法で得られた正規乱数の性質 に違いが見い出されれば,それを考察しなさい. 何ですけどお願いいたします 期限は2009/7/27