728x90
반응형

1. 조건부확률(Conditional Probability)

 

==> 0보다 큰 확률을 가지는 어떤 사건 A가 이미 발생했다는 조건 아래서, 사건 B가 일어날 확률을 의미

P(B|A)

 

EX-01)

 

avg_down = [24,65,14]
avg = [57 , 147, 48]
avg_up = [35 , 38 , 22]

A = pd.DataFrame([avg_down , avg , avg_up] , index = ['평균아래(B)' , '평균(A)' , '평균 위(U)'] , columns= ['나쁨(F)' , '좋음(G)' , '뛰어남(E)'])
A['합계'] = A[:].sum(axis=1)
A
a = pd.DataFrame(A[:].sum(axis = 0))
a = a.T
a.index = ['합계']
A = pd.concat([A,a])
A.index.names = ['판매능력']

MultiIndex  DF

P_F = round(A.loc['합계' , '나쁨(F)']/A.loc['합계' , '합계'] ,4)
P_G = round(A.loc['합계' , '좋음(G)']/A.loc['합계' , '합계'] ,4)
P_E = round(A.loc['합계' , '뛰어남(E)']/A.loc['합계' , '합계'] ,4)




P_A = round(A.loc['평균(A)' , '합계']/A.loc['합계' , '합계'] ,4)
P_B = round(A.loc['평균아래(B)' , '합계']/A.loc['합계' , '합계'] ,4)
P_U = round(A.loc['평균 위(U)' , '합계']/A.loc['합계' , '합계'] ,4)
# 1. P(E) = 0.1867
print(P_E)
# 2. P(E) & P(B) = 0.0311 // P(E) & P(A) = 0.1067 // P(E) & P(U) = 0.0489

P_E_int_P_B = round(A.loc['평균아래(B)' , '뛰어남(E)']/A.loc['합계' , '합계'] ,4)
print(P_E_int_P_B)

P_E_int_P_A = round(A.loc['평균(A)' , '뛰어남(E)']/A.loc['합계' , '합계'] ,4)
print(P_E_int_P_A)

P_E_int_P_U = round(A.loc['평균 위(U)' , '뛰어남(E)']/A.loc['합계' , '합계'] ,4)
print(P_E_int_P_U)

0.0311
0.1067
0.0489

# 3. P(E|B) = 0.1359 // P(E|A) =  0.1905 // P(E|U) = 0.2316
P_E_JO_P_B = round(P_E_int_P_B / P_B, 4)
print(P_E_JO_P_B)
P_E_JO_P_A = round(P_E_int_P_A / P_A, 4)
print(P_E_JO_P_A)
P_E_JO_P_U = round(P_E_int_P_U / P_U, 4)
print(P_E_JO_P_U)

0.1359
0.1905
0.2316

 

# 4. P_A_int_P_G = 0.3267

P_A_int_P_G = round(A.loc['평균(A)' , '좋음(G)']/A.loc['합계' , '합계'] ,4)
print(P_A_int_P_G)

0.3267

 

# 5. P(A) * P(G | A) = 0.3267 // P(G) * P(A|G) = 0.3267

print(round(P_A * (P_A_int_P_G / P_A), 4))
print(round(P_G * (P_A_int_P_G / P_G), 4))

0.3267
0.3267

 

 

EX-02)

man = [0.08,0.4]
woman = [0.15 , 0.37]

A =pd.DataFrame([man , woman] , index = ['남자' , '여자'] , columns = ['하고 싶다.' , '안 한다.'])
A['합계'] = A[:].sum(axis=1)
a = pd.DataFrame(A[:].sum(axis=0))

a = a.T
a.index = ['합계']
A =pd.concat([A,a])
A.columns.names = ['성향']
A.index.names = ['성별']
A

# 1. 청소년중 1명 선택 ==> 염색을 원할 확률 ==> P(청소년 | 하고 싶다.) =

p_handa =  round(A.loc['합계' , '하고 싶다.']  , 4)
print(p_handa)

# 2. 남자가 선정 ==> 이 사람이 염색을 원할 확률 ==> P(남자 | 하고 싶다.) =

P_nam_handa = round(A.loc['남자' , '하고 싶다.'] / A.loc['남자' , '합계'] , 4)
print(P_nam_handa)
# 3. 여자가 선정 ==> 이 사람이 염색을 원할 확률 ==> P(여자 | 하고 싶다.) =

P_woman_handa = round(A.loc['여자' , '하고 싶다.'] / A.loc['여자' , '합계'] , 4)
print(P_woman_handa)

2. 조건부확률의 곱의 법칙(Multiplication Law)

 

 

EX-01) 52장의 카드에서 4장의 카드 뽑을때 4장의 카드가 모두 킹일 확률

 

1. 비복원추출에 의한 카드 뽑는 경우

 

1> 차례대로 꺼낸 카드가 king 인 사건을 A,B,C,D

P(A) = 4/52

P(B|A) = 3/51 

P(C| (A M B) ) = 2 / 50

P(D | (A M B M C)) = 1 / 50

 

 

2> 복원추출에 의한 카드 뽑는 경우

 

P(A) = 4/ 52

P(B | A) = 4 / 52

P(C | (A M B)) = 4 / 52

P(D | (A M B M C)) = 4 / 52

 

 

EX-02) 흰 바둑돌 5개와 검은 바둑돌 3개 ==> 2개 추출 ==> 검은 돌 흰 돌 확률

 

1> 비복원 추출

P(A) = 5 / 8

P(A | B) = 3 / 7

 

print( (5/8) * (3/7))

==> 0.26785714285714285

 

2> 복원 추출

 

P(A) = 5 / 8

P(A | B) = 3 / 8

 

print( (5/8) * (3/8))

==>  0.234375

 

728x90
반응형

+ Recent posts