1
0

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言語でゴルフのスコアをデータ分析してみる(6)【パー3分析編】

1
Last updated at Posted at 2026-07-24

はじめに

前回のティーショット分析では予想外の結果がでました。
前回はパー3を除いたティーショット分析を行いました。今回はパー3に絞って分析していきます。
パー3の仮説は以下です。

【仮説1】パー3でも右に外すことが多い
【仮説2】パー3ではオーバーよりショートが多い、オーバーの場合は大叩きする

まず、仮説1についてはアイアン右ペラ持ちとしては堅い仮説です。

パー3ティーショット方向分析

早速データで見てみましょう。

ソースコード:

HoleData.R
# パー3のホールデータのみを抽出
par3_data <- JoData %>% 
  filter(Par == 3, TeeShot != "-")

# TeeShotごとに集計して割合を算出
par3_summary <- par3_data %>%
  group_by(TeeShot) %>%
  summarise(Count = n(), .groups = "drop") %>%
  mutate(Percentage = round(Count / sum(Count) * 100, 1))

# 3x3 グリッドの行・列と、中央配置用のダミー変数(x_bar)を設定
par3_grid <- par3_summary %>%
  mutate(
    # 各マスの位置(行・列)
    row = case_when(
      TeeShot == "↑" ~ 1,  # 上
      TeeShot == "←" ~ 2,  # 左
      TeeShot == "◎" ~ 2,  # 中央
      TeeShot == "→" ~ 2,  # 右
      TeeShot == "↓" ~ 3,  # 下
      TRUE           ~ 2
    ),
    col = case_when(
      TeeShot == "←" ~ 1,  # 左
      TeeShot == "↑" ~ 2,  # 上
      TeeShot == "◎" ~ 2,  # 中央
      TeeShot == "↓" ~ 2,  # 下
      TeeShot == "→" ~ 3,  # 右
      TRUE           ~ 2
    ),
    x_bar = "Center"
  )

# 可視化:全パネルで真ん中に1本ずつ描画(文字サイズ指定を大きく拡大)
ggplot(par3_grid, aes(x = x_bar, y = Percentage, fill = TeeShot)) +
  geom_col(width = 0.5, show.legend = FALSE) +
  geom_text(aes(label = paste0(TeeShot, "\n", Percentage, "%")), 
            vjust = -0.2, size = 8.5, fontface = "bold") +
  # 行(row)と列(col)で3x3に分割
  facet_grid(row ~ col, drop = FALSE) +
  # 大きくなった文字が見切れないよう、Y軸の上限を最大値の1.45倍まで拡大
  scale_y_continuous(limits = c(0, max(par3_grid$Percentage) * 1.45)) +
  labs(
    title = "パー3におけるティーショットの方向別割合",
    x = NULL,
    y = "割合 (%)"
  ) +
  theme_minimal(base_family = "Hiragino Sans") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 22, margin = margin(b = 15)),
    axis.text.x = element_blank(),     # x軸テキスト非表示
    axis.ticks.x = element_blank(),    # x軸目盛り非表示
    axis.text.y = element_text(size = 12, color = "black"),
    axis.title.y = element_text(size = 16, face = "bold"),
    strip.text = element_blank(),      # ファセット見出し非表示
    panel.grid.major.x = element_blank(),
    panel.background = element_rect(fill = "grey98", color = "grey85")
  )

出力結果:

パー3におけるティーショットの方向別割合.png

パー3のティーショットはワンオンが「◎」、グリーンオーバーが「↑」、ショートが「↓」、左ラフが「←」、右ラフが「→」と記録しています。グラフもそのイメージがわかりやすいように配置してみました。
データを見ると、予想通り右へのミスが36.9%と、左へのミスの2倍以上ありました。
仮説2の前半「オーバーよりショートが多い」はやはりその通りでした。次にオーバーした場合は大叩きしているかを検証します。

オーバーすると大叩きにつながるのか?

ティーショットの結果ごとのスコアについて分析していきます。

ソースコード:

HoleData.R
# TeeShotごとに平均Result(オーバー数)と平均Score、ホール数を集計
par3_score_summary <- par3_data %>%
  group_by(TeeShot) %>%
  summarise(
    Avg_Result = round(mean(Result), 2), 
    Avg_Score  = round(mean(Score), 2),
    Count      = n(),
    .groups    = "drop"
  )

# 十字配置用の座標(row, col)と共通x軸(x_bar)を設定
par3_score_grid <- par3_score_summary %>%
  mutate(
    row = case_when(
      TeeShot == "↑" ~ 1,  # 上
      TeeShot == "←" ~ 2,  # 左
      TeeShot == "◎" ~ 2,  # 中央
      TeeShot == "→" ~ 2,  # 右
      TeeShot == "↓" ~ 3,  # 下
      TRUE           ~ 2
    ),
    col = case_when(
      TeeShot == "←" ~ 1,  # 左
      TeeShot == "↑" ~ 2,  # 上
      TeeShot == "◎" ~ 2,  # 中央
      TeeShot == "↓" ~ 2,  # 下
      TeeShot == "→" ~ 3,  # 右
      TRUE           ~ 2
    ),
    x_bar = "Center"
  )

