정규분포의 표준정규분포로의 변환★기초통계학-[Chapter06 - 연속확률분포-03]
1. 정규분포와 표준정규분포의 관계
===========================
==> P(z_a <= Z <= z_b)
EX-01) N(50, 10**2) ==> P(X<=63.1)
z_0 = (63.1 - 50) / 10 = 1.31
==> P(Z<= 1.31)
EX-02) 평균 90마리, 표준편차 10마리인 정규분포
1> 박테리아의 수가 80마리 이하일 확률
P(X<= 80)
N(90 , 10**2)
z_0 = (80 -90) / 10 = -1
x = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
ax = sns.lineplot(x , stats.norm.pdf(x, loc=0 , scale =1)) #정의역 범위 , 평균 = 0 , 표준편차 =2 인 정규분포 플롯
#ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = x>=0 , facecolor = 'pink')
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = x<=-1 , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
#ax.text(0.3, .10, f'P(Z>=0) \n{0.5}',fontsize=20)
area = stats.norm.cdf(-1)
ax.text(-3 , .135, f'P(Z<=-1 : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(-1.2, .125), xytext=(-2.2 , .125) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -1.03, ymin= 0 , ymax= stats.norm.pdf(-1.03, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(Z<= -1) = 0.1587
2> 박테리아의 수가 115마리 이상일 확률
P(X>=115) ~ N(90 , 10**2)
z_1 = 115 - 90 / 10 = 2.5
x = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
ax = sns.lineplot(x , stats.norm.pdf(x, loc=0 , scale =1)) #정의역 범위 , 평균 = 0 , 표준편차 =2 인 정규분포 플롯
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = x>=2.5 , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = stats.norm.cdf(-2.5)
ax.text(2.8 , .056, f'P(Z>=2.5 : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(2.7, .0025), xytext=(2.7 , .05) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= 2.5, ymin= 0 , ymax= stats.norm.pdf(2.5, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(Z>= 2.5) = P(Z<= -2.5) = 0.0062
3> 박테리아의 수가 75마리 이상 103마리 이하일 확률
P(75<=X<=103)
z_a = (75 - 90) / 10 = -1.5
z_b = 103 -90 / 10 = 1.3
x = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
ax = sns.lineplot(x , stats.norm.pdf(x, loc=0 , scale =1)) #정의역 범위 , 평균 = 0 , 표준편차 =2 인 정규분포 플롯
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=1.3) & (x>=-1.5) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = stats.norm.cdf(1.3) - stats.norm.cdf(-1.5)
ax.text(1.71 , .17, f'P(-1.5<=Z<=1.3) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= 1.3, ymin= 0 , ymax= stats.norm.pdf(1.3, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= -1.5, ymin= 0 , ymax= stats.norm.pdf(-1.5, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(-1.5<=Z <= 1.3) = P(Z<=1.3) - P(Z<=-1.5) = 0.8364
EX-03) 평균 124 mmHg , 표준편차 8 mmHg
1> 120 mmHg 이하일 확률
P(X<=120) ~ N(124 , 8**2)
x = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
ax = sns.lineplot(x , stats.norm.pdf(x, loc=0 , scale =1)) #정의역 범위 , 평균 = 0 , 표준편차 =2 인 정규분포 플롯
#ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = x>=0 , facecolor = 'pink')
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = x<=-0.5 , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
#ax.text(0.3, .10, f'P(Z>=0) \n{0.5}',fontsize=20)
area = stats.norm.cdf(-0.5)
ax.text(-3 , .135, f'P(Z<=-0.5 : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(-1.2, .125), xytext=(-2.2 , .125) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -0.5, ymin= 0 , ymax= stats.norm.pdf(-0.5, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(Z<= -4/8) = P(Z<= -0.5) = 0.3085
2> 142 mmHg 이상일 확률
P(X=>142) ~ N(124 , 8**2)
x = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
ax = sns.lineplot(x , stats.norm.pdf(x, loc=0 , scale =1)) #정의역 범위 , 평균 = 0 , 표준편차 =2 인 정규분포 플롯
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = x>=2.25 , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = stats.norm.cdf(-2.25)
ax.text(2.8 , .056, f'P(Z>=2.5 : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(2.7, .0025), xytext=(2.7 , .05) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= 2.25, ymin= 0 , ymax= stats.norm.pdf(2.25, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(Z>= 18/8) = P(Z>= 2.25) = P(Z<= -2.25) = 0.0122
3> 115 mmHg 이상, 136 mmHg 이하일 확률
P(115 <= X <= 136) ~ N(124 , 8**2)
x = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
ax = sns.lineplot(x , stats.norm.pdf(x, loc=0 , scale =1)) #정의역 범위 , 평균 = 0 , 표준편차 =2 인 정규분포 플롯
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=1.5) & (x>=-(9/8)) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = stats.norm.cdf(1.5) - stats.norm.cdf(-(9/8))
ax.text(1.71 , .17, f'P(-(9/8)<=Z<=1.5) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= 1.5, ymin= 0 , ymax= stats.norm.pdf(1.5, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= -(9/8), ymin= 0 , ymax= stats.norm.pdf(-(9/8), loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(115-124 / 8 <=Z <= 136 -124 / 8) = P(-9/8 <=Z <= 1.5) = P(Z<= 1.5) - P(Z<= -9/8) = 0.8029
EX-04> X ~ N(5, 2**2)
1> P(X> x_0) = 0.025를 만족하는 x_0
1 - P(X<= x_0) = 0.025
P(X<=x_0) = 0.975
area = stats.norm.ppf(0.975)
area
==> ppf를 통한 z = 1.96값 얻을 수 있다.
https://knowallworld.tistory.com/252
==> ppf , pdf , sf, cdf 참고
x_0 = 5 + 2* 1.96 = 8.92
2> P(X< x_0) = 0.9265를 만족하는 x_0
area = stats.norm.ppf(0.9265)
area
z = 1.45
x_0 = 5 + 2 * 1.45 = 7.9
3> P(5-x_0 < X < 5+ x_0) = 0.8262를 만족하는 x_0
z_a = (5-x_0 - 5) / 2 = - (x_0) / 2
z_b = (5+x_0 - 5) / 2 =(x_0) / 2
P(- (x_0) / 2 < Z < (x_0) / 2) = 2 * P(0 < Z<(x_0) / 2 ) = 0.8262
P(0< Z< (x_0 / 2 ) = 0.4131
area = stats.norm.ppf(0.5 + 0.4131)
area
x_0 / 2 = 1.36
x_0 = 2.72
EX-05> X ~ N(150, 5**2)
1> P(X>x_0) = 0.0055 만족하는 x_0
area = stats.norm.ppf(1- 0.0055)
area
P(X<=x_0) = 1 - 0.0055
z_0 = 2.5426
x_0 = 150 + 5*(2.5426) = 162.713
2> P(X<x_0) = 0.9878 만족하는 x_0
z_0 = 2.25
x_0 = 150 + 5*(2.25) = 161.25
3> P(150-x_0 < X<150 + x_0) = 0.9010 만족하는 x_0
z_a = (150-x_0 -150 ) / 5 = -x_0 / 5
z_b = (150+x_0 - 150 ) / 5 = x_0 / 5
P(-x_0/5 < Z < x_0/5) = 2 * P(0< Z < x_0 /5) = 0.9010
P(0< Z < x_0 /5) = 0.9010 / 2
area = stats.norm.ppf(0.5 + 0.9010 /2 )
area
x_0 / 5 = 1.6497
x_0 = 8.2485
출처 : [쉽게 배우는 생활속의 통계학] [북스힐 , 이재원]
※혼자 공부 정리용