← ホームに戻る

平均は1つじゃない!算術平均・加重平均からベイズ推定まで

平均の種類を表す天秤やデータを、りょんた・おこめ・めいが観察しているドット絵

// 記事のポイント

  • 算術平均は分かりやすい一方、外れ値やデータの粒度に影響されやすい
  • 加重平均は、件数・重要度・信頼度などに応じて各値の影響を変えられる
  • トリム平均やWinsorize平均は、極端な値の影響を抑えるための代表的な方法
  • ベイズ推定やクラスタリングは平均の一種ではなく、必要に応じて平均と組み合わせる手法
りょんた
今日は「平均」について考えてみるよ! 平均というと、全部を足して個数で割る方法を思い浮かべるよね。でも実務では、データの特徴や知りたいことに合わせて、加重平均やトリム平均などを使い分ける必要があるんだ。 僕も最近、シミュレーション予測の計算方法を見直して、平均の選び方の大切さを実感したよ〜。
おこめ
平均って、みんな同じくらいに分けることじゃないの? おやつなら、こめは大きい方を担当するよ!

算術平均と中央値をおさらいする

最も身近な「算術平均」は、すべての値を合計してデータ数で割る方法だ。 例えば、10回の所要時間が「4、5、5、6、6、7、7、8、30、90分」なら、算術平均は合計168分を10で割った16.8分になる。しかし、多くは4〜8分なのに、30分と90分という極端な値に引っ張られている。 このデータを小さい順に並べ、中央を見る「中央値」は6.5分だ。中央値は厳密には平均の一種ではなく代表値だが、外れ値の影響を受けにくいため、算術平均と一緒に確認するとデータの姿をつかみやすい。
総務省統計局で平均値・中央値・最頻値を見る
めい
同じデータでも、16.8分と6.5分では印象が全然違うね。 「平均はいくつ?」だけじゃなくて、どうやって出した平均なのかも確認した方がよさそう!
りょんた
そうなんだよ! 僕はシミュレーション予測で、過去ログの中央値を使っていたんだ。でも、ログごとの粒度がバラバラなのに、各ログを同じ1件として扱っていたため、予測したい対象との対応がうまく取れず、なかなか精度が上がらなかった。 そこで、ログが表す量を重みとして反映する加重平均へ切り替えたところ、意味のある量の違いを計算に入れられて、実際に精度向上につながったよ!

加重平均で重みをつける

加重平均は、値ごとに重みを掛けて合計し、それを重みの合計で割る。式で表すと「Σ(値×重み)÷Σ重み」だ。 例えば、100件を代表する予測値が10分、10件を代表する予測値が30分だったとする。2つの値を単純平均すると20分だが、件数で加重平均すると「(10×100+30×10)÷110」で約11.8分になる。こちらは110件全体を代表する値として解釈しやすい。 ただし、重みは大きければよいわけではない。件数、売上、観測時間、信頼度など、予測したい対象と対応する量を選ぶ必要がある。目的に合わない重みを付けると、かえって偏りを強めることもある。 「多重加重平均」は、算術平均や加重平均のように定義が1つに定まった一般的な名称ではない。複数の要因から合成した重みを使う方法や、グループ内とグループ間で段階的に加重平均する方法を指して使われることがある。いずれも、重みを決めた後の計算は加重平均と考えると分かりやすい。
産総研の解説で重み付き平均を見る
おこめ
こめの「かわいさ」と「お散歩の頑張り」を掛けたら、重みがすごく大きくなりそう! その平均なら、おやつも増えるよね?
りょんた
その重み付け、査定するのが僕だけだと甘くなりすぎそうだな(笑)

極端な値に強いトリム平均・Winsorize平均

極端な値への対処には、トリム平均とWinsorize(ウィンザー化)平均も使われる。 先ほどの10個の所要時間で、上下10%を除くトリム平均を考える。一番小さい4分と一番大きい90分を取り除くと、残る8個の平均は9.25分になる。極端な観測を計算から除外するため、外れ値の影響を抑えやすい。 一方、上下10%のWinsorize平均では、4分を次に小さい5分へ、90分を次に大きい30分へ置き換える。10個のデータ数を保ったまま平均すると10.9分になる。 トリム平均は端のデータを「除く」、Winsorize平均は端の値を境界値へ「置き換える」のが違いだ。どこまでを極端とするかで結果が変わるため、結果を見て都合よく割合を選ぶのではなく、業務上の理由や事前ルールを決めて使いたい。
e-Statでウィンザー化の定義を見る
めい
データを捨てる方法と、端の値に置き換える方法があるんだね〜。 外れ値が入力ミスなのか、本当に起きた大切な出来事なのかを確かめてから選ぶのも重要そう。
おこめ
こめは、大切な出来事の方が多い気がする!

