収集方法とバイアス|データ要求・収集・利用条件

このページはプロモーション(広告)を含みます。

データ要求・収集・利用条件(初級・読む30分+演習30分)

この授業のゴール

仕事でどう使うか

データは「どうやって集めたか」で、答えられる問いが決まります。集め方に偏りがあると、データを何倍に増やしても結論は正しくなりません。

路線 この授業の使いどころ(成果物・意思決定)
DS 分析報告に「このデータは誰を代表しているか」を書く。アンケートやログの偏りを補正してから施策の効果を見積もる
ML 学習データの取得条件と、モデルを使う場面の違いを確認する。品切れ日・審査で落とされた人など、観測されない部分がある学習データは予測を歪める
DX 業務システムで記録する方法を設計する。「処理が完了した案件だけ記録される」仕組みでは、途中で止まった案件が見えなくなる
RS 研究計画の「対象者の選び方」と「限界」の欄を書く。審査や論文で必ず問われる

前提

次の言葉を使います。

統計の詳しい知識は不要です。加重平均(重みを付けた平均)の計算を本文で1つずつ説明します。

身近な状況:満足度4.4点のアンケートは本当か

架空の「みどり商店」は、公式アプリでアンケートを実施しました。

項目 値
配信先 アプリ会員 3,000人
回答数 600人(回答率20%)
満足度(5段階)の平均 4.4点

店長会議で「お客様の満足度は4.4点。サービスは十分」という結論になりかけました。しかし、データ担当は次の点を指摘しました。

  1. みどり商店の顧客は約10,000人。アプリを使っているのはそのうち 3,000人 だけ。店頭だけで買う高齢の顧客7,000人は、配信先に入っていない。
  2. 回答したのは配信先の20%。わざわざ回答するのは、店に好意的な人が多い可能性がある。
  3. 不満を持った顧客は、すでに来店をやめてアプリも消している可能性がある。

つまり4.4点は「アプリを使い続けていて、アンケートに答えるほど関心がある人」の平均であって、顧客全体の平均ではないかもしれません。

需要のデータにも同じ問題があります。品切れになった日の販売数は、欲しい人がいても棚が空なので記録されません。記録される販売数は「需要」の一部しか映していないのです。

この授業では、データの集め方そのものが生む偏りを見分け、対策する方法を学びます。

直感的な説明:かき混ぜずにスープを味見する

鍋のスープの味見をするとき、かき混ぜずに上澄みだけをすくうと、底に沈んだ塩分の濃い部分がわかりません。何回すくっても、上澄みしか取れないので、回数を増やしても誤りは減りません。

データも同じです。

偏りには2種類の「ずれ」があります。毎回ランダムに上下するずれ(ばらつき)は、データを増やすと小さくなります。一方、毎回同じ方向にずれるバイアス(系統的なずれ)は、データを増やしても小さくなりません。集め方の偏りは後者です。だから、集める前、少なくとも分析の前に気づく必要があります。

正確な定義:母集団・標本の枠・代表性・バイアスの種類

主なバイアスの種類

種類 何が起きるか 例
選択バイアス(カバレッジの偏り) 標本の枠が母集団の一部しか覆っていない アプリ会員だけに配信し、店頭だけの顧客を除く
非回答バイアス 回答する人としない人で特徴が違う 好意的な人ほど回答する
自己選択バイアス 参加するかを本人が決める 新サービスに自ら申し込んだ人だけで効果を測る
生存者バイアス 途中で脱落したものが記録に残らない 続けている顧客だけを見て「長く使うほど満足」と結論する
打ち切り(センサリング) ある上限・下限より先の値が観測されない 品切れ日は、需要が在庫数を超えた分が記録されない
測定バイアス 測り方が値を一方向にずらす 「満足していますよね?」という誘導的な質問

主な収集方法と、偏りの出やすさ

