PGA The Northern Trust - 1st Rd (Jersey City, NJ): Which side will record a LOWER SCORE? (See Status Alert)
7:43 AM
Jon Rahm (ESP): Holes 10-16 or Tie
Scott Piercy + Tiger Woods: Holes 10-12
Inputs To Solve
Liberty National Golf Club Course Stats (2018)
##### User Estimates #####
hole_10 = {'3':45,
'4':254,
'5':89,
'6':7,
'7':2}
hole_11 = {'2':59,
'3':269,
'4':63,
'5':6}
hole_12 = {'2':5,
'3':155,
'4':199,
'5':37,
'5':1}
hole_13 = {'3':1,
'4':116,
'5':259,
'6':21}
hole_14 = {'3':86,
'4':254,
'5':56,
'6':1}
hole_15 = {'2':109,
'3':264,
'4':22,
'5':2}
hole_16 = {'3':76,
'4':283,
'5':34,
'6':3,
'7':1}
Method to Solve
- [1] Enumerate all the possible combinations of observed scores and their respective probabilities for Rahm on holes 10-16.
- [2] Enumerate all the possible combinations of observed scores and their respective probabilities for Piercy and Woods on holes 10-12.
- [3] Combine both outcomes ([1] and [2]) and compute their probabilities.
- [4] Sum the probabilities where Rahm’s total score is less than or equal to Piercy and Woods’ score.
import numpy as np
import pandas as pd
## [1]
t=sum(hole_10.values())
for i in hole_10:
hole_10[i] = hole_10[i]/t
t=sum(hole_11.values())
for i in hole_11:
hole_11[i] = hole_11[i]/t
t=sum(hole_12.values())
for i in hole_12:
hole_12[i] = hole_12[i]/t
t=sum(hole_13.values())
for i in hole_13:
hole_13[i] = hole_13[i]/t
t=sum(hole_14.values())
for i in hole_14:
hole_14[i] = hole_14[i]/t
t=sum(hole_15.values())
for i in hole_15:
hole_15[i] = hole_15[i]/t
t=sum(hole_16.values())
for i in hole_16:
hole_16[i] = hole_16[i]/t
y = np.array([(t,u,v,w,x,z,a) for t in hole_10.keys() for u in hole_11.keys()for v in hole_12.keys() for w in hole_13.keys()for x in hole_14.keys() for z in hole_15.keys() for a in hole_16.keys()])
y = y.astype(int)
scores = pd.DataFrame(y)
scores['total_strokes'] = scores.sum(axis=1)
z = np.array([(t,u,v,w,x,z,a) for t in hole_10.values() for u in hole_11.values()for v in hole_12.values() for w in hole_13.values()for x in hole_14.values() for z in hole_15.values() for a in hole_16.values()])
probability = pd.DataFrame(z)
probability['p'] = probability.product(axis=1)
Rahm_score_dist = {}
for s in set(scores['total_strokes']):
Rahm_score_dist[s] = probability['p'][scores['total_strokes']==s].sum()
## [2]
t=sum(hole_10.values())
for i in hole_10:
hole_10[i] = hole_10[i]/t
t=sum(hole_11.values())
for i in hole_11:
hole_11[i] = hole_11[i]/t
t=sum(hole_12.values())
for i in hole_12:
hole_12[i] = hole_12[i]/t
y = np.array([(t,u,v,w,x,z) for t in hole_10.keys() for u in hole_11.keys()for v in hole_12.keys() for w in hole_10.keys()for x in hole_11.keys() for z in hole_12.keys()])
y = y.astype(int)
scores = pd.DataFrame(y)
scores['total_strokes'] = scores.sum(axis=1)
z = np.array([(t,u,v,w,x,z) for t in hole_10.values() for u in hole_11.values()for v in hole_12.values() for w in hole_10.values()for x in hole_11.values() for z in hole_12.values()])
probability = pd.DataFrame(z)
probability['p'] = probability.product(axis=1)
piercy_woods_score_dist = {}
for s in set(scores['total_strokes']):
piercy_woods_score_dist[s] = probability['p'][scores['total_strokes']==s].sum()
## [3]
t=sum(Rahm_score_dist.values())
for i in Rahm_score_dist:
Rahm_score_dist[i] = Rahm_score_dist[i]/t
t=sum(piercy_woods_score_dist.values())
for i in piercy_woods_score_dist:
piercy_woods_score_dist[i] = piercy_woods_score_dist[i]/t
y = np.array([(x,z) for x in Rahm_score_dist.keys() for z in piercy_woods_score_dist.keys()])
y = y.astype(int)
scores = pd.DataFrame(y)
scores['rahm_lower'] = scores[0]<=scores[1]
z = np.array([(w,x) for w in Rahm_score_dist.values()for x in piercy_woods_score_dist.values()])
probability = pd.DataFrame(z)
probability['p'] = probability.product(axis=1)
## [4]
p_rahm = probability['p'][scores['rahm_lower']==True].sum()
Solution
print("The probability that J Rahm's combined score on holes 10-16 is less than or tied is ~%s" % round(p_rahm,3))
The probability that J Rahm’s combined score on holes 10-16 is less than or tied is ~0.025
Posted on 8/8/2019