

랜덤으로 1~9 중하나를 출력하는 기계존재
이 기계를 한번 동작시킴
얻을 수 있는 X, Y 값

결합 확률 함수
f(0,0) = 3/9
f(0,1) = 1/9
f(1,0) = 2/9
f(1,1) = 3/9

국어 등급이 1~5등급
영어 등급이 1~5등급
국어 등급 확률 변수 X
영어 등급 확률 변수 Y
국어 등급이 높을 때 영어 등급이 높은가? -> 결합 확률 분포 확인하여 경향 파악

다음을 결합 확률 질량함수로 표현해보자

import pandas as pd
scores = [1,2,3,4,5]
people_num = [[2,1,0,0,0],
[1,3,4,0,0],
[1,3,5,2,0],
[0,0,0,3,2],
[0,0,0,1,2]]
df = pd.DataFrame(people_num, index=scores, columns =scores)
df.columns.name = "X"
df.index.name = "Y"
pmf = df/df.values.sum()
print(pmf)
결과 값

히트맵 이용
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
scores = [1,2,3,4,5]
people_num = [[2,1,0,0,0],
[1,3,4,0,0],
[1,3,5,2,0],
[0,0,0,3,2],
[0,0,0,1,2]]
df = pd.DataFrame(people_num, index=scores, columns =scores)
df.columns.name = "X"
df.index.name = "Y"
pmf = df/df.values.sum()
sns.set(font_scale = 2) # 폰트 규모 지정
plt.rcParams["figure.figsize"] = [20,16] # plot의 크기 지정
ax = sns.heatmap(pmf, annot=True,# annot 수치표시
xticklabels = [1,2,3,4,5],
yticklabels = [1,2,3,4,5])
plt.title("Heatmap", fontsize=40)
plt.show()


import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
scores = [1,2,3,4,5]
people_num = [[2,1,0,0,0],
[1,3,4,0,0],
[1,3,5,2,0],
[0,0,0,3,2],
[0,0,0,1,2]]
df = pd.DataFrame(people_num, index=scores, columns =scores)
df.columns.name = "X"
df.index.name = "Y"
pmf = df/df.values.sum()
index = 0
x = [0,1,2,3,4]
plt.bar(x, pmf.iloc[index]) #iloc : 행번호로 선택
plt.xticks(x, ["1","2","3","4","5"])
plt.title(f"P(X, Y={index+1})")
plt.show()

marginal_pmf_x = pmf.sum(axis=0)
print(marginal_pmf_x)
marginal_pmf_y = pmf.sum(axis=1)
print(marginal_pmf_y)