方法 長所 生じやすい偏り
業務ログ(レジ・アプリ・システム記録) 大量で安い。行動の記録 記録される条件の偏り(完了した案件だけ、品切れで打ち切り)
調査(アンケート・インタビュー) 理由や意識を聞ける 枠の偏り、非回答、質問の誘導
センサー・機器 自動で細かく測れる 機器の故障・校正のずれ、設置場所の偏り
実験(無作為に割り付けて比べる) 原因と結果を確かめやすい 実験の期間や対象が本番と違う
外部データ(購入・公開データ) 自社にない情報を得られる 取得条件がわからない、利用条件の制約(出所と利用条件)

非回答の影響を数値で見る:回答率を $r$(0〜1の割合)、回答者の平均を $\bar{x}_{\text{回答}}$、回答しなかった人の平均を $\bar{x}_{\text{非回答}}$ とすると、配信先全体の平均は次の式です。

$$\bar{x}_{\text{全体}} = r \times \bar{x}_{\text{回答}} + (1 - r) \times \bar{x}_{\text{非回答}}$$

$r = 0.2$、$\bar{x}_{\text{回答}} = 4.4$ 点で、もし回答しなかった人の平均が3.0点なら、$0.2 \times 4.4 + 0.8 \times 3.0 = 0.88 + 2.4 = 3.28$ 点です。非回答者の平均は観測できないので、4.4点という値は全体の平均を保証しないことがわかります。

段階付き例題:アプリ会員と店頭顧客を分けて満足度を推定する

みどり商店は、偏りを補うために、店頭だけで買う顧客から無作為に100人を選び、店頭で聞き取り調査をしました。

ステップ1(入力)

層 母集団の人数 調査方法 回答数 満足度の平均
アプリ会員 3,000人 アプリのアンケート 600人 4.4点
店頭のみの顧客 7,000人 店頭で無作為に聞き取り 100人 3.6点
合計 10,000人 700人

ステップ2(処理:単純に全回答を平均すると)

$$\frac{600 \times 4.4 + 100 \times 3.6}{700} = \frac{2640 + 360}{700} = \frac{3000}{700} \approx 4.29\ \text{点}$$

回答数の多いアプリ会員の値に引っ張られます。アプリ会員は母集団の30%なのに、回答者の86%(600÷700)を占めているからです。

ステップ3(処理:母集団の人数で重み付けする)

各層の平均に、母集団での割合を重みとして掛けます。この平均を加重平均と呼びます。

$$\frac{3000 \times 4.4 + 7000 \times 3.6}{10000} = \frac{13200 + 25200}{10000} = 3.84\ \text{点}$$

ステップ4(出力と意味)

推定方法 満足度
アプリ回答者だけ 4.40点
全回答を単純平均 4.29点
層ごとに母集団の割合で重み付け 3.84点

顧客全体の満足度は3.84点と見積もられます。特に店頭のみの顧客(3.6点)の満足度が低いことが、アプリのアンケートだけでは見えませんでした。この結果から「店頭の接客やレジ待ちを調べる」という次の判断につながります。

注意:重み付けで直せるのは「層の割合のずれ」だけです。各層の中で好意的な人ほど回答する、という偏りは残ります。店頭で無作為に選んだのは、層の中の偏りを小さくするためです。

操作して理解する:品切れ日は需要を「打ち切って」記録する

内蔵データ demand.csv は、ある商品の2年分の日次販売記録です(架空)。列 stockout は品切れが起きた日なら1、起きなかった日なら0です。

使う関数:groupby('stockout')['sales'].agg(['count', 'mean']) は、品切れの有無ごとに日数(count)と販売数の平均(mean)を求めます。round(x, 1) は小数第1位に丸めます。

import pandas as pd

d = pd.read_csv('/data/demand.csv')
print(d.groupby('stockout')['sales'].agg(['count', 'mean']).round(1))
print('全日の平均:', round(d['sales'].mean(), 1))
print('品切れでない日の平均:', round(d.loc[d['stockout'] == 0, 'sales'].mean(), 1))

