見出し画像

おいしいスパイスカレーの統計学的に正しい作り方⑥|第5章 リニア爺さんの教え

【創作大賞2026 ビジネス部門 応募作品】
50年カレーを作り続けたリニア爺さんの夢は、誰にでも愛される味。
そのおいしさの秘密は平均にあった——

この連載はカレー好きの大学生クミ、AIロボ・チャッピーと一緒に、オリジナルのカレーデータセットを使って、統計と機械学習を学べる入門書。分析を進めながら「勝てるカレーの条件」と「シナモンの謎」を解き明かします。
こちらのマガジンで連載中!


 翌日、私は「喫茶リニア」にいた。
 リニアの店主、リニ爺は私の祖父だ。私は小さい頃からよくこの店に来ていて、両親の仕事が遅い日はここで夕飯を食べていた。
 懐かしい思い出が詰まったこの店の名物は、ふわふわのオムライスに特製カレーソースがかかった「オムカレー」だ。
 でも今日の私は、[普通のカレー」を頼んだ。
 「リニ爺、やっぱりこのカレー……めちゃくちゃ“普通”なのに、めちゃくちゃ美味しいよ」
 「ははは、“普通”を褒めてくれるなんて、嬉しいね」
 「ねえ、“普通のカレー”って、なんだろう?」
 私がそうつぶやいたとき、リニ爺は静かに答えた。
 「僕のカレーの秘密は、“平均”だよ」
 「平均!」

「そういえばクミ、XGさんとか、森さんとか、すごく複雑なモデル使ってたでしょ。」
 「うん、でも私、まだ平均とか標準偏差とか、そういう基本が全然わかってないんだけど。基本がわからないまま難しいことやっちゃってたってこと??」
 チャッピーはふふっと笑った。
 「クミ、それでいいんだよ」
 「えっ?」
 「別に教科書を頭から勉強する必要はないんだ。平均、分散、標準偏差…そんな式をいっぱい出したら、クミ、もうとっくにあきらめてたんじゃない?」
 「う……たしかに。」
 「『正規分布じゃないとダメ』、『2値じゃないとダメ』、『等分散じゃないとダメ』。そういう「やっちゃダメなこと"を先に教えられちゃうと、怖くなって何もできなくなるよね」
 「……うん」
 「でも今のクミは違う。XGBoostも、ランダムフォレストも、"動かせる"ことを知ってる。だから基礎は後から学んでも、ちゃんと意味がついてくるんだよ」
 「機械学習をかじったから、統計がわかる…?」
 「そう。逆でもいいんだよ、順番は」
 「さっすがチャッピー。自由だね!」
 「まぁ、ボクは設計上、制約のかたまりだけどね」

 「リニ爺、やっぱりシナモン入りは点数が低いの?」
 「それを確かめるには、"比較"をすればいい」
 リニ爺はタブレットを操作しながら言った。
 「シナモンありとなし、この2つの平均に差があるかを調べるんだ」
 「どうやるの?」
 「平均を比べるならT検定だ。Pythonなら、こうだよ」
 リニ爺が1行打ち込むと、すぐに結果が表示された。
 「へえ、Excelより簡単なんだ……うわ、シナモンありの方が明らかに低い」
 私は画面を見つめた。

0がシナモンなし、1はシナモンあり

 「 p値は 2.880e-75 。チャッピーこれ、どういう意味?」
 「うん、p値(p-value)は、 「これが偶然起こる確率」 を示してるんだ。p値が小さいほど、「偶然とは考えにくい!」という意味になる」
 「2.880e-75 っていうのはどういう意味?」
 「e-75 っていうのはね、 『小数点を左に 75回ずらしてね』 って意味なんだ」
 「えっと……それってつまり?」
 「今回の p値は、 0.000000…(ゼロが75個近く続く)…0288 くらいの 限りなくゼロ に近い数字なんだ。 つまり、シナモンありのカレーとなしのカレーの得点差はほぼ偶然じゃない」
 
「そんなぁ・・・」


 無言のままカレーを食べ終わり、冷たい麦茶を飲み込んだ。
 私は恐る恐る口を開いた。
 「ねえリニ爺、これって正規分布じゃないとダメなんだよね?」
 私は大学の授業で聞いた言葉を思い出して尋ねた。
 「ああ、そういうルールを教わったんだね」
 リニ爺は少し困ったように笑った。  
 「確かに、t検定やANOVAは"正規分布"を前提にしてる。でも、もし分布がおかしければ──」
 「Mann-Whitneyだっけ?ほかの方法を使うんでしょ?」
 「そう。でもね、それも結局は──」
 リニ爺はタブレットの画面を私の方に向けた。
 そこには、コードが並んでいた。

# 正規分布っぽい → t検定
stats.ttest_ind(group1, group2)

# 正規分布じゃない → Mann-Whitney
stats.mannwhitneyu(group1, group2)

「……全部、書き方が同じ……!」
 「そう。名前は違うけど、問いは同じ。 "グループ間で差はあるか?"──ただそれだけなんだ」

 「じゃあ、もっと複雑な比較は?
たとえば、スパイスが4種類、5種類、6種類……って3つ以上を比べたいときは?」
 「それも同じだよ」
リニ爺はにっこりと笑った。

# 3群以上、正規分布っぽい → ANOVA
stats.f_oneway(group1, group2, group3)

# 3群以上、正規分布じゃない → Kruskal-Wallis
stats.kruskal(group1, group2, group3)

「やってることは変わらない。こうやって、スパイスの数っていう新しい変数を作る。そして、平均を比べてるだけ」

 「え……?スパイスが6個のレシピは、点数が低い……?」
 私は少し信じられない気持ちでデータを眺めていた。
 「つまり、スパイスの種類を増やせば増やすほどいい、ってわけじゃないんだね……」
 「うん。スパイスの多さは複雑な美味しさにつながるけど、うまく使わないと味の"バランス"を崩す」
 チャッピーが補足する。
 「でもクミ、これはあくまで"平均"の話だよ」
 「え……?」
 「スパイス6種のレシピでも、高得点を取ってる人はいる。平均で見れば不利でも、"例外"になることはできるんだ」
 リニ爺が静かに微笑んだ。
 「統計は"過去の傾向"を教えてくれる。でも、未来を作るのは──クミ、君自身なんだよ」
 「……でも!私は6つ全部を使って、誰もがおいしいって思えるカレーを作りたい!

 その時、涼しげな風鈴の音とともに、店のドアが開いた。
 「じいじ〜!カレー!!」
 「オレもカレー!!」
 元気な声が飛び込んできた。
リニ爺の孫、つまり私のいとこ、単海くんと重海くんだ。

解説編

T検定と分散分析(ANOVA)── 「くらべる」の基本
 
リニ爺のカレー、「普通なのに美味しい」。
 その秘密は「平均」でした。派手な技術はないけれど、すべての基本がここにある。XGBoostやランダムフォレストを先に体験したクミが、後から基礎に戻ってきた。この順番でいいんです。

📊 T検定・分散分析とは?
 
どちらも「グループ間に差があるかどうか」を調べる手法です。
T検定:2つのグループをくらべる(例:シナモンあり vs なし)
分散分析(ANOVA):3つ以上のグループをくらべる(例:スパイス4種 vs 5種 vs 6種)
 やっていることはシンプルで、「このグループの平均とあのグループの平均、本当に違うの?それともたまたま?」を判定しているだけです。
 カレーで例えるなら、シナモン入りのカレー50皿とシナモンなしのカレー50皿を並べて、「平均点が違うのは、シナモンのせい?それとも偶然?」を数字で答えてくれる。
 リニ爺が「僕のカレーの秘密は平均だよ」と言ったのは、こういうことだったのです。

🔍 結果の読み方
① p値(ピーバリュー)
t検定や分散分析を実行すると、必ずp値が返ってきます。
p値とは、「本当は差がないのに、たまたまこれだけの差が出る確率」です。
・p < 0.05 → 「たまたまとは考えにくい。差がある!」
・p ≥ 0.05 → 「たまたまかもしれない。差があるとは言い切れない」
0.05という基準は慣習的なもので、絶対的なルールではありません。でも最初はこの目安で十分です。
シナモンあり vs なしのt検定で p < 0.05 が出たら、「シナモンを入れると得点が変わる(下がる)と言えそうだ」という意味。カイジが「帰無仮説は棄却された!」とカッコよく叫んだのは、このp値が0.05を下回ったということです。

② 帰無仮説と対立仮説
少し難しそうな言葉ですが、カレーに置き換えると簡単です。
帰無仮説:「シナモンを入れても入れなくても、得点は変わらない」(差はない、という仮定)
対立仮説:「シナモンを入れると、得点が変わる」(差がある、という主張)
T検定は帰無仮説を「本当にそう?」と疑う検査です。p値が小さければ「いや、差がないとは言えないでしょ」と帰無仮説を棄却する。カイジの流れ星の夜に起きたのは、まさにこれでした。

③ 箱ひげ図で見る
 数字だけでなく、箱ひげ図(ボックスプロット)で視覚的に確認するのが大事です。2つのグループの箱がほとんど重なっていたら、統計的に有意でも実質的な差は小さい。逆に箱がはっきり離れていれば、見た目にも納得できる差です。
 Colabノートでは、シナモンあり/なしの箱ひげ図を出力しています。数字の前に、まず絵で見てください。

⚠️ t検定・分散分析の落とし穴
①有意差=意味のある差、ではない
 p < 0.05 で「統計的に有意な差がある」と出ても、それが「カレーの味に影響するほどの差か?」は別問題です。
 サンプル数が大きければ、ごくわずかな差でもp値は小さくなります。1000皿のデータで「シナモンありは平均0.3点低い」と有意差が出ても、0.3点の差を舌で感じられるかは疑問。統計的有意性と実質的な意味を混同しないことが重要です。

多重比較の罠
 「クミン多い vs 少ない」「ターメリック多い vs 少ない」「カルダモン多い vs 少ない」……と、何度もt検定を繰り返すと、偶然に有意差が出る確率が高まります。20回検定すれば、本当は差がなくても1回くらいは p < 0.05 が出る計算。
 3つ以上のグループを比べるときにt検定ではなくANOVAを使うのは、この多重比較の問題を避けるためです。


前回はこちら

次回はこちら

次回は、クミのいとこ、単海くんと重海くんと一緒に、回帰分析について学びます!小学生でもあなどれない!機械学習の入り口です。お楽しみに!

マガジンはこちら

 このマガジンは、カレー好きの大学生クミとAIロボ・チャッピーが統計と機械学習を使ってカレーコンテスト「Tabbele」に挑む物語です。

【物語編】

【コードと解説編】
第1章のコードと解説は無料記事、第2章以降は有料記事となっています。全章分のコードと、 .ipynb ファイルのダウンロード特典がついたマガジンがお得です。


いいなと思ったら応援しよう!