• ベストアンサー

データの加重平均について

加重(重み付き)平均について、これまでの類似の質問を読んでもわからないことがあるので お教え下さい。共通テストでの各小学校ごとの平均点の加重平均や平均株価などでは、重みが 生徒数や株式発行数になるのは理解できるのですが、単なる測定データの場合は重みはどうす ればよいのでしょう。例えば、理論的には同じ値になる(どんな値になるかはわからない)は ずの測定を100回したとすると、得られた値はばらつくのですが、普通に相加平均をとると、 すごく他から離れた値があったりした時に、悪い結果になってしまいます。そういう値の影響 を小さくするために相加平均ではなく加重平均を取りたい訳なんですが、その場合の重みは、 一応、相加平均を計算して、「それぞれの値と相加平均との差の絶対値の逆数」ということで 良いのでしょうか。それとも別のもっといい方法があるのでしょうか。よろしくお願いします。

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

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

 ご質問の3行目までを拝見すると、加重平均を正しく理解していらっしゃることが分かります。要するに「データが幾つかのグループに分けてあって、各グループの平均値が分かっている。ここで、全部のデータの平均を計算したい。その場合、全部のデータから平均値を計算し直す代わりに、グループの平均値を利用して同じ答を簡単に計算できる」というだけの、単なる「要領の良い計算方法」に過ぎません。  一方、ご質問の問題は、計算の形としては加重平均と同じことになるけれども、その意味が全く違いますので、区別が必要です。 [1] まず「平均値って数学的にはどういう意味なのか」を確認しましょう。 「理論的には同じ値になるはずの測定である」ということは、j回目の測定値をx[j]とするとき、 x[j]= a + ε[j] という理論がある訳です。この式をモデルと言います。で、モデルを実測データx[j](j=1,2,…,N)になるべく合うように当てはめます。「なるべく合う」という感覚的な話じゃどうにもならないので、モデルと実測データのずれを測るための E(a) = Σ(ε[j]^2) (Σはj=1,2,…,Nについての総和、^2は二乗) という尺度を考え、「E(a)が小さいほどモデルと実測データが良く合っている」とします。 すると、E(a)が最小になるようにaを決定すれば良い。  これは「最小二乗法」と呼ばれる方法です。  実際にどうやって計算するかというと、E(a)はaを変えると変化する訳ですが、E(a)が最小になるようなaの近辺ではE(a)の変化がなくなりますから、 dE(a)/da = 0 となる。このことを利用して dE(a)/da = Σd(ε[j]^2)/da = 2Σ(ε[j](d(ε[j])/da)) = 2Σ(ε[j](d(a + ε[j])/da)) = 2Σ(ε[j](da/da)) = 2Σε[j] = 2Σa - 2Σx[j] = 2Na - 2Σx[j] これが0になるようにaを決めるのだから、 a = (Σx[j])/N とすれば良い。これは平均値の計算方法そのものですね。  つまり、「平均値を計算する」ということの数学的な意味は 「E(a) = Σ(ε[j]^2) (Σはj=1,2,…,Nについての総和、^2は二乗) とするとき、E(a)が最小になるようにaを決定する。」 ということに他ならないのです。(これはガウスによって確立された理論であり、この理論によって平均値というものが他の代表値(中央値、最頻値など)とは違う、明確な意味を獲得したのです。丁度フランス革命の頃の話。) [2] 毎回の計測で計測誤差が同じでない場合の重み付き平均。 すごく他から離れた値があったとき、それが測定方法に起因するランダムな誤差によるものである場合には、最小二乗法の範疇で処置できます。測定の度に使う計測器が異なっていて、j回目の測定に使った計測器は誤差が標準偏差σ[j]を持つ分布に従うとしましょう。この場合、誤差の標準偏差が小さい測定結果は重要ですし、大きいものは重要でない。そこで、 「E(a) = Σ((ε[j])/σ[j])^2) (Σはj=1,2,…,Nについての総和、^2は二乗) とするとき、E(a)が最小になるようにaを決定する。」 のです。これを重み付き最小二乗法と言います。上記と同様にして具体的な計算方法を出してみると a = (Σ(x[j]/σ[j]))/(Σ(1/σ[j])) という重み付き平均になります。重みは1/σ[j]ですね。 [3] 「あり得ない」測定値が入る場合  「いや、計測手段は毎回同じなので、誤差のばらつきも同程度の筈である。だからデータがだいたい揃う筈だ」という知識があり、なのにその知識から考えてあり得ないような凄く離れた値が混じっているという場合。測り間違いとか、転記ミスなどの、外乱による異常値が入っているおそれがある訳です。  そういう異常値の影響を少なくするためには上記の尺度Eでは旨く行きませんので、いろいろな工夫がされていて、「ロバスト・フィッティング」と呼ばれます。(ある種の重みを付けるんですが、それらの具体的な方法と評価については、「最小二乗法による実験データ解析」(東京大学出版会)をお勧めします。)  ただし、そういう工夫をすると、算出したaの意味は[1][2]のような単純なものではなくなってしまいますし、「恣意的にデータの選別をしたのではないか。気に入らないデータを無視し都合の良いものだけを選んで計算したイカサマの数値じゃないか」という批判が可能で、このため客観的結果とは言えなくなります。 [4]以上をご承知の上で、ですね、ご質問がお求めなのはロバスト・フィッティングをやりたい、ということでしょうか。すると、 (1) |ε[j]|が小さいなら、最小二乗法とほとんど同じになって欲しい。 (2) |ε[j]|がうんと大きいなら、その測定値x[j]はほとんど無視したい。  個々のデータについてこの二つのルールのどっちを適用するかの判断には、|ε[j]|が小さいとか大きいとかいうための比較基準が必要です。どうしましょうか。  もし、沢山のデータの中にごく僅かの異常値が入っているのであれば、まずは普通に最小二乗法を使って、a(つまり平均値)とε[j]の標準偏差(つまり普通の標準偏差)bを計算しても、bの値は大きくは狂わないでしょう。ならば、この標準偏差bを基準にできます。例えば ●|ε[j]|>2b なら重みを0にする。さもなくば重みを1にする。 というのもアリです。でも異常値が2bを越えるかどうかで扱いがまるで変わるのが気に入らないと仰るならば、滑らかに変化する重み(ただし|ε[j]|が0に近いときは1、うんと大きい時は0)を付ければいいでしょう。例えば ● |kε[j]/b)|>πなら重みを0にする。さもなくば重みを(1/2)(1+cos( kε[j]/b))にする。(kは適当な定数です。たとえばk=1ぐらいとか。)

tcnq
質問者

お礼

詳細なご回答をいただきどうもありがとうございました。お礼が遅れまして申し訳ありません。 最小二乗法のお話が大変参考になりました。また、[3]の考え方で、とりあえず平均値との差が 標準偏差の10倍以上あるデータは無視(重み0)にすることにしました。

その他の回答 (1)

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.2

「1つだけ飛び離れたデータがあるので、その影響を除きたい」という話と「加重平均」の考え方は、何の関係もありません。 飛び離れたデータを除いてよいか? という問いに対して、統計学は一般的な答を持っていません。 * 統計学の検定に関する知識と * そのデータが出てくるメカニズム の両方を熟知した人でなければ判断できない問題です。

tcnq
質問者

お礼

ご回答どうもありがとうございました。おっしゃるように、やりたかったのは加重平均ではなく 最小二乗法の問題であるようです。こちらで調べてみると参考になる情報が色々と得られました。