幾何平均・調和平均・RMSなど、目的別の平均

ほかにも、目的によって役立つ平均がある。 「幾何平均」は、成長率や倍率が連続して掛け合わされる場面に向く。ある値が1年目に10%増え、2年目に10%減ると、変化率の算術平均は0%だが、元の値には戻らず0.99倍になる。倍率1.10と0.90の幾何平均は約0.995倍なので、年平均の変化率は約マイナス0.5%だ。 「調和平均」は、同じ距離を異なる速度で進む場合など、率の平均に向く。往路を時速60km、同じ距離の復路を時速30kmで進むと、全体の平均速度は算術平均の45kmではなく40kmになる。 「二乗平均平方根(RMS)」は、値を二乗して平均し、最後に平方根を取る。誤差が1と3ならRMSは約2.24で、大きな誤差をより強く反映する。予測誤差や信号の大きさを評価するときに役立つ。 なお「移動平均」は、時系列データの一定区間ごとに平均を取り直す方法だ。中心の求め方が新しいというより、平均する範囲を少しずつ動かして変動を滑らかに見る手法といえる。
愛知大学の資料でさまざまな平均を確認する
おこめ
ベイズ推定やクラスター平均も、平均の仲間なの? 名前がどんどん難しくなってきたから、おやつの例でお願い!
めい
たしかに、名前だけだと身構えちゃうね〜。

ベイズ推定とクラスター平均

りょんた
ベイズ推定は平均の種類ではなく、事前に持っている知識と新しいデータを確率モデルで組み合わせ、更新後の分布を求める考え方だよ。その分布の平均である「事後平均」を、推定値として使うことはあるんだ。 例えば、とても単純化して、事前の予測10が20件分の確かさを持ち、新しい5件の平均が14で、1件あたりのばらつきも同じだと仮定する。この限定的なモデルなら、更新後の平均は「(10×20+14×5)÷25」で10.8と考えられる。ただし、実際の事後平均は確率分布や分散の置き方で変わるため、いつでもこの式になるわけではないよ。
AVILENの解説記事でベイズ推定量の導出を学ぶ
めい
確かさとか分散とか、だんだん本格的な数学の話になってきたね〜。 いつもの「全部足して割る」平均とは、考え方からして違うんだね。
りょんた
「クラスター平均」も、一般的な平均の名称というより、似たデータをクラスタリングでグループ分けした後に、各グループ内で平均を出す考え方に近い。短時間・中時間・長時間の利用者に分けて、それぞれの平均を見るような使い方だね。k-means法の中心は各変数の算術平均で表されるけど、クラスタリング自体は平均ではなく分類の手法なんだ。 次に僕が試すなら、まず複数の重みが同じ情報を二重に評価していないか確認して、単純な加重平均を基準にする。そのうえで、合成した重み、グループ別のモデル、ベイズモデルを検証用データで比べたいな。複雑な方法を使うことより、未知のデータでも精度が上がるかを確かめることが大切だね!
おこめ
こめにはちょっと難しかったけど、あとで「大きい方の平均」だけ思い出しておくね!

最後に

りょんた
平均は1つの正解を出す魔法ではなく、データをどの視点で要約するかを決める道具なんだ。何を知りたいのか、各データが何を表しているのかを整理して、目的に合った平均を選んでいこう〜!
めい
難しい話が多かったけど、次にデータを見るときはどの平均を使っているか気にしてみるね〜。

// 記事のまとめ

  • 目的に合う平均を選ぶには、何を1件として数え、何を重みとするかを先に決める
  • 比率の連続的な変化には幾何平均、同じ距離の速度には調和平均、誤差の大きさには二乗平均平方根が向く
  • 複数の要因を重みにする場合は、二重評価や恣意的な重みを避け、検証用データで効果を確かめる

// こめこめハウスの仲間たち

管理人

パパ
りょんた
マーケティング領域を中心に、データ分析・データサイエンスに携わっています。趣味は愛犬遊び、ポイ活、ガジェットなど。
プロフィールを見る →Xでフォローする →

うちの子たち

マルプー
おこめ
小さくて甘えん坊な女の子。自分が一番可愛いと思っている。お散歩じゃなくてパトロールなんだからね!
Instagramでフォローする →
シュナウザー
めい
おこめの姉貴分。大人しい性格の為、いつもおこめに付きまとわれている。優しい人が好きなの。
Instagramでフォローする →