- 締切済み
できるだけ小さい数値の組(x,y)を見つける方法
できるだけ小さい数値の組(x,y)を見つける方法 数学というか、統計について、質問です。 あるシミュレーション計算をして、2つの数値の組(x,y)が大量にあるようなデータをイメージしてください。xとyに相関はないです。 その組の中で、「xもyも、共にバランス良く、なるだけ小さい組」を抽出したいのですが、 数学的にどのような考え方をすればその組を見つけることができるのでしょうか。 バランス良くという意味は、たとえxが最小値に近くても、yが最小値からかけ離れてしまっているような組は避けたいという意味です。 最終的にエクセルか簡単なプログラムで抽出したいと思っているので、良い考えがあれば、よろしくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- ddtddtddt
- ベストアンサー率56% (179/319)
#4です。 >数学的にそういったものを見つける手段はないものでしょうかね この前あげた評価関数J(x,y)=L^2+P^2≧0は非負定値なので、じつはJ(x,y)を最小化する理論解は(x,y)=(0,0)と決まってます(^^;)。直線y=xは原点を通るので、(x,y)はy=xに載りながら(0,0)に達することができます。 なので意味のある解をみつけるためには、何らかの制約条件が必要です。でも制約条件付き最小化問題を解くのはアホくさい気もするので、じっさいにExcelで(x,y)からL^2+P^2を計算し、データリボンの昇順または降順並べ変え機能を使うのが実用的な気がします(^^)。
- staratras
- ベストアンサー率41% (1499/3651)
- Mathmi
- ベストアンサー率46% (54/115)
No.1や他の方々の方法のパクリですが。 A列にデータxを、B列にデータyを入れます。 C列にabs(x-y)、つまり差の絶対値を、D列にx+y、つまり二つの合計を入れます E列に、例えばRank(C1,C:C,true)のように、C列の値が小さい順にランキングを付けます。 F列も同様に、D列の値のランキングを付けます。 G列に、E列とF列の合計を入れて並び替えれば、小さい数値の組が見つかると思います。 「xもyも、共にバランス良く、なるだけ小さい組」の条件によっては、D列にx^2+y^2を入れたり、G列の評価をE列*2+F列*3のようにすれば、上手くいくのではないでしょうか。
お礼
回答ありがとうございます. 良い方法だと思います. 統計数学の分野ではこういった問題に対処する方法はないのでしょうか.
- skydaddy
- ベストアンサー率51% (388/749)
#1です。 >>min関数で考慮するエリアは? C列で昇順ソートしたデータを見ると希望する最大差(AとB)の範囲が連続して並んでいます。例えば3なら0~3のところ。D列でこの範囲についてmin関数で最小値を見つければ、目的の組になります。 実際の操作では、=min(まであるセルに入力して、マウスのホイールなどで範囲の最初(0なら一番上)を見つけてそこをクリックし、またホイールなどで終わりを見つけてshift+クリックで範囲設定、その後Enterで結果が出ると思います。
お礼
回答有り難うございます. 自分で許容できる差のスレッショルドを決めておき,その範囲にてMin関数を適用するということでしょうか.そうなった場合,データが何百万となるとどうにもならなくなってしまうと思うのです
- ddtddtddt
- ベストアンサー率56% (179/319)
P=(x,y)から直線y=xに引いた垂線の長さLを計算します。J=L^2+P^2を最小とする(x,y)は、出来るだけx=yで出来るだけxもyも最小となりそうな気がしますが、どうでしょう?(^^;)。
お礼
回答有り難うございます. たしかに,いい方法な気がしますね. 数学的にそういったものを見つける手段はないものでしょうかね.
- staratras
- ベストアンサー率41% (1499/3651)
一つの例です。 A列に1からnまでの通し番号が、B列にxの値、C列にyの値がそれぞれ入力されているとします。(x≧0、y≧0とします) D列にx^2+y^2の値を計算させ、これをキーにして昇順に並べ替えます。 最上位に原点(0,0)からの距離が最小の値が来ます。
お礼
回答ありがとうございます。 データをxy平面上の点とみて、原点からの距離が最小のものを選ぶという考え方ですね。これについては私も考えたことがあるのですが、ちょっと問題点があるのです。 例えば原点を中心とする半径rの円を考えたとき、その円周上にいる点はすべてx^2+y^2の値は同じになります。 staratrasさんの手法だと、すごく極端な話、r=1の円周上にある点(1,0)と、r=1よりほんの大きな円の円周上にあって、直線y=x上にある点(0.71,0.71)を比べると、(1,0)の組がセレクトされてしまうことになります。 これだと、あまり「バランスが良く」ない気がするのです。
- info33
- ベストアンサー率50% (260/513)
x>0, y>0としておきます。 >できるだけ小さい数値の組(x,y)を見つける方法 [1] (i) (x,y)をxの小さい順に並べる。 (ii) xの小さい順に並べた(x,y)につき積 xyを計算して最小の組(x,y)をリストアップする。 [2] (i) (x,y)をyの小さい順に並べる。 (ii) yの小さい順に並べた(x,y)につき積 xyを計算して最小の組(x,y)をリストアップする。 [3] [1]-(ii)と[2]-(ii) でリストアップした組(x,y)の内,2重カウントの組をリストから取り除く。 (2重カウントは組(x,y)に付番しておくことでチェックできる)
お礼
回答ありがとうございます。 少し疑問が残ったので、例を使って聞かせてください。 例えば、x,yの組が 5,5 2,3 5,1 1,5 だとして、[1](i)は、 1,5 2,3 5,5 5,1 で、[1](ii)は 5 6 25 5 です。最小値は5で、(1,5)と(5,1)が得られました。 [2](i)は 5,1 2,3 5,5 1,5 で、[2](ii)は、 5 6 25 5 です。最小値は5で、(5,1)と(1,5)が得られました。 [3] ここがわかりません。上の例の場合、結局何が結果になるのでしょうか。(1,5)も(5,1)も、積は小さいですが、xもしくはyが大きい値がセレクトされてしまっている気がします。 私は、統計数学には詳しくないのですが、上記[1]-[3]の手続きはなにか数学的な根拠はあるのでしょうか? よろしくお願いいたします。
- skydaddy
- ベストアンサー率51% (388/749)
「xもyも、共にバランス良く、なるだけ小さい組」がxとyの差が小さく(一定値以下で)、和がもっとも小さいxyの組みならば、 xの入った列、yの入った列の隣にabs(xーy)のデータを作成し、データをこの列で小さい順にソート。 その隣の列にx+yのデータを作成して、 min(データ範囲)で最小値の組みを抽出することで見つけられます。 xyから新たに作る数字は、数式の入ったセルを作れば、それを必要なところにコピーするだけで一気にできます。データ万単位であっても数秒で作業完了です。
お礼
回答ありがとうございます。 > min(データ範囲)で最小値の組みを抽出することで見つけられます。 このあたりが少しわからないのですが、 たとえばエクセルで作業することを考えると、 ・A列にxのデータを、B列にyのデータを格納 ・C列に=abs(A1-B1)のようにして、差の絶対値をそれぞれ求める ・D列に=A1+B1のように、和を求める ・C列について行をソート というところまでは理解したつもりですが、min関数で考慮するエリアはどこでしょうか。
お礼
回答ありがとうございます. 良い方法だと思います.比較画像も参考になりました.ありがとうございました. 統計数学の分野ではこういった問題に対処する方法はないのでしょうか.