# 可視化:TeeShotごとの平均オーバー数(Result)
ggplot(par3_score_grid, aes(x = x_bar, y = Avg_Result, fill = TeeShot)) +
  geom_col(width = 0.5, show.legend = FALSE) +
  geom_text(aes(label = paste0(TeeShot, "\n+", Avg_Result, "打")), 
            vjust = -0.2, size = 8.5, fontface = "bold") +
  facet_grid(row ~ col, drop = FALSE) +
  scale_y_continuous(limits = c(0, max(par3_score_grid$Avg_Result) * 1.45)) +
  labs(
    title = "パー3 ティーショット結果別の平均オーバー数",
    x = NULL,
    y = "平均オーバー打数"
  ) +
  theme_minimal(base_family = "Hiragino Sans") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 20, margin = margin(b = 15)),
    axis.text.x = element_blank(),
    axis.ticks.x = element_blank(),
    axis.text.y = element_text(size = 12, color = "black"),
    axis.title.y = element_text(size = 16, face = "bold"),
    strip.text = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.background = element_rect(fill = "grey98", color = "grey85")
  )

出力結果:

パー3におけるティーショットの方向別オーバー数.png

結果は逆で、ワンオンを除けば、オーバーした場合が最も平均オーバー数が少ないという結果になりました。左右に外してもショートしても大体同じぐらいですが、オーバーした時だけ良い結果が出てます。
ショートはチョロ、左右はOBのような大ミスが含まれますので、私ぐらいのレベルだとオーバー狙いぐらいがちょうど良いのでしょうか?

ティーショットの得意クラブ

最後に、ワンオンした時のクラブ、つまり得意クラブを分析してみます。ワンオンのデータは数少ないですが、納得いく分析結果が出るでしょうか?

ソースコード:

HoleData.R
# 1. パー3 かつ ワンオン(TeeShot == "◎")かつ クラブ記録ありのデータのみ抽出
par3_oneon_data <- JoData %>% 
  filter(Par == 3, TeeShot == "◎", TeeShotClub != "-" & TeeShotClub != "")

# 2. TeeShotClub(使用クラブ)ごとに集計して割合と件数を算出
par3_club_summary <- par3_oneon_data %>%
  group_by(TeeShotClub) %>%
  summarise(
    Count = n(),
    .groups = "drop"
  ) %>%
  mutate(Percentage = round(Count / sum(Count) * 100, 1)) %>%
  arrange(desc(Count)) # 件数が多い順にソート

# 3. 可視化:ワンオン成功時の使用クラブの内訳(棒グラフ)
ggplot(par3_club_summary, aes(x = reorder(TeeShotClub, -Percentage), y = Percentage, fill = TeeShotClub)) +
  geom_col(show.legend = FALSE, width = 0.6) +
  # 棒の上に「割合(◯%)」と「件数(◯回)」を表示
  geom_text(aes(label = paste0(Percentage, "%\n(", Count, "回)")), 
            vjust = -0.3, size = 5, fontface = "bold") +
  scale_y_continuous(limits = c(0, max(par3_club_summary$Percentage) * 1.3)) +
  labs(
    title = "パー3でワンオン成功した時の使用クラブ内訳",
    x = "使用クラブ",
    y = "割合 (%)"
  ) +
  theme_minimal(base_family = "Hiragino Sans") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 20, margin = margin(b = 15)),
    axis.text.x = element_text(size = 14, face = "bold", color = "black"),
    axis.text.y = element_text(size = 12, color = "black"),
    axis.title = element_text(size = 16, face = "bold"),
    panel.grid.major.x = element_blank()
  )

出力結果:

パーオン使用クラブ内訳.png

これは面白い結果がでました。今はアイアン不振でU6,U5が多いだろうと思っていましたが、意外と7i、8iなどでもワンオンに成功しています。
ちなみにこれを2025年以降の最新データでみるとこうなります。

ソースコード:

HoleData.R
par3_oneon_data <- JoData %>% 
  filter(
    Par == 3, 
    TeeShot == "◎", 
    TeeShotClub != "ー" & TeeShotClub != "",
    as.Date(Date) >= "2025-01-01"  # 2025年以降に絞り込み
  )

出力結果:

パーオン使用クラブ内訳2025年以降.png

まさしく最近のユーティリティ頼みのゴルフが明らかになりました。これからはU6以外も安定して打てるように練習したいと思います。

まとめ

今回のパー3分析を通して、以下の気づきと反省が得られました。

  • 仮説1「パー3でも右に外すことが多い」:【立証】
    ティーショットの方向データを見ると、右へのミス(→)が最も多く、左(←)に比べて倍以上でした。

  • 仮説2「オーバーよりショートが多く、オーバーは大叩きする」:【一部反証】
    ショートがオーバーよりも圧倒的に多い点については予想通りでした。しかし「オーバーは大叩きにつながる」という仮説は覆され、オーバーした時の方が平均スコアが良いという意外な結果になりました。ショートや左右へのミスはOB・池などの大ミスが含まれやすいのに対し、オーバーはしっかりと振り抜けている可能性があります。

  • ワンオン使用クラブの変化
    通算データでは7iや8iでのワンオン実績も多く残っていましたが、2025年以降の最新データに絞ると「U6」が34.1%と圧倒的でした。アイアン不振とユーティリティへの依存度が数字として如実に現れる結果となりました。

今後のラウンドへの活かし方

  1. 右ペラを警戒したターゲット設定:右への外れやすさを前提とし、狙い目を少し左目に設定する。
  2. 「しっかりオーバー目」を意識する:弱気なショートは大叩きのリスクが高い。オーバー目(しっかり振り切る)のマネジメントがスコアをまとめる鍵。
  3. アイアンの復調とユーティリティの精度向上:頼りになるU6を軸にしつつ、7i・8iの再現性を高める練習に取り組む。

感覚だけでなくデータで可視化することで、自分の傾向と課題が浮き彫りになる面白い分析となりました!

1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?