出力:

          count   mean
stockout
0           701  155.1
1            30   68.7
全日の平均: 151.5
品切れでない日の平均: 155.1

品切れの日(30日)の平均販売数は68.7個で、品切れでない日の155.1個の半分以下です。これは「品切れの日は需要が少なかった」のではありません。在庫がなくなった時点で、それ以上の販売が記録されなくなった(打ち切られた)のです。

考えてみましょう。

  1. この30日の販売数をそのまま「需要」として学習に使うと、予測は高めになるでしょうか、低めになるでしょうか。答え:低めになります。少なく記録された日を「需要が少ない日」と学ぶからです。
  2. 対策の候補は何でしょう。答え:(a) 品切れの日を学習から除く、(b) 品切れの日であることを列として残し区別する、(c) 品切れ時刻を記録して、品切れ前の販売ペースから需要を推定する。(c) には品切れ時刻という追加の収集が必要です(不足と追加収集)。
  3. 平日・週末で分けても品切れ日は少ないでしょうか。groupby(['stockout', 'weekend']) に書き換えて確かめてください(平日・週末どちらでも、品切れ日の平均は品切れでない日よりずっと低くなります)。

発展:偏りを直す方法と、その限界

層別の重み付け(事後層化):本文の例のように、母集団の割合がわかっている特徴(年代・地域・利用チャネル)で重みを付けます。限界は、重みに使った特徴以外の偏り(同じ層の中で回答しやすい人の偏り)は直せないことです。

無作為抽出と無作為化:最も確実な対策は、集め方の段階で偶然に選ぶことです。標本を名簿から無作為に選ぶ(無作為抽出)と代表性が、処置を無作為に割り付ける(無作為化)と比較の公平さが確保されます。詳しくは 「抽出設計と選択バイアス」(有料版)、「無作為化」(有料版) で学びます。

打ち切りデータの扱い:「需要は少なくとも68個だった」という情報は捨てずに使えます。生存時間分析(解約までの期間など、途中で観測が終わるデータを扱う方法)や、打ち切りを考慮した回帰(トービットモデルなど)がその例です。ただし、どの日が打ち切られたか(品切れフラグ)が記録されていることが前提です。

機械学習での選択バイアス:融資の審査モデルを、過去に「承認された人」の返済記録だけで学習すると、却下された人がどうなったかはわかりません。新しいモデルが過去に却下されていた層を承認し始めると、予測が外れやすくなります。学習データの取得条件と、モデルを使う場面の対象をそろえる、またはその違いを記録して監視します。

限界の書き方:偏りを完全になくすことはできません。報告には「このデータはアプリ会員を中心とし、店頭のみの顧客は100人の聞き取りで補った。回答者は好意的な人に偏っている可能性がある」のように、残っている偏りの向きを書きます。

よくある失敗

失敗1:回答者の平均を、全体の平均として報告する

誤った報告:「顧客満足度は4.4点です」(アプリ会員600人の回答の平均)。

なぜ誤りか:母集団は全顧客10,000人なのに、標本の枠はアプリ会員3,000人だけで、そのうち回答したのは20%です。店頭のみの顧客を含めた重み付け推定は3.84点で、0.56点も差がありました。

直し方:報告には必ず「誰に聞いた値か」(枠・回答数・回答率)を添えます。全体について結論を出したいなら、枠の外の層を別の方法で調べ、母集団の割合で重み付けします。

失敗2:残っている顧客だけを見て結論する(生存者バイアス)

誤った分析:現在の会員を利用年数別に集計すると、利用5年以上の会員の満足度が最も高かった。「長く使うほど満足度が上がるので、長く使ってもらう施策をしよう」。

利用年数 現在の会員の満足度
1年未満 3.5点
5年以上 4.5点

