そのデータ、怪しくないか?スタートアップのP-Hacking事情
引用元:https://news.ycombinator.com/item?id=44308328
p値0.05の解釈、「偶然良く見えたものを出荷する可能性が5%」は違うよ。「効果がないと仮定した場合、今の結果が出る確率が5%」ってことだよ。
あなたの言ってることと筆者の違いを詳しく教えてくれる?
これは科学者でもよく間違える微妙な点だよ。p<0.05は「治療が効果ない確率が5%以下」じゃない。「もし治療が効果なかった(かそれ以下だった)場合、この結果が見られる確率が5%以下」って意味。後者の方が弱い主張だよ。例えば、名前だけ変えて同じ治療をしたらp値0.2だった。これは「本当に効果があった確率が80%以上」って言える?同じ治療だと知ってたら言えないよね。
筆者は「偶然良く見えたものを出荷する可能性が5%」と言ったね。統計哲学の一つでは、結果は事実で、事実に確率をつけるのは無意味と考えるから、この言い方はおかしいんだ。一方、上のコメントの「効果がないと仮定した場合、結果が出る確率が5%」は、結果は事実と認め、測定の不確かさに確率を使ってるから正しい。でも、もし多数の製品を評価するワークフローについて話していて、効果がある製品とない製品があるという確率モデルを考えるなら、筆者の言い方も妥当になりうるよ。
ワークフローの文脈でp値を使う時の落とし穴は、p<0.05のプロセスでも、「本当に良い変更」と「偶然良い結果」の実際の比率に何の制限も与えないことだ。もし良い変更だけを考えるなら偽陽率は0%、悪い変更だけなら100%になる。仮説検定は洞察やセンスの代わりにはならないよ。
たくさんの製品を評価するワークフローの話でも、それが妥当になるのは、「多くの製品の間に、見逃される可能性が低いほど大きな本当の違いがある」という強い仮定がある場合に限られるよ。これはかなり強い仮定だね。
これがキーポイントだね。
いくつかの良い解説があるけど、簡単な例を出すね。コインを5回投げて、俺が全部当てたとしよう。#1 君は「俺に予知能力がある。なぜなら予知能力がない確率が5%以下だから」と言う。#2 君は「もし俺に予知能力がなかったら、今の結果(5回連続正解)が出る確率が5%以下だから、俺に予知能力がある」と言う。#2は論理的におかしいけど、解釈は正しい(#1は完全に間違い)。予知能力はありえないから、俺は運が良かっただけだろう、ってことだね。
またしても全くその通りだね。君のコメントで明らかになるのは、Xが真である確率について語り始めたら、特に仮説検定の文脈では、たいてい無意識のうちにベイジアンな枠組みに入ってるってことだ。そして、事前確率を明確にした方がいい。
間違ったステートメントは「真の効果がない確率が5%以下」と言うこと。正しいステートメントは「真の効果がない場合、これらの結果が見られる確率が5%以下」と言うこと。同じ5%の閾値でも、極端な2つの場合を考えよう。1)彼らの実験アイデアは全てくだらない。現実には絶対に機能しないものばかり。そのうち5%が閾値を超え、有効なアイデアは0%だ。2)彼らのアイデアは全て素晴らしい。ユーザーのニーズを捉え、収益を増やす完璧な方法ばかり。そのうち100%が閾値を超え、有効なアイデアは100%だ。(p値は有効な実験が失敗する数を教えてくれないから、全てパスするとしよう。)これは法医学で非常によくあることで、「プロセキューターの誤謬」と呼ばれているよ。
統計的有意性検定って「仮説が正しいときのデータの確率」なんだよね。でも本当は「データを見たときの仮説の確率」が知りたいんだ。これって頻度論とベイズの違い。参考になる最近のポッドキャストだよ→ https://music.youtube.com/podcast/hEzpiDuYFoE
陽性なのに偽陽性って確率は、テストの精度だけじゃなく全体(母集団)の状況も大事なんだ。病気とかの例で考えると分かりやすいけど、著者が「陽性なら偽陽性の確率が偽陽性率と同じ」って言ってるのは違うと思うな。
「この結果が得られたとして、帰無仮説が正しい確率」は間違い。「帰無仮説が正しいとして、この結果かそれ以上の結果が得られる確率」が正しい理解。P(A|B) と P(B|A) はベイズで言うように違うんだよ。
@wavemode さんへ。つまり、連続する変数ではぴったり同じになる確率はほぼゼロだから、P値を見るときは「同じか、もっと極端な結果になる確率(裾の確率)」で考えるんだよ。低評価した人は理由を教えてくれない?
「自我枯渇」の研究がP値ハッキングの代表例になっちゃったよね。そういう不正を知っても、すぐにその結論が間違ってるって決めつけるんじゃなくて、いったん帰無仮説に戻って考えるべきだと思う。クライマーの例え(体験談だけど)みたいな感じで、悪い例から学べたら良いんだけどな。
A/Bテストの統計的な考え方が分かりやすく説明されてて良いね。でも、プロダクトマーケットフィットしてないスタートアップだと、こういうテストはめっちゃ時間の無駄だよ!まずは機能作って、みんなが使うかどうか見た方が良いってことを強調したいな。
「こういうこと」ってのは、そもそもA/Bテストとか多変数テストをやるってことね。でも、ちゃんと正しいやり方でやらないなら、A/BテストもMVTテストも全くやらない方がマシだよ。
正しい意思決定は、全部の証拠を考慮するベイズの考え方でやるべきなんだ。統計的仮説検定は、ベイズが分からない人のための簡単なやり方でしかないよ。
記事の「医療レベルの厳密さ」をスタートアップに求めるのはやりすぎじゃない?人の命に関わるわけじゃないし。テストに「厳密すぎ」て、早く結果出てるのに6週間も待った経験もあるよ。結果は48時間後と変わらず。ゴールのレベルに合わせて厳密さも変えればいいんだよ。
結果の正しさを気にしたり、成果を改善したいなら、厳密さはやっぱり大事だよ。重要じゃないことなら、そこまでじゃなくていい。でも、自分がどれだけ結果を気にしてるか、自分に嘘をつかないことは重要だね。
全く同意!スタートアップの登録画面に医療レベルの厳密さは要らない。科学研究のマインドセットはA/Bテストには向かない面も。帰無仮説検定の現状維持バイアスも不要。ベイジアン統計を最初から使うのがおすすめ。p値0.05はデフォルトとしては高すぎる。コストとリスクで調整して。もっとインパクトある改善を狙えば、テスト手法に拘らなくても結果は出る。
より強いシグナルが出るまで待つっていうのは、それを待つ間に他の機会を失ってるっていう機会費用も考えないとね。
p値を0.50に設定したら解決するかも?期待値を明確にするんだ。0.05なんて勝手な数字なんだから。50%当たるのでいいなら、閾値を緩くすればいいだけ。
解決策の一つは、一番良さそうな案にユーザーを少しずつ移行していくこと。でも、並行して一部はA/Bテストを続ける。これでスピードと確実性のバランスが取れると思うよ。
(コメント6を受けて)その段階なら、テストなんてスキップして、どうせ変えたいと思ってる変更をそのままやっちゃえばいいんじゃない?って気もするね!
(コメント6の方法について)それって何かツールとか使ってるの?それとも毎日ちょっとずつ手動で調整してる感じ?
「0.05より大きな勝ちを狙え」っていうのは的外れだよ。p値は効果の大きさとデータ量で決まるからね。大きな効果ならデータ少なくても分かる。ベイジアンと損失関数はマジ重要。統計的有意性より「証拠の強さ」で議論することに慣れるのがベスト。
人の命に関わるか?ある程度は違う。でも、リソース有限なスタートアップで無駄なテスト続けると資金尽きて死ぬ。テスト結果を無視・誤解するのは、「自分が正しいと思いたい」気持ちや「仕事見せたい」プレッシャーのせい。UIテスト結果が微妙なら「そもそもUIってそんなに重要?」って聞くべきだけど、担当者にはキツい。本当のデータ駆動ならテストは超大事で、戦略に使うべき。全部は無理でも、テストと分析は労力と金の節約になる。
たとえ改善しない場合でも、とりあえずリリースするのがスタートアップ。常に動いて皆を忙しくさせて、遅い成長や高い解約率でくよくよさせないためだよ。闘争心が必要だし、悪いムードにならないためにもリリースの方がいいと思うよ。
効果が大きければ少ないデータでも分かるって話は、僕が言ってたことと同じだと思うんだけど、どこで論点ずれたかな?P値は効果量、分散、サンプルサイズで決まる。大きな成功は、効果が大きくて一貫性があるか、ユーザーを増やすことだね。
もっとコメントを表示(1)
特にユーザーが少ないスタートアップでは、統計的に有意にするのは難しい。時には実験せず、デザインやプロダクトセンスを信じて進める必要もあるよ。実験を責任逃れのために使う人が多すぎるんだ。
間違いの結果が「売上減」なら経営者には超重要だろ。「害を与えず、方向性を見て、偽陽性でもピボット」ってのは良い方法だけど、それはA/Bテストとは呼べないよ。
多くの会社で命はかからないけど、直すのに金がかかる。資源は有限で、統計推測はうまく使うのに役立つがコストもかかる。間違いのコストが推測の10倍未満ならやらなくていい。医療研究はリソース投資が目的のことも。会社はデータ駆動が好きだけど、効果量やサンプルサイズ、多重比較とか、やると大変。Eppoみたいな会社があるのはそのためだよ。サンプル不足はよくある失敗パターン。6週間待ったのは厳密さじゃなく正しさの問題。ぺージングは「逐次検定」って標準的な手法。URL: https://lakens.github.io/statistical_inferences/
これ見るといいよ。間違えても直せるけど、リソースは必要。「目標に必要な厳密さ」ってのは正しさとは違うと思うよ。「統計的有意性がすべて」なら命並みは言い過ぎだし、P値だけで決めちゃダメってASAも言ってるよ。URL: https://www.amstat.org/asa/files/pdfs/p-valuestatement.pdf
「害を与えず、方向性を見る」なら、テストの労力は必要ないかもね。
null仮説は現状じゃなくていいんだよ。変更を良くしようと思って加えたなら、それがニュートラルか改善ってnull仮説を立てればいい。明らかに悪かったら、それを棄却して元に戻せばいい。「良いものだけ採用」じゃなく「悪いものは採用しない」って考え方だよ。
テストするなって言ってるんじゃなくて、許容できるリスクの度合いの話だよ。医療は人が死ぬけど、ソフトは売上減るだけ。ぜんぜん違うだろ。「医療並みの厳密さが必要」なんて言い過ぎで、もっと緩くても大丈夫だよ。P値0.10でもA/Bテストだし、0.05に魔法はない。20%間違えても大丈夫な会社も多いと思うよ。(ちゃんとしたテストならね!)
正しさにどれだけこだわるか正直になるのは大事だけど、優先順位のバランスもね。情報不足で適当に決める必要があることもあるけど、それは全然問題ないよ。でも、それをデータで決めたって言っちゃダメ。どっちの決め方も必要だし、正直にやればいいんだ。
ツールを使えば統計的有意性にどれだけ時間がかかるか事前にわかるよ。それを踏まえて待つか、P値を緩めるか決められるんだ。
A/Bテストでも、結果を分析して結論を出すことはもちろんできるよ。
このPythonパッケージを使ったことがあるよ。https://github.com/bayesianbandits/bayesianbandits
QA(バグ見逃し)とA/Bテストはかなり違うと思う。投稿は混同してるように見えるな。ROIが高いと確信する機能のQAに時間をかける方が、統計的有意性を待つより良いんじゃないかな。俺はA/Bテストとは違う問題を話してると思うよ。
マルチアームバンディットアルゴリズムってのがあるよ。公開ツール名は知らないけど、見出しみたいに価値がすぐわかるものに特に役立つんだ。
まったく!事業主なら売上減はヤバいよね。でも俺はOP記事の「スタートアップは医療テストと同じ厳密さが必要」に異論を唱えたんだ。医療と違ってソフトは間違えても一時的に売上減るだけで元に戻せる。医療にないやり直しがソフトにはあるんだ。デプロイの差し戻しはよくあること!医療と同じ厳密さってのは誤解を招くと思うよ。統計的有意性を待つより、教育されたリスクを負うべきだ。君が言ってたように、スタートアップにとって停滞は死だ。俺らかなり意見一致してるね!
> でもほとんどの場合、スタートアップではもっとインパクトが大きい勝ちを目指すべきで、結局P値は0.05より低くなるもんだよ。
この部分に異論があるな。P値の大きさは、収集データ量を知らないとほぼ無関係だ。効果が大きいとわかってて適切に設計すれば、P値は約0.05になる可能性もあるんだ。
君の言いたいことを言い換えるね。スタートアップは常に動き続ける習慣が必要で、停滞は死なんだ。だから早くリリースする必要がある。ってこと?
これ100%同意!レイアウト比べるのに医療みたいに「治療」「対照」と扱う理由はないよ。どっちも同じくらい妥当な可能性が高い。P=0.93が出たら、ホントにネガティブと断定してレイアウト更新しない?医療で厳密なのは患者に悪い治療するのが何もしないより悪いからで、それがヒポクラテスの誓いのポイント。君のB2Cアプリにはこれはいらないんだよ。
あとね、医療だと「この特定の治療使うか、何もしないか」って選択が多いんだ。ウェブサイトレイアウトで統計的有意性が出ないからって、スタートアップ畳む人いる?「害をなすなかれ」を別の言い方すると、ヌル結果は「今のやり方変える理由はない」ってことだよ。
ロケット打ち上げてるわけじゃないんだから、今の作業内容と影響を考えようぜ。線引きが難しい時もあるけどね。
最初のテスト意味わかんないよ。仮説検定ならANOVAでいいじゃん。P-valueの分布が0.05付近に集まってるのはパワー不足だろ。帰無仮説が正しいならP-valueは一様分布になるはずだよ。実験デザインに問題があるように見えるな。変なレイアウトたくさんやるより、専門知識で絞った方がstatistical power 上がるぞ。分析方法も大事だけど、実験デザインの限界を知って構造化することがもっと大事。g*powerとかでサンプルサイズ計算しようぜ。
https://www.psychologie.hhu.de/arbeitsgruppen/allgemeine-psy…
見たA/BテストでANOVAの話なんてマジ少ないよ。実験デザインをちゃんと考える人も。P-valueの理解も generally poor だね。工学とかビジネスだと統計教育軽視されてるっぽい。速度優先でも rigor より effect size 見るべき。「売上10倍必要なスタートアップ」の視点で significant じゃないなら、統計的な significant かどうか待つの bothering しなくていいってば。
ANOVAの話が少ないって?そりゃみんな統計学んでないか、興味ないからだろ。生物系の学生に教えたけど、ほぼ雑用扱いだったし。300人中1〜2人しか統計ちゃんと理解して卒業しなかったぜ。
FWIW、大学の統計の教え方、全然ダメだよ。学生が全てに desperately interested だとか妄想してる。俺は卒業後に重要性に気づいて re-learn したな。大学時代は TA が f-in urns filled with colored balls の話始めたら興味なくなったぜ。
問題の一部はこれだよ。 colored balls の urn の話。俺が2005年に Abitur [1] した時は、高校でやる内容だったんだぜ。統計教えてた時は、本来学校で知ってるべき内容に追いつかせるために、どんどんコース内容を削らなきゃいけなかったんだ。[1]
https://en.m.wikipedia.org/wiki/Abitur
f-in と呼んだのは、マジで退屈だったから。高校の確率・統計はいつも urn の時間だった。大学で応用 CS の統計でもまた出てきたんだよ。Polling urns(選挙の投票箱)とか、ashes of cremated people の urns(骨壺)とか、ポーランド語だと urn って言葉に別のイメージしかないしな。
で、colored balls から興味のある分野に抽象化する mental capacity がなかったってこと?生徒は pre-digested なものしか受け付けなくて、自分で考えなくていいように全部お膳立てしなきゃダメなのか?
統計学ってさ、具体的な使い道を知る前に習うから学校の数学みたいにつまんないんだよね。「これ何に使うの?」って感じ。役に立つかわからない抽象的なことばっかりで、しかも成績に関わるから嫌なんだよ。
>「これ何に使うの?」って言い方は、他の科目にも当てはまる的外れな批判だよ。世界を理解するために学ぶんだから。今のUSの政治見ると、教育を受けてないことがどうなるかよくわかるでしょ。学校の勉強って、すぐにお金になることだけを学ぶわけじゃないんだよ。
>USでは学生はお金を払うお客さんだよね。全部学ばないと就職とか人生で困るってのも分かるけど、「強制的に」統計を学ばせるってのはどうなんだろう?分かんない学生の成績が低いのはいいけどさ。仕事で使うスキルなんて、大学卒業してから学んだことばっかりだよ。
>USで学生がお客さんって言うけど、実際はお金出してるの親だよ。勉強しないとどうなるかって、大人になってから分かること多いし。親は子供の人生のステップにお金払ってるだけで、学生自身が教育にお金払ってるって意識は薄いんじゃないかな。
P値をどうにかしようとするんじゃなくてさ、P値や信頼区間は教えるのやめて、ベイズの信用区間とかログオッズ比だけ教えればよくない?P値じゃないと解けない問題ってあるの?
A/Bテストをやりまくると偽陽性のリスクが増えるんだ。p = 0.05で5回有意差が出たら、一つはノイズかもって確率が1 – 0.95⁵ ≈ 23 %にもなる。これを減らすには、四半期で許容リスクを決める、Benjamini–Hochberg (BH)補正を使う、Bayesian shrinkageとかゴーストコントロールを使う、って方法があるよ。詳しい記事はこれ見てね:
https://medium.com/@aisagescribe/sequential-testing-in-pract…
https://www.statsig.com/perspectives/controlling-false-disco…
https://eng.wealthfront.com/2015/10/29/how-we-avoid-ab-testi…
https://www.statsig.com/perspectives/informed-bayesian-ab-te…
もっとコメントを表示(2)
>>前のコメントの23%ってのは、全部がノイズだった場合の最悪ケースだよ。普通は全部がダメってことはない。それぞれの有意差がホントである確率は95%だから、5回テストしたら期待値としては0.95 * 5 = 4.75回はホントに効果があったってこと。これは十分すごい確率だよ。
>>前の人が言ってた「本物である確率は常に95%」ってのは違うよ。有意差がホントかどうかは、もともと差があるかどうかで変わるんだ。全く差がないなら全部ノイズでホントの確率は0%だし、大きな差があるなら100%に近いよ。
君の言う通りだわ。典型的な頻度論統計の勘違いをしてた。特定の前提(帰無仮説)のもとで、こういう確率になるってことしか確実に言えないんだよね。
そうそう。あの23%って例は、テストしたやつ全部にホントは全然差がなかった場合の最悪ケースの話ね。
記事の内容、わかるわ。たぶんリンクするね。俺の経験から言わせてもらうと、スタートアップの初期でユーザーが全然いないうちは、こういうテストはやめときな。直感でコアプロダクトに集中するのが一番だよ。
まったくその通り!そのコメント出ると思ってたんだ。コアプロダクトがイケてないのにA/Bテストしても、タイタニック号の甲板の椅子を並べ替えてるようなもんだよ。
記事を読む時に気をつけてほしいんだけど、パーセント記号がいくつか抜けてて紛らわしいかも。例えば、p-valueが0.05を下回る確率が37って書いてあるとこ、37の後ろに%が必要だよ。確率って1より大きくなることはないからね。
P-hackingの説明はわかりやすかったね。でも、医療の「薬が効くか」テストと、ソフトの「レイアウトが登録増えるか」テストは全然違うよ。ソフトは間違えてもデメリットがめっちゃ少ないんだ。薬と違って副作用とかないし、開発コストも低い。役立ちそうならどんどんリリースしちゃえばいい。だからソフトではP-hackingをそこまで気にしなくていいと思うな。偽陽性のコストが低いからね。確実に役立つ2〜3個より、多分役立つ10個の方が結果的に良い場合もあるよ。
記事に出てた例の4つのレイアウトのテストについてだけどさ、p-valueがどれも似たような値なのに、どういう比較をしたらどれか一つが「勝者」になるわけ?もしかして、もっと全然ダメな5つ目の選択肢があって、それと比べてるってこと?ちょっと気になったよ。
そういうp-valueで順位つけるの、マジで間違ってるよ。比べるべきは結果そのものであって、p-valueとか平均値でランキングするのはバカげてる。スタートアップははっきりしたシグナルで判断しなきゃ。1%改善してp=0.05みたいな施策を100個やっても、ノイズだらけの環境で積み上がるなんて妄想だよ。こういう細かいことやるのは、正直言ってスタートアップでは儀式みたいなもんだね。社員が「最適化してるぞ」って気分になるためには役立つかもだけど、実際には何も変わらないことが多いよ。
これは全然同意できないな。医療実験と違って、スタートアップの実験で間違えたってコストはめちゃくちゃ低いんだよ。ちょっと効果あるかなと思ったらなかった、ってだけのこと。ある施策を出すか別のを出すか決めて、次に行けばいい。もっと厳密にやるべき時もあるけど、それは「なぜ」そうなるのか、会社全体の戦略にどう影響するのか知りたい時。スタートアップには、とにかくたくさんの実験をやって、統計は適当でいいから、ただし偽陽性もあるって理解して、結果を全部真に受けないことが大事だよって言いたいね。
危険なのは、統計の数字そのものより、何を測るかっていう指標がちゃんと意味をなしてるかだと思うな。たとえば、クリック率が高くても、ユーザーが「これ違った!」ってすぐ閉じちゃったらダメだろ?見るべき指標が大事だよ。
コメント8の最後の文はわかるわ。でも記事の著者は、レイアウト実験の結果を過大評価すると、スタートアップにとって時間と共にコストが増えるってのを上手く説明してたと思う。スタートアップでまず考えるべきは、「そもそもこれやる意味あんの?」ってことだよね。レイアウトいじりってついやりたくなるけど、マジで成果が出ないことも多いし、リソース食わなくても「進んでる気になってるだけ」になったり、思考が部分的な最適化にハマっちゃったりするから気をつけなきゃ。
…あるいはさ、ウェブサイトの細かい調整に依存しない、もっと根本的に強いプロダクトを作ればいいんじゃない?