反証と反例|研究の問い・新規性・検証
このページはプロモーション(広告)を含みます。
研究の問い・新規性・検証(中級・読む30分+演習35分)
この授業のゴール
- 主張の形(すべて・平均で・条件つき)ごとに、どんな結果が出たら主張が否定されるか(反証条件)を書ける
- 結果の表から、主張の条件を満たすのに結論が成り立たない反例を見つけられる
- 反例を除外して主張を守る「後付けの救済」と、反例から主張を正直に限定し直すことを区別できる
- 成功しそうな条件だけでなく、失敗しそうな条件を比較に含めた検証を設計できる
仕事でどう使うか
主張がどんな結果なら誤りだと分かるかを先に決めておくと、結果に振り回されずに判断できます。また、主張が成り立たない例(反例)を自分から探すことで、主張の範囲を正確に描けます。
| 路線 | この授業の使いどころ |
|---|---|
| DS(データサイエンティスト) | 分析計画書に「この結果なら施策は効果なしと判断する」を書いておき、結果が出た後に基準を動かさない |
| ML(機械学習エンジニア) | 新モデルが劣化する条件(データの種類・期間・利用者層)を意図的に探し、リリース判断の資料(失敗条件の一覧)にする |
| DX(DX推進・AI企画) | PoCの中止条件を事前に関係者と合意し、「もう少し調整すれば」と続けてしまう状態を防ぐ |
| RS(研究者) | 研究計画書に反証条件を書き、論文の「限界」の節で反例と失敗条件を報告する。査読では、反例を隠した主張は最も厳しく指摘される |
この授業では、森さんの「類似商品の情報を混ぜると誤差が減る」という主張を、反例に照らして点検します。
前提
次の言葉を使います。不安があれば先に戻ってください。
- 仮説・予測・判断基準・相対削減率 → 問いと仮説
- 理論の仮定と、理論と実験の食い違い → 理論と実験
- 真偽とAND・OR・NOT(「すべて」「ある」の否定) → 真偽とAND・OR・NOT
- 計算量と小さい反例 → 計算量と小さい反例
この授業の商品データ・実験結果はすべて架空です。
身近な状況:1つの失敗例で、主張は崩れるか
森さんは研究会で、次のように発表しました。
類似商品の情報を混ぜる提案法は、新商品の予測誤差を減らす。
すると、みなと屋の担当者が手を挙げました。「新Cの冷凍ちまきでは、提案法のほうが誤差が大きくなりましたよ。似た商品として冷凍しゅうまいを使ったけど、売れ方が全然違ったので。」
森さんの評価データ(8品目、すべて架空)を見てみます。類似度は、商品説明や価格帯から計算した「似ている度合い」で、0(まったく似ていない)〜1(ほぼ同じ)の値です。
| 商品 | 類似度 | 履歴(週) | 基準法MAE(個) | 提案法MAE(個) | 相対削減率(%) |
|---|---|---|---|---|---|
| A | 0.90 | 2 | 10.0 | 8.0 | 20.0 |
| B | 0.80 | 3 | 9.0 | 7.9 | 12.2 |
| C | 0.30 | 1 | 8.0 | 9.6 | −20.0 |
| D | 0.70 | 4 | 7.5 | 7.0 | 6.7 |
| E | 0.20 | 2 | 9.5 | 10.4 | −9.5 |
| F | 0.85 | 1 | 11.0 | 8.8 | 20.0 |
| G | 0.60 | 3 | 8.0 | 7.6 | 5.0 |
| H | 0.50 | 4 | 7.0 | 7.1 | −1.4 |
確かに、C・E・H の3品目では提案法の誤差が大きくなっています(相対削減率がマイナス)。8品目の平均は約4.1%です。
この結果で、森さんの主張は否定されたのでしょうか。答えは、主張がどんな形だったかによります。「すべての新商品で減らす」なら、Cの1品目だけで否定されます。「平均で減らす」なら、平均4.1%は正なので否定されません。しかし、「平均で10%以上減らす」なら否定されます。発表の文は、どれとも読めてしまう形でした。
直感的な説明:白い白鳥を何羽見ても、黒い1羽で崩れる
よく使われるたとえがあります。「白鳥はすべて白い」という主張は、白い白鳥を1000羽見ても証明できません。1001羽目が黒いかもしれないからです。一方、黒い白鳥を1羽見つければ、主張は否定されます。
ここから、2つのことが分かります。
- 「すべての〜で成り立つ」という主張は、確かめるより否定するほうが簡単です。だからこそ、主張は否定され得る形で書き、否定する証拠を自分から探します。
- 否定され得ない主張(どんな白鳥を見ても崩れない主張)は、何も言っていないのと同じです。「白鳥はたいてい白いこともある」は、何を見ても否定できません。
ただし、データの研究では、主張の多くは「すべて」ではなく「平均で」「多くの場合に」という形です。この場合、1つの反例だけでは主張は崩れません。代わりに、事前に決めた判断基準(問いと仮説)を満たさなかったときに否定されます。
注意:「平均の主張なら反例を気にしなくてよい」わけではありません。反例は、主張が成り立たない条件を教えてくれます。Cのちまきが失敗した理由(類似度が低い)は、主張の範囲を正確にするための重要な手がかりです。
正確な定義:反証可能性・反証条件・反例
- 反証可能性(falsifiability):ある主張について、それと矛盾する観測結果があり得ること。反証可能な主張だけが、検証によって知識を増やせる。
- 反証条件(falsification condition):「この結果が出たら主張は誤りと判断する」と、結果を見る前に決めた具体的な条件。
- 反例(counterexample):主張の条件を満たすのに、結論が成り立たない例。
- 後付けの救済(ad hoc rescue):反例が出た後で、主張を守るためだけに条件や除外ルールを付け足すこと。
主張の形ごとに、反証条件が変わります。
| 主張の形 | 例 | 反証条件 | 表の8品目での判定 |
|---|---|---|---|
| すべて(全称) | すべての新商品で提案法の誤差が小さい | 提案法の誤差が大きい品目が1つでもある | C・E・H があるので否定 |
| 平均(基準つき) | 提案法の相対削減率の平均は10%以上 | 平均が10%未満 | 平均約4.1%なので否定 |
| 条件つき | 類似度0.6以上の新商品では、相対削減率の平均が10%以上で、悪化する品目はない | 類似度0.6以上で、平均10%未満または悪化する品目がある | A・B・D・F・G は平均約12.8%、悪化なし…ただしこの条件は結果を見てから作った |
3行目に注意してください。類似度0.6以上という条件は、表を見て「うまくいった品目」を囲んだものです。同じデータで「確かめられた」とは言えません。これは新しい仮説であり、別のデータ(新しく発売される商品)で、事前に反証条件を決めて検証する必要があります。
「すべて」の否定:「すべての商品で誤差が小さい」の否定は「すべての商品で誤差が大きい」ではなく、「誤差が大きい商品が少なくとも1つある」です。論理の否定を正しく作ることが、反証条件を書く第一歩です(真偽とAND・OR・NOT)。
検証できない主張の典型:「適切に調整すれば改善する」(どう調整しても失敗したら「不適切だった」と言える)、「本質的に優れている」(何で測るか不明)、「潜在的な効果がある」(観測できない)。これらは反証条件を書けないので、研究の主張としては使えません。
段階付き例題:反例から主張を限定し直す
入力:上の8品目の表と、森さんの最初の主張「提案法は新商品の予測誤差を減らす」。
ステップ1:主張の形を確定する。研究計画書を見直すと、事前の仮説は「履歴4週以下の新商品で、相対削減率の平均が10%以上」でした(問いと仮説)。これが、比べるべき主張です。
ステップ2:反証条件と照合する。8品目はすべて履歴4週以下です。平均は約4.1%で、10%未満。事前の仮説は、このデータでは否定されました。ここで基準を下げたり、品目を外したりしてはいけません。
ステップ3:反例の共通点を調べる。悪化したC・E・Hの類似度は0.30、0.20、0.50で、他の5品目(0.60〜0.90)より低い。これは 理論と実験 の理論(類似商品とのずれ $\Delta$ が大きいほど借りると損)と整合します。
ステップ4:新しい仮説と反証条件を書く。
| 項目 | 内容 |
|---|---|
| 新しい仮説 | 類似度0.6以上で履歴4週以下の新商品では、相対削減率の平均が10%以上で、基準法より悪化する品目の割合は10%以下 |
| 検証データ | 2026年に新しく発売される新商品(今回の8品目は使わない) |
| 反証条件 | 類似度0.6以上の品目で、平均が10%未満、または悪化する品目が10%を超える |
| 失敗しそうな条件も含める | 類似度0.6未満の品目も同時に評価し、悪化が再現するかを確かめる |
ステップ5:今回の報告を書く。
「事前の仮説(履歴4週以下で平均10%以上)は、8品目の評価では支持されなかった(平均約4.1%)。悪化した3品目はいずれも類似度0.5以下だった。類似度0.6以上に限ると平均約12.8%だったが、この条件は結果を見て設定したものであり、新しい商品群で検証する。」
意味:反例は失敗ではなく、主張の範囲を描くための情報です。否定された事実をそのまま書き、反例から作った新しい仮説は別のデータで確かめる。この2つを守れば、研究は前に進みます。
操作して理解する:主張の形を変えると、反例の数が変わる
内蔵データ benchmark.csv で、2つの主張を点検します。1つ目は「提案法は毎回基準法を上回る」、2つ目は「データ拡張は毎回正解率を上げる」(proposed と、拡張を外した proposed_no_aug の比較)です。同じ seed どうしを比べ、反例(主張と逆の結果)を数えます。
import pandas as pd
d = pd.read_csv('/data/benchmark.csv')
w = d.pivot_table(index=['dataset', 'seed'], columns='method', values='accuracy')
c1 = w['proposed'] - w['baseline'] # 主張1: 正なら主張どおり
c2 = w['proposed'] - w['proposed_no_aug'] # 主張2: 正なら拡張が効いた
print('主張1の反例:', list(c1[c1 < 0].index))
print('主張2の反例:', list(c2[c2 < 0].index))
print('平均差(データセット別)')
print(pd.DataFrame({'提案-基準': c1, '拡張あり-なし': c2}).groupby('dataset').mean().round(4))
出力の要点:
| 主張 | 反例(15回中) | 平均差(D1 / D2 / D3) |
|---|---|---|
| 1. 提案法は毎回基準法を上回る | 1回(D1 の seed 0) | 0.0136 / 0.0242 / 0.0122 |
| 2. データ拡張は毎回正解率を上げる | 6回(D1 の seed 0・4、D2 の seed 2・3、D3 の seed 1・2) | 0.0047 / 0.0123 / 0.0050 |
読み方:
- 「毎回」という全称の主張は、どちらも反例があるので否定されます。
- 「平均で上回る」なら、どちらもすべてのデータセットで平均差は正です。しかし主張2は、15回中6回で逆転しており、平均差も小さい(D1・D3で約0.005)。「データ拡張の効果は、乱数によるばらつきと同程度で、はっきりしない」と書くのが正直です。
- 主張1の反例はD1の1回だけで、平均差も主張2より大きい。それでも「毎回」とは書けません。
試してみましょう:c1 < 0 を c1 < 0.005 に変えると、「0.005以上の差で上回らなかった回」が数えられます(答え:D1 seed 0、D2 なし、D3 の seed 1・2・4 の計4回)。「上回る」の基準をどこに置くかで、反例の数が変わります。だから、基準は結果を見る前に決めます。
発展:補助仮説、分岐の多い分析、数学の反例との違い
予測が外れても、主張そのものが誤りとは限らない:予測は、主張だけでなく、多くの補助仮説(測定が正しい、データに誤りがない、実装にバグがない、など)と組み合わせて導かれます。予測が外れたとき、誤っていたのは主張か補助仮説かを、それだけでは決められません。理論と実験 で、理論の予測と実データの食い違いの原因を、仮定ごとに切り分けたのはこのためです。ただし、毎回「補助仮説が悪かった」と言い逃れると、後付けの救済になります。どの補助仮説をどう確かめるかを、事前に計画しておきます。
分岐の多い分析:データの前処理、外れ値の扱い、評価指標、対象の絞り方などを、結果を見ながら少しずつ変えると、どこかで「効果あり」に見える組み合わせが見つかります。一つひとつの選択は合理的に見えても、全体として都合のよい結果を拾っています。対策は、(1)分析の選択を事前に決めて記録する、(2)試したすべての組み合わせを報告する、(3)探索で見つけた結果は別のデータで確かめる、の3つです。結果を見てから仮説を作り、最初からそう考えていたように書くことは HARKing(Hypothesizing After the Results are Known)と呼ばれ、避けるべき行為とされています。
統計的な反証:平均の主張を否定するとき、「平均が10%未満だった」が偶然のばらつきによるものかもしれません。品目数が少ないと、本当は効果があっても基準を下回ることがあります。必要な品目数の考え方(検出力)は 「検出力と効果量」(有料版) で学びます。
数学の反例との違い:数学の命題「すべての $n$ で成り立つ」は、反例が1つあれば確実に否定され、測定誤差もありません(「反例の構成」(有料版))。データの研究の反例は、測定の誤り(記録ミス、売り切れによる販売数の打ち止め)である可能性もあるので、反例が見つかったら、まずデータが正しいかを確かめます。ただし、確かめた結果データが正しければ、反例として報告します。
よくある失敗
失敗1:反例を「外れ値」として後から除外する
誤った例:8品目の平均が約4.1%で基準10%に届かなかったので、悪化したCを「類似商品の選び方が悪い外れ値」として除外した。残り7品目の平均は
$$\frac{20.0 + 12.2 + 6.7 - 9.5 + 20.0 + 5.0 - 1.4}{7} = \frac{53.0}{7} \approx 7.6\%$$
さらにEも除外して6品目で約10.4%とし、「基準を満たした」と報告した。
なぜ誤りか:除外のルールが、結果を見てから、主張に不利な品目だけに適用されています。これは後付けの救済で、どんな主張でも守れてしまいます。
直し方:除外のルール(例:売り切れが3日以上あった品目は除く)は、結果を見る前に決めます。事前ルールに当てはまらない品目は除外せず、8品目の結果(約4.1%)をそのまま報告します。Cが悪化した理由の分析は、限界と次の仮説として書きます。
失敗2:どんな結果でも否定されない主張を書く
誤った例:「提案法は、類似商品を適切に選べば、新商品の予測精度を向上させる。」
なぜ誤りか:精度が下がった品目があっても「類似商品の選び方が適切でなかった」と言えるので、どんな結果でも主張は守られます。反証条件が書けない主張です。
直し方:「適切に」を、事前に決められる手順に置き換えます。
「類似度(商品説明と価格帯から算出、0〜1)が0.6以上の既存商品を類似商品とする。この規則で選んだ場合、履歴4週以下の新商品で、相対削減率の平均が10%以上になる。」
これなら、平均が10%未満なら否定される、という反証条件が書けます。
失敗3:成功しそうな条件だけで検証する
誤った例:次の検証で、類似度0.8以上の商品だけを選んで評価し、「全品目で改善」と報告する。
なぜ誤りか:失敗しそうな条件(類似度が低い商品)を最初から除くと、反例が見つかる機会がありません。読み手は「どの商品でも効果がある」と受け取ってしまいます。実際に使う場面では、類似度の低い新商品も来ます。
| 評価した範囲 | 報告から読み手が受け取る印象 | 実際 |
|---|---|---|
| 類似度0.8以上だけ | どの新商品でも改善する | 類似度0.5以下では悪化し得る |
| 類似度0.2〜0.9すべて | 類似度が高いと改善、低いと悪化 | 正確 |
直し方:失敗しそうな条件を、比較に含めることを計画の段階で決めます。結果は条件ごとに分けて報告します。
失敗4:平均の主張を、1つの反例で否定されたと誤解する
誤った例:事前の主張は「proposed は baseline より正解率の平均が高い」だった。D1の seed 0 で proposed が下回ったのを見て、「主張は否定された」と結論した。
なぜ誤りか:主張は「平均」についてのものです。D1〜D3のどのデータセットでも平均差は正(0.0136、0.0242、0.0122)で、15回中14回で上回っています。1回の反例は「毎回上回る」を否定しますが、「平均が高い」は否定しません。
直し方:主張の形(すべて/平均/条件つき)と反証条件を照らし合わせて判定します。そのうえで、反例は「毎回とは言えない」という限界として報告します。反例を軽視するのも、過大に扱うのも、どちらも誤りです。
まとめ
- 主張の形(すべて・平均・条件つき)ごとに反証条件が違う。「すべて」の否定は「成り立たない例が少なくとも1つある」。
- 反例は、主張の条件を満たすのに結論が成り立たない例。主張の範囲を描く情報として報告し、隠さない。
- 結果を見てから除外や条件を足すのは後付けの救済。反例から作った条件は新しい仮説として、別のデータで検証する。
- 「適切に」「本質的に」「潜在的に」を含む主張は反証できない。手順と数値に置き換える。失敗しそうな条件も比較に含める。
用語
- 反証可能性(falsifiability)
主張と矛盾する観測結果があり得ること。反証可能な主張だけが検証で知識を増やせる。
- 反証条件(falsification condition)
「この結果が出たら主張は誤りと判断する」と、結果を見る前に決めた具体的な条件。
- 反例(counterexample)
主張の条件を満たすのに、結論が成り立たない例。
- 後付けの救済(ad hoc rescue)
反例が出た後で、主張を守るためだけに条件や除外ルールを付け足すこと。
- HARKing(Hypothesizing After the Results are Known)
結果を見てから仮説を作り、最初からそう考えていたように書くこと。避けるべき行為。
よくある質問
反例が見つかったら、研究は失敗ですか?
失敗ではありません。反例は、主張が成り立たない条件を教えてくれます。反例の共通点を調べることで、主張の範囲が正確になり、新しい仮説が生まれます。隠すことが失敗です。
反証条件は、いつ決めればよいですか?
データを見る前、遅くとも評価用のデータの結果を見る前です。研究計画書や実験記録に日付つきで書いておきます。結果を見てから決めると、無意識のうちに結果に合わせてしまいます。
データの誤りと本物の反例は、どう見分けますか?
まず記録を確かめます。例えば、売り切れで販売数が打ち止めになっていないか、入力ミスがないか。誤りの判定ルール(売り切れが3日以上なら除外、など)は事前に決めておき、すべての品目に同じように適用します。ルールに当てはまらなければ、本物の反例として報告します。
「平均で」の主張と「すべてで」の主張、どちらを書くべきですか?
データで確かめられる形を選びます。データの研究では、ばらつきがあるので「すべてで」は反例で崩れやすく、「平均で◯%以上」と「悪化する割合は◯%以下」を組み合わせるのが実用的です。後者を入れると、平均が良くても一部で大きく悪化する方法を見逃しません。
実務で中止条件(反証条件)を決めるときのコツは?
「どの数値が、いつまでに、どこまで届かなければやめるか」を、関係者と事前に合意して文書に残します。例:「8週間のPoCで、欠品率が2パーセントポイント以上下がらなければ本導入しない」。結果が出てから「もう少し続ければ」となるのを防げます。
反例を探しても見つからなければ、主張は正しいと言えますか?
「調べた範囲では反例が見つからなかった」とだけ言えます。見つからなかった範囲(データ・条件・回数)を明示して書きます。白鳥の例のように、調べていない範囲に反例がある可能性は残ります。
確認問題
問1 「すべての新商品で、提案法の誤差は基準法より小さい」という主張の反証条件として正しいものはどれか。
- ① すべての新商品で、提案法の誤差が基準法より大きい
- ② 提案法の誤差が基準法より大きい新商品が、少なくとも1つある
- ③ 提案法の誤差の平均が基準法より大きい
- ④ 提案法の誤差が基準法より小さい新商品が、少なくとも1つある
解答と解説
正解:②
「すべてで成り立つ」の否定は「成り立たない例が少なくとも1つある」です。
問2 次のうち、反証可能な主張はどれか。
- ① 提案法は、適切に調整すれば予測を改善する
- ② 提案法は、本質的に優れた予測法である
- ③ 類似度0.6以上の新商品では、提案法の相対削減率の平均は10%以上である
- ④ 提案法には、潜在的な改善効果がある
解答と解説
正解:③
条件・指標・数値基準があり、平均が10%未満なら否定される、という結果が考えられます。
問3 事前の仮説は「相対削減率の平均10%以上」だった。8品目の平均は4.1%で、悪化した品目を除外すると10.4%になった。正しい報告はどれか。
- ① 除外後の10.4%を報告し、仮説は支持されたとする
- ② 4.1%と10.4%の平均7.3%を報告する
- ③ 結果は報告せず、実験をやり直す
- ④ 8品目の4.1%を報告し、仮説は支持されなかったとする。悪化の理由は限界と次の仮説として書く
解答と解説
正解:④
結果を見てから不利な品目だけを除くのは後付けの救済です。事前の基準どおりに報告します。
問4 主張「提案法の正解率の平均は基準法より高い」に対し、15回中1回だけ提案法が下回った。最も適切な判断はどれか。
- ① 平均の主張は否定されないが、「毎回上回る」とは書けないので、反例を限界として報告する
- ② 主張は否定された
- ③ 反例の1回はデータの誤りなので削除する
- ④ 反例があるので、提案法は基準法より劣る
解答と解説
正解:①
平均の主張は1つの反例では否定されません。ただし反例は「毎回とは言えない」という限界を示すので、報告します。
問5 検証の設計で「失敗しそうな条件を比較に含める」理由として、最も適切なものはどれか。
- ① 結果の平均を下げて、控えめな主張にするため
- ② 主張が成り立たない条件を見つけ、主張の範囲を正確に描くため
- ③ 査読者を驚かせるため
- ④ 実験の数を増やせば必ず有意になるため
解答と解説
正解:②
成功しそうな条件だけで検証すると、反例を見つける機会がなく、範囲を広く誤解されます。
問6 類似度0.6以上の品目だけで平均12.8%、悪化なし、という結果が、8品目の表を見てから「類似度0.6以上」と区切って得られた。この結果の扱いとして正しいものはどれか。
- ① 類似度0.6以上で効果があることが確かめられた
- ② 意味のない結果なので捨てる
- ③ 新しい仮説であり、別のデータで事前に反証条件を決めて検証する必要がある
- ④ 類似度の閾値を0.7、0.8と変えて、最も良い結果を報告する
解答と解説
正解:③
結果を見てから作った条件は、同じデータでは確かめられません。探索的な発見として、新しいデータで検証します。
次に学ぶこと
次の 研究計画の骨格 では、ここまでの問い・仮説・新規性・理論と実験・反証条件を、1枚の研究計画の骨格にまとめます。
関連:数学の命題の反例の作り方は 「反例の構成」(有料版)、必要なデータ量(検出力)は 「検出力と効果量」(有料版)、全試行を記録する実験台帳は 「実験台帳と追跡」(有料版) で扱います。
キャリア学習:データサイエンティスト・機械学習エンジニア・DX推進・研究者を目指す人の学習アプリ。164モジュール・984授業を、ブラウザで動くSQLとPythonの演習で。基礎と各分野の最初のモジュールは無料。全部は2,980円の買い切り。
アプリを無料で開く有料版と無料版の違い