なぜ誤りか:満足しなかった人は途中でやめて、記録から消えています。5年以上の会員が満足しているのは「長く使ったから満足した」のではなく、「満足した人だけが5年残った」可能性があります。

直し方:退会した人も含めて、入会した時点の全員を追いかけるデータ(入会年ごとの継続率や、退会時の情報)を集めます。退会者を記録から消す仕組みなら、消さずに状態を「退会」として残すよう収集方法を変えます。

失敗3:品切れ日の販売数をそのまま需要として学習する

誤った処理:demand.csv の全731日の販売数をそのまま需要として使い、平均需要を151.5個と見積もる。

なぜ誤りか:品切れの30日は、需要が在庫を超えた分が記録されていません(打ち切り)。品切れでない日の平均は155.1個で、全日の平均151.5個より大きいです。品切れが多い商品ほど需要を過小に見積もり、発注量が少なくなり、さらに品切れが増える、という悪循環になります。

直し方:品切れフラグを必ず収集し、品切れ日を除くか区別して扱います。品切れの多い商品では、品切れ時刻を記録して需要を推定します。

失敗4:取得条件を読まずに、外部データを全国の代表とみなす

誤った例:公開されている「全国の消費者1万人調査」の結果を、そのまま全国の消費者の傾向として企画書に書く。

なぜ誤りか:調査方法の説明を読むと、「インターネット調査会社のモニター登録者から回答を集めた」と書かれていました。インターネットを日常的に使い、調査に登録する人に偏っています。高齢者や、ネット調査に登録しない人は含まれにくいです。1万人という人数の多さは、偏りを直しません。

直し方:外部データを使う前に、対象・抽出方法・回答率・実施時期を必ず読みます。企画書には「ネット調査モニターの回答であり、全国の代表ではない」と書き、必要なら自社顧客の調査で確かめます。

まとめ

用語

標本の枠(サンプリングフレーム)(sampling frame)

標本を実際に選ぶことができる名簿や範囲。母集団の一部しか覆っていないと選択バイアスが生じる。

バイアス(bias)

集め方や測り方のせいで、推定値が真の値から同じ方向にずれること。

非回答バイアス(nonresponse bias)

回答した人としなかった人の特徴が違うために生じる偏り。

生存者バイアス(survivorship bias)

途中で脱落したものが記録に残らず、残ったものだけで結論することで生じる偏り。

打ち切り(センサリング)(censoring)

ある上限・下限を超えた値が観測されず、「少なくともこの値」としかわからないこと。品切れ日の需要など。

加重平均(weighted average)

各値に重みを掛けて足し、重みの合計で割った平均。層ごとの平均を母集団の割合で重み付けするときに使う。

よくある質問

なぜ集め方の偏りに、集める前から注意する必要があるのですか?

集めた後では、消えた人や記録されなかった値を取り戻せないことが多いからです。品切れ時刻や退会者の記録は、集める仕組みを作る段階で入れておかないと、後から復元できません。

「ばらつき」と「バイアス」はどう違うのですか?

ばらつきは毎回ランダムに上下するずれで、データを増やすと平均では小さくなります。バイアスは集め方や測り方による同じ方向のずれで、データを増やしても小さくなりません。

どこで失敗しやすいですか?

大量の業務ログを使うときです。量が多いと信頼できる気がしますが、ログは「記録される条件」を満たしたものだけです。完了した注文だけ、ログインした人だけ、品切れでない時間だけ、といった条件を必ず確認します。

母集団の割合がわからないときはどうしますか?

重み付けはできないので、まず母集団の構成を知る方法を探します(会員名簿の年代構成、公的統計など)。それもなければ、結論を当てはめる範囲を標本の枠の範囲に限定し、「アプリ会員について」と明記します。

条件が変わるとどうなりますか? 例えば回答率が上がれば偏りは消えますか?

回答率が高いほど非回答の影響は小さくなりますが、標本の枠の偏り(アプリ会員だけに配信)は回答率を上げても消えません。どのバイアスが残っているかを種類ごとに確認します。

