PGA Rocket Mortgage Classic - 1st Rd: Will Bryson DeChambeau SHOOT UNDER PAR on the Front 9?
1:00PM
Yes: DeChambeau shoots under par on front 9
No: DeChambeau doesn’t shoot under par on front 9
Inputs to Solve
##### User Estimates #####
hole_1 = {'2':38,
'3':311,
'4':98,
'5':5}
hole_2 = {'3':62,
'4':290,
'5':89,
'6':11}
hole_3 = {'3':52,
'4':310,
'5':84,
'6':6}
hole_4 = {'2':72,
'3':301,
'4':70,
'5':10}
hole_5 = {'3':72,
'4':300,
'5':75,
'6':6}
hole_6 = {'3':68,
'4':312,
'5':65,
'6':5}
hole_7 = {'3':60,
'4':334,
'5':56,
'6':3,
'7':1}
hole_8 = {'2':76,
'3':317,
'4':56,
'5':3}
hole_9 = {'3':94,
'4':301,
'5':57,
'6':1}
## Inputs Defined in the Problem
strokes = 33 #par
golfers = ['De1','De2','De3','De4',
'De5','De6','De7','De8','De9']
Method to Solve
- [1] Enumrate all the possible combinations of observed scores and their respective probabilities on the 9 holes.
- [2] The probability that DeChambeau scores Par (33 strokes) or less on the Front 9 (p_par) is the sum of the probabilities for all the outcomes where the total number of Strokes is 33 or less.
## [1]
import numpy as np
import pandas as pd
t=sum(hole_1.values())
for i in hole_1:
hole_1[i] = hole_1[i]/t
t=sum(hole_2.values())
for i in hole_2:
hole_2[i] = hole_2[i]/t
t=sum(hole_3.values())
for i in hole_3:
hole_3[i] = hole_3[i]/t
t=sum(hole_4.values())
for i in hole_4:
hole_4[i] = hole_4[i]/t
t=sum(hole_5.values())
for i in hole_5:
hole_5[i] = hole_5[i]/t
t=sum(hole_6.values())
for i in hole_6:
hole_6[i] = hole_6[i]/t
t=sum(hole_7.values())
for i in hole_7:
hole_7[i] = hole_7[i]/t
t=sum(hole_8.values())
for i in hole_8:
hole_8[i] = hole_8[i]/t
t=sum(hole_9.values())
for i in hole_9:
hole_9[i] = hole_9[i]/t
y = np.array([(a,b,c,d,e,f,g,h,i) for a in hole_1.keys() for b in hole_2.keys() for c in hole_3.keys()
for d in hole_4.keys() for e in hole_5.keys() for f in hole_6.keys()
for g in hole_7.keys() for h in hole_8.keys() for i in hole_9.keys()])
scores = pd.DataFrame(y)
scores.columns = golfers
scores = scores.apply(pd.to_numeric)
scores['total_strokes'] = scores.sum(axis=1)
z = np.array([(a,b,c,d,e,f,g,h,i) for a in hole_1.values() for b in hole_2.values() for c in hole_3.values()
for d in hole_4.values() for e in hole_5.values() for f in hole_6.values()
for g in hole_7.values() for h in hole_8.values() for i in hole_9.values()])
probability = pd.DataFrame(z)
probability.columns = golfers
probability['p'] = probability.product(axis=1)
scores
De1 | De2 | De3 | De4 | De5 | De6 | De7 | De8 | De9 | total_strokes | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 3 | 24 |
1 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 4 | 25 |
2 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 5 | 26 |
3 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 2 | 6 | 27 |
4 | 2 | 3 | 3 | 2 | 3 | 3 | 3 | 3 | 3 | 25 |
… | … | … | … | … | … | … | … | … | … | … |
327675 | 5 | 6 | 6 | 5 | 6 | 6 | 7 | 4 | 6 | 51 |
327676 | 5 | 6 | 6 | 5 | 6 | 6 | 7 | 5 | 3 | 49 |
327677 | 5 | 6 | 6 | 5 | 6 | 6 | 7 | 5 | 4 | 50 |
327678 | 5 | 6 | 6 | 5 | 6 | 6 | 7 | 5 | 5 | 51 |
327679 | 5 | 6 | 6 | 5 | 6 | 6 | 7 | 5 | 6 | 52 |
327680 rows × 10 columns
probability
De1 | De2 | De3 | De4 | De5 | De6 | De7 | De8 | De9 | p | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 0.084071 | 0.137168 | 0.115044 | 0.158940 | 0.158940 | 0.151111 | 0.132159 | 0.168142 | 0.207506 | 2.335224e-08 |
1 | 0.084071 | 0.137168 | 0.115044 | 0.158940 | 0.158940 | 0.151111 | 0.132159 | 0.168142 | 0.664459 | 7.477685e-08 |
2 | 0.084071 | 0.137168 | 0.115044 | 0.158940 | 0.158940 | 0.151111 | 0.132159 | 0.168142 | 0.125828 | 1.416040e-08 |
3 | 0.084071 | 0.137168 | 0.115044 | 0.158940 | 0.158940 | 0.151111 | 0.132159 | 0.168142 | 0.002208 | 2.484281e-10 |
4 | 0.084071 | 0.137168 | 0.115044 | 0.158940 | 0.158940 | 0.151111 | 0.132159 | 0.701327 | 0.207506 | 9.740342e-08 |
… | … | … | … | … | … | … | … | … | … | … |
327675 | 0.011062 | 0.024336 | 0.013274 | 0.022075 | 0.013245 | 0.011111 | 0.002203 | 0.123894 | 0.002208 | 6.993692e-18 |
327676 | 0.011062 | 0.024336 | 0.013274 | 0.022075 | 0.013245 | 0.011111 | 0.002203 | 0.006637 | 0.207506 | 3.521824e-17 |
327677 | 0.011062 | 0.024336 | 0.013274 | 0.022075 | 0.013245 | 0.011111 | 0.002203 | 0.006637 | 0.664459 | 1.127733e-16 |
327678 | 0.011062 | 0.024336 | 0.013274 | 0.022075 | 0.013245 | 0.011111 | 0.002203 | 0.006637 | 0.125828 | 2.135574e-17 |
327679 | 0.011062 | 0.024336 | 0.013274 | 0.022075 | 0.013245 | 0.011111 | 0.002203 | 0.006637 | 0.002208 | 3.746621e-19 |
327680 rows × 10 columns
## [2]
p_par = probability['p'][scores['total_strokes']<=strokes].sum()
Solution
print("The probability DeChambeau shoots under par on front 9 is ~ %s" % round(p_par,3))
The probability DeChambeau shoots under par on front 9 is ~ 0.543
Info
download markdown file
email: krellabsinc@gmail.com
twitter: @KRELLabs
import sys
print(sys.version)
3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)]
Posted on 7/2/2020