★표본비율의 표본분포에 대한 정규분포 근사★표본비율★N(모평균 , 모평균*(1-모평균) / 전체표본개수★기초통계학-[연습문제02 -18]
20. 모비율이 p= 0.25인 모집단으로부터 크기가 각각 다음과 같은 표본을 임의로 선정한다. 표본비율이 p+-1 0.1 안에 있을 근사확률을 구하고, 표본의 크기가 커짐에 따른 확률의 변화를 비교
https://knowallworld.tistory.com/306
이항분포에 따른 정규분포의 표준정규분포화★표본비율의 표본분포★기초통계학-[모집단 분포
1.표본비율의 표본분포 EX) 이항 확률변수의 실질적인 응용 ==> 여론조사 생각 ==> 모집단을 구성하는 사람들의 어느 특정 사건을 선호하는 비율(p)를 알기 위하여 n명으로 구성된 표본을 임의 선정
knowallworld.tistory.com
1> n = 50
^p ~ N(0.25 , 0.25 * 0.75 / 50) = N(0.25 , 0.00375)
P(p-0.1 < ^p < p + 0.1) = P(-0.1 / 루트(0.00375) < Z < 0.1/루트(0.00375) = [ P(Z< 0.1/루트(0.00375) ) - P(Z<0) ] *2 = P(-1.63<= Z <= 1.63) =0.8969
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.10) / math.sqrt(0.00375 ) ,2)
# z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) & (x>=-z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_1)) - stats.norm.cdf(0)) * 2
ax.text(1.71 , .17, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
2> n = 100
^p ~ N(0.25 , 0.25 * 0.75 / 100)
P(p-0.1 < ^p < p + 0.1) = P(-0.1 / 루트(0.25 * 0.75 / 100) < Z < 0.1/루트(0.25 * 0.75 / 100) = [ P(Z< 0.1/루트(0.25 * 0.75 / 100) ) - P(Z<0) ] *2 = P(-2.31 <= Z <= 2.31) = 0.9791
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.10) / math.sqrt(0.25*0.75 / 100 ) ,2)
# z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) & (x>=-z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_1)) - stats.norm.cdf(0)) * 2
ax.text(1.71 , .17, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
3> n = 150
P(p-0.1 < ^p < p + 0.1) = P(-0.1 / 루트(0.25 * 0.75 / 150) < Z < 0.1/루트(0.25 * 0.75 / 150) = [ P(Z< 0.1/루트(0.25 * 0.75 / 150) ) - P(Z<0) ] *2 = P(-2.83 <= Z <= 2.83) = 0.9953
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.10) / math.sqrt(0.25*0.75 / 150 ) ,2)
# z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) & (x>=-z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_1)) - stats.norm.cdf(0)) * 2
ax.text(1.71 , .17, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
21. 1484만 6천명은 국민 30%에 해당하는 비율이다. 2015년 해외여행 계획하는 사람의 비율을 조사하기 위하여 500명을 임의로 선정하여 조사.
1> 표본비율의 근사 확률분포
^p ~ N(0.3 , 0.3 * 0.7 / 500)
2> | ^p - p | 가 0.05보다 작을 확률
P( | ^p - p | < 0.05 ) = P(-0.05 < ^p - p < 0.05 ) = [ P( ^p - p < 0.05 ) - P(Z<0)] * 2 = [P( (^p-p) / 루트(0.3*0.7/500) < 0.05 / 루트(0.3*0.7/500) ) - P(Z<0)] * 2 = [ P(Z < 0.05/루트(0.3 * 0.7 / 500) ) - P(Z<0) ] * 2 = P(-2.44 <= Z <= 2.44) = 0.9853
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.05) / math.sqrt(0.3*0.7 / 500 ) ,2)
# z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) & (x>=-z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_1)) - stats.norm.cdf(0)) * 2
ax.text(1.71 , .17, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
3> 표본비율 p_0보다 클 확률이 0.025인 p_0를 구하라.
P(^p > p_0 ) = P( (^p - p) / 분산 > (p_0 - p) / 분산 ) = P(Z > (p_0 - p) / 분산) = P(Z > (p_0 - 0.3 / 루트(0.3 * 0.7 / 500) ) = 0.025
p_0 = 0.3401
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 , 표준편차 =1 인 정규분포 플롯
# z_1 = round((0.05) / math.sqrt(0.3*0.7 / 500 ) ,2)
# z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(1- 0.025) ,2 )
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x>=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = 1- scipy.stats.norm.cdf(z_1)
ax.text(2 , .12, f'P({z_1}<=Z) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(2.3, .012), xytext=(3 , .1) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
p = Symbol('p')
a = solve( (p - 0.3)/math.sqrt(0.3*0.7/500) - 1.96)
print(a)
22. 소비자의 75%가 땅콩이나 캐러멜 등을 첨가한 초콜릿 좋아한다. 첨가물이 포함된 초콜릿을 좋아하는지 알아보기 위하여 200명의 소비자를 임의로 선정
1> 표본비율의 근사 확률분포
모비율 p = 0.75
^p ~ N(0.75 , 0.75*0.25 / 200)
2> 표본비율이 78%를 초과할 확률
P(^p > 0.78) = P(Z > 0.78 - 0.75 / 루트(0.75*0.25 / 200) ) = 1 - P(Z< 0.78 - 0.75 / 루트(0.75*0.25 / 200) ) = P(0.98 < Z) = 0.1635
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.78 - 0.75) / math.sqrt(0.75 * 0.25 / 200 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
# z_1 = round(scipy.stats.norm.ppf(1- 0.025) ,2 )
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x>=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = 1- scipy.stats.norm.cdf(z_1)
ax.text(2 , .12, f'P({z_1}<=Z) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(2.3, .012), xytext=(3 , .1) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
3> 표본비율의 95%의 백분위수
P(^p <= a ) = 0.95
P( (^p - p) / 분산 <= (a-p) / 분산 ) = P(Z<= (a-0.75 / 루트(0.75*0.25 / 200) ) = 0.95
P(Z<= 1.64) = 0.95
a = 0.8002
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 , 표준편차 =1 인 정규분포 플롯
# z_1 = round((0.95 - 0.75) / math.sqrt(0.75 * 0.25 / 200 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(0.95) ,2 )
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = scipy.stats.norm.cdf(z_1)
ax.text(2 , .12, f'P(Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .12), xytext=(1.9 , .12) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
a = Symbol('a')
b = solve( (a-0.75) / math.sqrt(0.75*0.25 / 200) - z_1)
print(b)
23. 주부들의 20%가 식품비로 주당 10만원 이상을 소비한다. 모비율 20%라는 가정 아래서 무작위로 1000명의 주부를 표본으로 선정
1> 표본비율의 근사 확률분포를 구하라.
모비율 = 0.2
n = 1000
^p ~ N(0.2 , 0.2 * 0.8 / 1000)
2> 표본비율이 p+- 0.02 안에 있을 근사확률
P(p-0.02 < ^p < p+0.02) = P(-0.02 / 루트 (0.2 * 0.8 / 1000) < Z < 0.02 / 루트 (0.2 * 0.8 / 1000) ) = [ P(Z<0.02 / 루트 (0.2 * 0.8 / 1000)) -P(Z<0) ] * 2 = P(-1.58 <= Z <= 1.58) = 0.8859
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.02) / math.sqrt(0.2*0.8 / 1000 ) ,2)
# z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) & (x>=-z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_1)) - stats.norm.cdf(0)) * 2
ax.text(1.71 , .17, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= -z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
3> 표본비율의 90%, 95% 그리고 99%의 백분위수를 구하라.
P(^p <= a ) = 0.9
==> P(Z<= (a-p) / 루트 (0.2 * 0.8 / 1000) ) = P(Z<= 1.28)
a = 0.216
P(^p <= a ) = 0.95
==> P(Z<= (a-p) / 루트 (0.2 * 0.8 / 1000) ) = P(Z<= 1.64)
a= 0.22
P(^p <= a ) = 0.99
P(Z<= (a-p) / 루트 (0.2 * 0.8 / 1000) ) = P(Z<= 2.33)
a= 0.229
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 , 표준편차 =1 인 정규분포 플롯
# z_1 = round((0.95 - 0.75) / math.sqrt(0.75 * 0.25 / 200 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(0.99) ,2 )
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = scipy.stats.norm.cdf(z_1)
ax.text(2 , .12, f'P(Z<={z_1}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .12), xytext=(1.9 , .12) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
a = Symbol('a')
b = solve( (a-0.2) / math.sqrt(0.2*0.8 / 1000) - z_1)
print(b)
24. 49.5%의 지지율, 이번선거 에서도 지난 선거의 지지율을 얻을 수 있는지 알기 위하여 400명의 유권자 상대로 조사하여 49%를 초과할 확률
모비율(p) = 0.495
n = 400
P(^p > 0.49) = P(Z > (0.49 - 0.495) / 루트(0.495* (1-0.495) / 400) ) = P(-0.2<= Z) = 0.5793
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 , 표준편차 =1 인 정규분포 플롯
z_1 = round((0.49 - 0.495) / math.sqrt(0.495 * (1-0.495) / 400 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
# z_1 = round(scipy.stats.norm.ppf(1- 0.025) ,2 )
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x>=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = 1- scipy.stats.norm.cdf(z_1)
ax.text(2 , .12, f'P({z_1}<=Z) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(2.3, .012), xytext=(3 , .1) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_1, ymin= 0 , ymax= stats.norm.pdf(z_1, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
출처 : [쉽게 배우는 생활속의 통계학] [북스힐 , 이재원]
※혼자 공부 정리용