データの真ん中を求めるアルゴリズムについて質問です。


例えば、いま5から9までの座標において、全ての値が100の場合

100 100 100 100 100
5 6 7 8 9

(100*5+100*6+100*7+100*8+100*9)/(100+100+100+100+100)
=7

となり真ん中の値を取ります。たとえば
120 900 110 100 150
5 6 7 8 9

(120*5+900*6+110*7+100*8+150*9)/(120+900+110+100+150)
=6.4638

となります。つまり一番強い値に近い番号を取得できるわけです。
ですが、なぜこのアルゴリズムで取得できるのか、ピンとこないわけです。
わかりやすい説明ができる人いらっしゃいますか?

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2012/02/16 03:58:21
  • 終了:2012/02/23 04:00:03

回答(3件)

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492012/02/16 05:05:57

ポイント100pt

まずは、下記のようなデータがあったとします

年収人数
10002
7008
50030
30060

単純に計算すると平均年収625万になりますが、
どうみても実情に合ってないですよね?
式1:(300+500+700+1000)/4=625

では、人数分のデータで計算してみるとどうでしょう?
式2:(300+300+300+300+300+ 途中省略+1000+1000) / (60人+30人+8人+2人) = 406
これなら、そこそこ納得出来そうな数値が返ってきますよね?

式を簡単にすると質問文のような式になります
式3:(300*60+500*30+700*8+1000*2) / (60+30+8+2) = 406

なお、
式3で求められる平均は「加重平均」と呼ばれていて、
式1の「算術平均」よりもデータの性質をよく表します

平均の取り方は他にもいくつかありますので、
統計処理を行うのであれば、さらなる学習が必要になってくるかもしれません
http://ja.wikipedia.org/wiki/%E5%B9%B3%E5%9D%87

id:central_dogma

しっくりきました。
統計はあまり勉強してきませんでした。
加重平均が具体的にプログラム中にでてきたことがなかったものですから。
この箇所は速度ゼロの場所を探索する場所で出てきました。

2012/02/16 16:14:27
id:bnn No.2

bnn回答回数67ベストアンサー獲得回数202012/02/16 06:30:32

ポイント100pt

既に良い回答がでていますが、ものすごく単純にしてみると面白いかもしれない。

1 100 1 1
1 2 3 4

(1*1+100*2+1*3+1*4)/(1+100+1+1) =

   1*1      100*2       1*3       1*4  
1+100+1+1   1+100+1+1    1+100+1+1   1+100+1+1

= 0.0097 + 1.94 + 0.029 + 0.039 ≒ 2

もちろん実用的なデータとは程遠いですが。

http://www.hatena.ne.jp

id:ita No.3

ita回答回数204ベストアンサー獲得回数482012/02/17 00:45:08

ポイント100pt

補足になりますが、
この計算で求まる値は「重心」とか「加重平均」とか呼ばれます。なぜでしょうか。

たとえば
120 900 110 100 150
5 6 7 8 9
という例で、10cmのモノサシの5cmの所に120gの重り、6cmの所に900gの重り、7cmの所に110gの重り・・・と5個重りをつけます。
このモノサシを輪ゴムに通し、どこかで持ち上げてつり合う場所を考えます。テコの原理から輪ゴムから離れるほど傾ける力が大きくなります。

                        x
                        |
0---1---2---3---4---5---6+--7---8---9---10
                    |   |   |   |   |
                  120 900 110 100 150

輪ゴムをx cmの場所にすると、たとえば5cmの所の重りは 120*(x-5) の傾ける力があります。左が下がる方をプラスにしてあります。
これを全部足して0になる条件は
(x-5)*120+(x-6)*900+(x-7)*110+(x-8)*100+(x-9)*150=0
これをxについて解くと件の式が出てきます。
http://ja.wikipedia.org/wiki/%E9%87%8D%E5%BF%83

id:central_dogma

I understand. thank you for replying my question.

2012/02/21 01:00:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません