1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

R言語でゴルフのスコアをデータ分析してみる(5)【ティーショット分析編】

1
Last updated at Posted at 2026-07-23

はじめに

前回の記事では、パー別のホールデータを分析し、自分のスコアを叩いている要因や弱点を表面化させました。

今回は、ゴルフのスコアメイクにおいて重要な基本データである、「ティーショット(左右のブレとOB)」の傾向分析を行います。

【仮説】ティーショットのミスは右が多く、OB率も高い

生粋のスライサーを自認しているので、普段のラウンドでも「右へ外して林やペナルティエリアに入り、苦労している」というイメージがあります。

今回はこの感覚をデータで証明(または否定)するために、以下の分析を進めます。

ティーショット左右ブレ分析

  • パー4とパー5のティーショットが左ラフ(←)かフェアウェイ(◎)か右ラフ(→)かを集計する
  • 今回のデータのOBは「そのホールでの総OB回数」となっているためティーショットはOBでない可能性もあるが、ここでは「ティーショットが左右ラフに外れ、かつそのホールでOBが記録されている場合は、ティーショットはOBである」という仮定を置いて分析する

ソースコード:

HoleData.R
# ティーショット分析用データの抽出 (Par4, Par5に対象を限定)
df_ts <- JoData %>%
  filter(Par %in% c(4, 5)) %>%
  filter(!is.na(TeeShot) & TeeShot != "") %>% # ティーショットデータの欠損を除外
  mutate(OB = if_else(is.na(OB), 0, OB)) %>%  # NAを0に変換
  mutate(
    # 打球方向の表示名を整理
    Direction = case_when(
      TeeShot == "←" ~ "左 (Left)",
      TeeShot == "◎" ~ "FWキープ (Center)",
      TeeShot == "→" ~ "右 (Right)"
    ),
    # 因子型(factor)にして順序を固定
    Direction = factor(Direction, levels = c("左 (Left)", "FWキープ (Center)", "右 (Right)"))
  ) %>%
  filter(!is.na(Direction)) %>% # irection が NA のデータを削除
  mutate(
    # ティーショットOB判定
    Is_TeeShot_OB = if_else(TeeShot != "◎" & OB > 0, "OBあり", "OBなし")
  )

# 方向別の集計
ts_dir_summary <- df_ts %>%
  count(Direction) %>%
  mutate(percentage = n / sum(n) * 100)

# 可視化 (棒グラフ)
ggplot(ts_dir_summary, aes(x = Direction, y = percentage, fill = Direction)) +
  geom_bar(stat = "identity", width = 0.6) +
  geom_text(aes(label = sprintf("%.f%%\n(%dホール)", percentage, n)), vjust = -0.3, size = 4) +
  scale_fill_manual(values = c("左 (Left)" = "#377eb8", 
                               "FWキープ (Center)" = "#4daf4a", 
                               "右 (Right)" = "#e41a1c")) +
  scale_y_continuous(limits = c(0, max(ts_dir_summary$percentage) + 12)) +
  labs(
    title = "ティーショットの打球傾向 (Par4/Par5)",
    x = "打球方向",
    y = "割合 (%)"
  ) +
  theme_minimal(base_family = "Hiragino Sans") + 
  theme(
    legend.position = "none",
    panel.spacing = unit(2, "lines"),
    axis.text = element_text(size = 14, color = "black"),       # 目盛り文字(「左」「右」「0」「20」など)
    axis.title = element_text(size = 18, face = "bold"),        # 軸タイトル(「打球方向」「割合 (%)」)
    plot.title = element_text(hjust = 0.5, face = "bold", size = 20),
    text = element_text(family = "Hiragino Sans"), 
    panel.border = element_rect(color = "grey70", fill = NA, size = 1.0)
  )

出力結果:
ティーショット左右ブレ傾向.png

結果を見ると、右へのミスは29%(552ホール)、左へのミスは15%(277ホール)と、右へのミスが左の約2倍という結果になりました。「右に外しやすい」という感覚は数値としても裏付けられた形です。意外だったのは全体の56%はフェアウェイをキープできており、悪くない数字でした。

ティーショットのミス方向とOB率

次に、仮説の後半部分である「右へのミスの時にOB率が高いのか」を調べるため、左右に外れたホールにおけるOBの発生状況を集計・比較します。

ソースコード:

HoleData.R
# 方向別・OB有無の集計
ts_ob_summary <- df_ts %>%
  filter(Direction != "FWキープ (Center)") %>%  # 左右のみに絞る
  count(Direction, Is_TeeShot_OB) %>%
  group_by(Direction) %>%
  mutate(percentage = n / sum(n) * 100) %>%
  ungroup()

# 可視化(積み上げ棒グラフ、凡例なし)
ggplot(ts_ob_summary, aes(x = Direction, y = percentage, fill = Is_TeeShot_OB)) +
  geom_bar(stat = "identity", width = 0.5) +
  geom_text(aes(label = sprintf("%s\n%.f%%\n(%d)", Is_TeeShot_OB, percentage, n)),
            position = position_stack(vjust = 0.5), size = 4, color = "white", fontface = "bold") +
  scale_fill_manual(values = c("OBあり" = "#e41a1c", "OBなし" = "grey60")) +
  labs(
    title = "左右ミス時のOB発生率 (Par4/Par5)",
    x = "打球方向", y = "割合 (%)"
  ) +
  theme_minimal(base_family = "Hiragino Sans") +
  theme(
    legend.position = "none",   # ← 凡例を非表示
    plot.title = element_text(hjust = 0.5, face = "bold", size = 20),
    axis.text = element_text(size = 14, color = "black"),
    axis.title = element_text(size = 18, face = "bold")
  )

出力結果:
左右ミス時のOB発生率.png

左右ミス時のOB率を比較した結果、

  • 左ミス時のOB率:21%
  • 右ミス時のOB率:25%

となりました。
右ミスの方がOB率はやや高いものの、その差は4ポイントと大きくありません。一方で、右へのミス自体が左の約2倍発生していることが分かっています。
つまり、スコアを悪化させている主な要因は「右へ打ったときの危険性」ではなく、「右へ打つ回数の多さ」だと考えられます。
そのため、今後の課題はOB率を下げることよりも、右へのミスショットそのものを減らすことと言えそうです。

ティーショットのクラブ別分析

ここまではティーショット全体の傾向を見てきました。
次に検証したいのは、ティーショットで使用する「クラブ」の違いです。

【仮説】ドライバー以外を持った時は、フェアウェイキープ率が上がり、OB率も低くなる

狭いホールや短いホールで「安全に刻もう」とフェアウェイウッドやユーティリティ、アイアンを選択することがあります。リスク回避のためにドライバーを握らない選択をしている以上、 フェアウェイキープ率が高くなり、OB率も下がるという結果が出てほしいところです。

実際はどうなのか、データを分析してみましょう。

ソースコード:

HoleData.R
# クラブ別の打球傾向集計
df_club_dir <- df_ts %>%
  filter(!is.na(TeeShotClub) & TeeShotClub != "") %>% # クラブデータの欠損を除外
  mutate(
    # 1Wとそれ以外に分類
    Club_Type = if_else(TeeShotClub %in% c("1W"), "ドライバー", "ドライバー以外"),
    Club_Type = factor(Club_Type, levels = c("ドライバー", "ドライバー以外"))
  ) %>%
  count(Club_Type, Direction) %>%
  group_by(Club_Type) %>%
  mutate(percentage = n / sum(n) * 100) %>%
  ungroup()

# 可視化 (100%積み上げ棒グラフ)
ggplot(df_club_dir, aes(x = Club_Type, y = percentage, fill = Direction)) +
  geom_bar(stat = "identity", width = 0.5) +
  geom_text(aes(label = sprintf("%s\n%.f%%\n(%d)", Direction, percentage, n)),
            position = position_stack(vjust = 0.5), size = 3.5, color = "white", fontface = "bold") +
  scale_fill_manual(values = c("左 (Left)" = "#377eb8", 
                               "FWキープ (Center)" = "#4daf4a", 
                               "右 (Right)" = "#e41a1c")) +
  labs(
    title = "クラブ別 ティーショット打球傾向",
    x = "使用クラブ", y = "割合 (%)"
  ) +
  theme_minimal(base_family = "Hiragino Sans") +
  theme(
    legend.position = "none",
    plot.title = element_text(hjust = 0.5, face = "bold", size = 20),
    axis.text = element_text(size = 14, color = "black"),
    axis.title = element_text(size = 18, face = "bold")
  )

