解説
割合の合計が100%を超えたら間違い?AIの集計で複数回答と分母を確認しよう
アンケートの結果をAIへまとめてもらったら、割合の合計が150%になった。すぐ計算間違いと決める前に、一人がいくつ回答できたかを確認してみよう。

アンケートの結果をAIへまとめてもらったら、割合の合計が150%になった。すぐ計算間違いと決める前に、一人がいくつ回答できたかを確認してみよう。
このページでは、架空の四人の回答を使う。実際の回答者の情報やAIの有料サービスは不要。紙と電卓、またはPython 3で検算できるよ。
一つだけ選ぶか、複数選べるか
たとえば「普段使う制作ツール」を聞くとき、一つだけ選ぶ設問と、当てはまるものを全部選ぶ設問では数え方が違う。
Googleフォームの公式資料も、ラジオボタンなどの単一選択と、複数選べるチェックボックスを分けている。見た目の違いだけでなく、集計の前提が変わるんだ。
四人の回答を、手で数える
| 人 | 選んだツール |
|---|---|
| A | デザイン、コード |
| B | コード |
| C | デザイン、コード |
| D | デザイン |
デザインを選んだ人は三人、コードを選んだ人も三人。回答者四人を分母にすると、それぞれ75%で、合計は150%になる。
同じ人が両方へ入っているため、二つを足しても、別々の人を数えた100%にはならない。複数回答なら、割合の合計が100%を超えること自体は矛盾ではないよ。
分母を六件の選択に変えると、別の問いになる
四人が選んだ数の合計は六件。この六件を分母にすれば、各ツールは三件ずつで50%・50%になる。
| 分母 | 問い | 結果 |
|---|---|---|
| 回答者四人 | 何人がそのツールを選んだか | 75%ずつ |
| 選択六件 | 選ばれた件数の内訳はどうか | 50%ずつ |
どちらも計算できるけれど、伝えている内容は違う。合計を100%へ直すことを先に目的にせず、何を説明したいかを決めよう。
Pythonで検算する場合
answers = [{'design', 'code'}, {'code'}, {'design', 'code'}, {'design'}]
people = len(answers)
selections = sum(len(row) for row in answers)
for tool in ['design', 'code']:
count = sum(tool in row for row in answers)
print(tool, count / people * 100, count / selections * 100)
各行の割合は75.0と50.0になる。編集部では、手で数えた三人ずつ・全六件と、この計算結果を照合した。実際のAIの回答を測定したものではないよ。
AIへの依頼に、母数を添える
「これは複数回答です。割合は回答者数を分母にして、各選択肢を選んだ人数から計算してください。同じ人が複数の項目に入るため、合計100%へ正規化しないでください」と書ける。
未回答の人を含むか、設問ごとの有効回答者数を使うか、同じ回答の重複をどう扱うかも、必要に応じて決めよう。分母がゼロなら、割り算で割合を作らず、回答なしと分かる表示にする。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。