はじめに
有名な「エッセンシャル思考」という本に以下のような一節がある。
1981年以来、作品賞をとった作品はほぼ例外なく編集賞にもノミネートされているのだ。実際、編集賞と両方ノミネートされている場合、3分の2は作品賞を獲得しているほどである。
これは、
「編集賞と作品賞の両方にノミネートされた作品は、高い確率で作品賞を獲得する、と主張してよいか?」
ということです。
そのことを示すためには片側検定(右片側検定)を実施します。
編集賞ノミネート作品は作品賞を獲りやすいのか
まずは、編集賞ノミネートを獲った作品が作品賞がどれだけ獲れるかを調べてみます。
コードは以下のようにしています。
import pandas as pd
from statsmodels.stats.proportion import proportions_ztest
# BEST PICTURE と FILM EDITING のデータ抽出
df_bestpic = df[df["category"].str.upper().str.contains("BEST PICTURE")]
df_edit = df[df["category"].str.upper().str.contains("FILM EDITING")]
# 編集賞ノミネート作品
edit_nominees = df_edit["film"].dropna().unique()
n = len(edit_nominees)
# 編集賞ノミネート作品のうち、作品賞受賞数
bp_winners_set = set(df_bestpic[df_bestpic["winner"] == True]["film"].dropna())
x = sum(film in bp_winners_set for film in edit_nominees)
p_hat = x / n
# 全体の BEST PICTURE 勝率
p0 = df_bestpic["winner"].mean()
# 検定
z_smaller, p_smaller = proportions_ztest(count=x, nobs=n, value=p0, alternative="smaller")
print("編集賞ノミネート作品数 n =", n)
print("作品賞受賞数 x =", x)
print("観測割合 p̂ =", p_hat)
print("全体作品賞勝率 p0 =", p0)
print("\n--- 検定結果(p < p0) ---")
print("Z =", z_smaller, ", p-value =", p_smaller)結果は以下のようになりました。
編集賞ノミネート作品数 n = 427 作品賞受賞数 x = 52 観測割合 p̂ = 0.12177985948477751 全体作品賞勝率 p0 = 0.17417417417417416 --- 検定結果(p < p0) --- Z = -3.310614943710103 , p-value = 0.00046545605264210297
あれ??3分の2も無かったです。
何なら12.2%ぐらいしかなかったです。
編集賞ノミネート作品数は427本あり、そのなかで、作品賞受賞数は52本あります。
全体作品賞勝率はp_0 = 0.174(約 17.4%)になります。
これは作品賞ノミネート作品の中から、作品賞受賞する確率です。
これらの値から、結果の値は以下になります。
- Z値(-3.31)
- 標本の割合が期待値(全体勝率)より低い方向にどれだけ離れているかを示す指標です。
- 負の値は編集賞ノミネート作品の勝率は全体より低いことを示しています。(実際、12.2 < 17.4で低いですし)
- p値(0.000465 ≈ 0.046%)
- この値は「帰無仮説(編集賞ノミネート作品も作品賞を受賞する確率は全体と同じ)」のもとで、観測された 12.2% という結果が起こる確率です。
- 非常に小さいので、帰無仮説は棄却されますので、編集賞ノミネート作品が作品賞を受賞しやすいとは言えないです。
期待した結果が得られませんでした、、、。
編集賞受賞作品は作品賞を獲りやすいのか
念のため、
import pandas as pd
from statsmodels.stats.proportion import proportions_ztest
# --- 1. BEST PICTURE と FILM EDITING が存在する年を特定 ---
years_bp = set(df[df["category"].str.upper().str.contains("BEST PICTURE")]["year_ceremony"])
years_edit = set(df[df["category"].str.upper().str.contains("FILM EDITING")]["year_ceremony"])
valid_years = years_bp & years_edit # 両方ある年
# --- 2. その年だけ抽出 ---
df_valid = df[df["year_ceremony"].isin(valid_years)]
# --- 3. カテゴリごとに抽出 ---
df_bestpic = df_valid[df_valid["category"].str.upper().str.contains("BEST PICTURE")]
df_edit = df_valid[df_valid["category"].str.upper().str.contains("FILM EDITING")]
# --- 4. 編集賞を受賞した作品(ユニーク) ---
edit_winners = df_edit[df_edit["winner"] == True]["film"].dropna().unique()
# --- 5. 編集賞受賞作品の中で作品賞受賞した数 ---
bp_winners_set = set(df_bestpic[df_bestpic["winner"] == True]["film"].dropna())
x = sum(film in bp_winners_set for film in edit_winners)
n = len(edit_winners)
p_hat = x / n
# --- 6. 全体の BEST PICTURE 候補の勝率(全体ベースライン) ---
p0 = df_bestpic["winner"].mean()
# --- 7. 検定 ---
z, p = proportions_ztest(count=x, nobs=n, value=p0, alternative="larger")
print("編集賞受賞作品数 n =", n)
print("作品賞受賞数 x =", x)
print("観測割合 p̂ =", p_hat)
print("全体作品賞勝率 p0 =", p0)
print("\n--- 検定結果(p > p0) ---")
print("Z =", z, ", p-value =", p)結果は以下のようになりました。
編集賞受賞作品数 n = 58 作品賞受賞数 x = 24 観測割合 p̂ = 0.41379310344827586 全体作品賞勝率 p0 = 0.17417417417417416 --- 検定結果(p > p0) --- Z = 3.705254421364054 , p-value = 0.00010558932545846104
各値は以下の意味になります。
- 編集賞を受賞した映画の数:n=58
- その中で作品賞も受賞した映画の数:x=24
- 編集賞受賞作品の中で作品賞を受賞した割合:0.414(24/58 ≈ 41.4%)
- 作品賞にノミネートされた映画全体が受賞する割合: p0=0.174
検定結果の値は以下になります。
- Z値: 3.705
- Z値が大きいほど「差が偶然では起こりにくい」ことを示すので高め。
- p値: 0.000106
- 今回の場合、帰無仮説(編集賞を受賞した作品が作品賞を受賞する確率は全体と同じ)の下で、観測された「編集賞受賞作品の中で作品賞を受賞した割合」以上の差が起こる確率を表す。
- 0.05(有意水準5%)より小さいので、統計的に有意。
以上から、編集賞を受賞した作品の約41%が作品賞も受賞しているのに対し、全体では17%程度しか受賞していませんし、p-value が非常に小さいので、「偶然による差」とは考えにくいです。
「編集賞を受賞した作品は他の作品に比べて作品賞を受賞しやすい」と言えます。
最後に
「編集賞と作品賞がノミネートされた作品は作品賞を受賞しやすい」とは言えないが、
「編集賞を受賞した作品が作品賞をノミネートされていたら、その作品は作品賞を受賞しやすい」と言えます。