仕事で偏りがあるデータしかないときは、使わないほうがよいですか?

使わないのではなく、偏りの向きと大きさを推定して報告に書き、判断への影響を考えます。たとえば「満足度は高めに出ている可能性がある」とわかっていれば、改善施策の優先順位を判断することはできます。偏りが判断を逆転させるほど大きい場合は、追加収集を計画します(不足と追加収集)。

確認問題

問1 アプリ会員3,000人に配信したアンケートから、全顧客10,000人の満足度を推定したい。この場合の「標本の枠」はどれか。

  1. ① 回答者600人
  2. ② 満足度4.4点
  3. ③ 全顧客10,000人
  4. ④ アプリ会員3,000人
解答と解説

正解:④

標本の枠は、実際に選ぶことができた名簿・範囲です。この調査ではアプリ会員が枠です。

問2 集め方に偏り(バイアス)があるデータについて、正しい説明はどれか。

  1. ① データ量を10倍に増やせば偏りは小さくなる
  2. ② データ量を増やしても、同じ集め方なら偏りは小さくならない
  3. ③ 偏りは平均を取れば必ず打ち消される
  4. ④ データ量が多いほど偏りは大きくなる
解答と解説

正解:②

バイアスは同じ方向へのずれなので、同じ集め方で量を増やしても残ります。小さくなるのはランダムなばらつきです。

問3 品切れの日の販売数が少ないことについて、最も適切な解釈はどれか。

  1. ① 在庫がなくなった時点で販売の記録が止まるため、需要が打ち切られて記録されている
  2. ② 品切れの日はデータの入力ミスなので削除すればよい
  3. ③ 品切れと販売数には関係がない
  4. ④ 品切れの日は需要が少ない日である
解答と解説

正解:①

品切れ後は欲しい人がいても売れません。記録された販売数は需要の下限であり、打ち切りの例です。

問4 現在の会員だけを利用年数別に集計し、「長く使うほど満足度が高い」という結果を得た。最も注意すべきバイアスはどれか。

  1. ① 季節の偏り
  2. ② 測定バイアス
  3. ③ 生存者バイアス
  4. ④ 打ち切りは関係ない
解答と解説

正解:③

満足しなかった人は途中でやめて記録から消えているため、長く残った人が満足しているのは当然の結果かもしれません。

問5 ある会員組織は若年層3,000人(購入意向50%)、中高年層7,000人(購入意向20%)で構成される。層の人数で重み付けした会員全体の購入意向は何%か。

  1. ① 70%
  2. ② 29%
  3. ③ 41%
  4. ④ 35%
解答と解説

正解:②

(3000×0.5+7000×0.2)÷10000=(1500+1400)÷10000=0.29で29%。

問6 重み付けで偏りを補正するときの限界として正しいのはどれか。

  1. ① 重み付けをすると標本の枠の外の人の情報が自動で得られる
  2. ② 重み付けは回答者数が多いと使えない
  3. ③ 重み付けはどんな偏りも完全に取り除く
  4. ④ 重みに使った特徴(年代など)の割合のずれは直せるが、同じ層の中の回答の偏りは残る
解答と解説

正解:④

重み付けは層の割合をそろえるだけで、層の中で好意的な人ほど回答する、といった偏りは残ります。

次に学ぶこと

次は 出所と利用条件 で、データの出所と利用条件を確認します。集め方が適切でも、使ってよい条件を満たしていなければ分析には使えません。

母集団と標本の基礎に不安があれば 母集団と標本 に戻ってください。抽出の設計は 「抽出設計と選択バイアス」(有料版)、アンケートの質問設計と回収の偏りは 「質問設計と誘導」(有料版)、「抽出と回収の偏り」(有料版) でさらに詳しく学びます。

キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。

アプリを無料で開く有料版と無料版の違い