出力結果:
クラブ別ティーショット打球傾向.png

分析結果は以下の通りとなりました。

  • ドライバー:FWキープ 57% / 右 29% / 左 14%
  • ドライバー以外:FWキープ 53% / 右 31% / 左 16%

ドライバー以外を選択した際のFWキープ率は53%となり、ドライバー(57%)と比べて4ポイント低い結果となりました。また、右へのミス率もドライバー以外の方が31%と、ドライバー(29%)よりわずかに高い傾向が見られます。
「ドライバー以外を持てば方向性が安定してフェアウェイキープ率が上がる」という仮説とは異なり、クラブを変えても左右の打球傾向や精度に大きな向上は見られませんでした。悲しい結果が出てしまいました😅

ティーショットのクラブ別分析 OB率

次にOB率を見てみましょう。

ソースコード:

HoleData.R
# クラブ別のOB発生率集計
df_club_ob <- df_ts %>%
  filter(!is.na(TeeShotClub) & TeeShotClub != "") %>%
  mutate(
    Club_Type = if_else(TeeShotClub %in% c("1W"), "ドライバー", "ドライバー以外"),
    Club_Type = factor(Club_Type, levels = c("ドライバー", "ドライバー以外"))
  ) %>%
  count(Club_Type, Is_TeeShot_OB) %>%
  group_by(Club_Type) %>%
  mutate(percentage = n / sum(n) * 100) %>%
  ungroup()

# 可視化 (積み上げ棒グラフ)
ggplot(df_club_ob, aes(x = Club_Type, y = percentage, fill = Is_TeeShot_OB)) +
  geom_bar(stat = "identity", width = 0.5) +
  geom_text(aes(label = sprintf("%s\n%.f%%\n(%d)", Is_TeeShot_OB, percentage, n)),
            position = position_stack(vjust = 0.5), size = 4, color = "white", fontface = "bold") +
  scale_fill_manual(values = c("OBあり" = "#e41a1c", "OBなし" = "grey60")) +
  labs(
    title = "クラブ別 ティーショットOB発生率",
    x = "使用クラブ", y = "割合 (%)"
  ) +
  theme_minimal(base_family = "Hiragino Sans") +
  theme(
    legend.position = "none",
    plot.title = element_text(hjust = 0.5, face = "bold", size = 20),
    axis.text = element_text(size = 14, color = "black"),
    axis.title = element_text(size = 18, face = "bold")
  )

出力結果:クラブ別ティーショットOB発生率.png

  • ドライバー:OBあり 10% / OBなし 90%
  • ドライバー以外:OBあり 10% / OBなし 90%

ドライバーとドライバー以外のどちらもOB率は10%でした。
「ドライバー以外を使用することでOBリスクを抑制できている」とは言えず、安全策をとった場合でもOBの発生率は変わらないという結果でした。これまた想定外です。

まとめ

今回のティーショット分析で突きつけられた、リアルな事実がこちら

  • 1.自己分析は正しかった:右へのミスは左の約2倍。やっぱり生粋のスライサーでした。
  • 2.スコアを削っていた真犯人:右に行った時の危険度ではなく、シンプルに「右へ打つ回数が多すぎる」ことが原因。
  • 3.安全策という名の幻想:「狭いから刻もう」とドライバー以外を持っても、FWキープ率は上がらず、OB率もきっちり10%で変わらないという、なんとも言えない悲しいデータが出ました。

どうやら「ドライバーをやめて安全に行く」という戦略は、ただ飛距離を損して同じ確率でOBを打っているだけだったようです。コースが狭くて難易度が高いホールで刻まされているバイアスもあるとはいえ、切ない結果となりました。
次回のラウンドからは、ただ逃げの選択でクラブを替えるのではなく、ドライバーで右に吹かさない練習をするか、刻むクラブの精度を上げる腹をくくる必要がありそうです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?