728x90
반응형

1. 표본의 크기

 

==> 주어진 표본의 크기를 이용하여 모수를 추정하는 방법을 알아보았다.

 

==> 표본의 크기가 너무 작으면 왜곡된 모집단의 특성을 추정할 수 있으며, 또한 표본의 크기가 너무 크면 모집단의 특성은 잘 표현할 수 있으나 경제적,시각적,공간적인 여러 제약으로 어려움 겪을 수 있다.

 

==> 주어진 신뢰수준과 오차한계에 맞춰서 가장 효율적으로 표본을 추출하기 위해 표본의 크기 결정하는 문제가 중요

 

 

2. 모평균의 추정을 위한 표본의 크기

 

==> 신뢰구간의 길이가 d 이하인 모평균의 (1-a)100% 신뢰구간을 얻어야한다.

 

==> 신뢰구간의 길이

 

 

신뢰구간의 길이
신뢰구간의 길이 추정
표본의 크기

EX-01) 어느 대학의 학생과에서 학생들의 월 평균 생활비를 조사. 95% 신뢰구간의 길이가 8만원을 넘지 않게 하려면 최소한 몇 명의 학생을 조사해야 하는지 구하라(모표준편차가 20만원인 정규분포를 따름)

 

 

모표준편차 = 20

모분산 = 400

 

z_0.025 = 1.96

d = 8

 

n >= (2 * 1.96 * 20 /8)**2 = 96.04

 

n = 97

 

EX-02) 모표준편차가 2인 정규모집단의 모평균을 추정하고자 한다. 90% 신뢰구간의 길이가 0.2를 넘지 않도록 하는 최소한의 표본의 크기를 구하라.

 

모표준편차 = 2

모분산 = 4

 

z_0.05 = 1.645

 

2*1.645 * 모표준편차 / 루트(n) < 0.2

 

2*1.645*2/0.2 < 루트(n)

 

(2*1.645*2/0.2)**2 < n

 

1082.4<n

 

n = 1083

 

 

 

3. 두 모분산을 알고 있는 서로 독립인 정규모집단으로부터의 신뢰구간

 

==> 두 모분산을 알고 있는 서로 독립인 정규모집단으로부터 각각 크기 n, m 인 표본을 추출할때 , 모평균의 차에 대한 신뢰구간

 

모평균의 차에 대한 신뢰구간 90%

L = 2*1.645* 루트( 모분산_1 / n + 모분산_2/m)

 

모평균의 차에대한 신뢰구간을 얻기위한 표본의 크기

==> 두 표본의 크기가 같을때의 표본크기 구하기

 

EX) 두 회사에서 제조되는 1.5L 페트병에 들어 있는 음료수 양의 평균 차를 조사. 두 회사에서 제조된 음료수 표본을 동일한 개수로 선정하여 95% 신뢰구간의 길이가 0.005L 보다 작게 하기 위한 최소한의 표본의 크기를 구하라(두 회사의 음료수 양은 표준편차가 각각 0.01L와 0.02L인 정규분포를 따른다.)

 

 

d = 0.005

 

표준편차_1 = 0.01

표준편차_2 = 0.02

 

z_0.025 = 1.96

 

 

n=m >= 4 * 1.96**2 * (0.01**2 + 0.02**2) / 0.005**2 = 307.328

 

n = m = 308

print(4 * 1.96**2 * (0.01**2 + 0.02**2) / 0.005**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 , 표준편차 =1 인 정규분포 플롯

trust = 95 #신뢰구간

# z_1 = round((0.05) / math.sqrt( 0.0018532 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(1 - (1-(trust/100))/2) ,3 )

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 = scipy.stats.norm.cdf(z_1) - scipy.stats.norm.cdf(-z_1)
plt.annotate('' , xy=(0, .1), xytext=(2 , .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))
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.text(2 , .1, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)

ax.text(2 , .15, f'신뢰구간 모평균에 대한 {trust}% : \n' + r'$\overline{X}$' +f'-{z_1}' + r'$\dfrac{\sigma}{\sqrt{n}},\overline{X}$' + f'+{z_1}' + r'$\dfrac{\sigma}{\sqrt{n}}$',fontsize=15)

# ex = '93.242 89.635 92.660 92.540 94.883 102.165 93.326 90.880 93.684 91.564 88.727 94.317 88.166 96.085 82.028 97.213 99.338 93.381 86.498 83.348 97.262 89.656 84.045 89.113 81.562 87.180 94.345 92.436 93.633 97.276'
# A = list(map(float, ex.split(' ')))
# print(A)
# MEANS = round(np.mean(A) ,3)
#
# VARS = 5.105**2
# STDS = round(math.sqrt(VARS/len(A)),3)
# print((z_1 * STDS / math.sqrt(len(A))))
# ax.text(2 , .25, f'신뢰구간 모평균에 대한 {trust}% : \n' + f'{round(MEANS - (z_1 * STDS ),3)} ~ {round(MEANS + (z_1 * STDS ),3)}' , fontsize= 15)
#
#ax.text(2 , .35,  r'$\overline{X} = $' + f'{MEANS}\n' +  r'$\sigma = $' + f'{STDS}\n' + r'$\sqrt{n} = $' + f'{round(math.sqrt(len(A)),2)}',fontsize=15)
ax.text(2 , .35,  r'$\sigma_{1} = $' + f'{0.01}\n'+ r'$\sigma_{2} = $' + f'{0.02}\n'  + f'신뢰구간 d = {0.005}',fontsize=15)

모평균의 차에 대한 신뢰구간

 

EX-02) 모표준편차가 각각 5와 3인 정규모집단의 모평균의 차에 대한 95% 신뢰구간의 길이가 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 , 표준편차 =1 인 정규분포 플롯

trust = 95#신뢰구간

# z_1 = round((0.05) / math.sqrt( 0.0018532 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(1 - (1-(trust/100))/2) ,3 )

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 = scipy.stats.norm.cdf(z_1) - scipy.stats.norm.cdf(-z_1)
plt.annotate('' , xy=(0, .1), xytext=(2 , .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))
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.text(2 , .1, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)

ax.text(-5.5 , .25, f'신뢰구간 모평균에 대한 {trust}% : \n' + r'$\left( \overline{x}-\overline{y}\right)$' +f'-{z_1}' + r'$\sqrt{\dfrac{\sigma_{1}^{2}}{n}+\dfrac{\sigma_{2} ^{2}}{m}}$' +' , '+ r'$\left( \overline{x}-\overline{y}\right)$' +f'+ {z_1}' + r'$\sqrt{\dfrac{\sigma_{1}^{2}}{n}+\dfrac{\sigma_{2} ^{2}}{m}}$',fontsize=15)

d = 2 # 신뢰구간
o1 = 5 #모 표준편차 1
o2 = 3 #모 표준편차 2
ax.text(2 , .35,  r'$\sigma_{1} = $' + f'{o1}\n'+ r'$\sigma_{2} = $' + f'{o2}\n'  + f'신뢰구간 d = {d}',fontsize=15)
c = 2**2 * z_1**2*(o1**2 + o2**2) / d**2
ax.text(-5.5 , .1,  r'$n=m\geq\dfrac{{%2d}^{2}*{%.2f}^{2}(\sigma^2_{1} + \sigma^2_{2})}{d ^{2}} = {%.3f}$'% (2 , z_1 ,c) ,fontsize=15)
print(4*z_1 * (5**2 + 3**2) / 2**2)

모평균의 차에 대한 신뢰구간

 

n= m = 131

 

 

4. 모비율의 추정을 위한 표본의 크기

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 인 정규분포 플롯

trust = 95 #신뢰구간

# z_1 = round((0.05) / math.sqrt( 0.0018532 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(1 - (1-(trust/100))/2) ,3 )

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 = scipy.stats.norm.cdf(z_1) - scipy.stats.norm.cdf(-z_1)
plt.annotate('' , xy=(0, .1), xytext=(2 , .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))
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.text(2 , .1, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)

ax.text(2 , .15, f'신뢰구간 모평균에 대한 {trust}% : \n' + r'$\widehat{p}$' +f'-{z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$' +' , '+ r'$\widehat{p}$' +f'+ {z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$',fontsize=15)
#\widehat{p}-\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}


ax.text(-5.5 , .15, f'신뢰구간 L = 2*{z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$',fontsize=15)

#
ax.text(-5.5 , .25, f'사전정보가 없는 경우 n' + r'$\geq\dfrac{z^2_{a/2}}{d^2}$',fontsize=15)

ax.text(-5.5 , .35, f'사전정보 p가 있는 경우 n' + r'$\geq\dfrac{4*z^2_{a/2}*{p}*{(1-p)}}{d^2}$',fontsize=15)

모비율의 차에 대한 신뢰구간

EX-01) 대통령 후보의 지지도에 대한 오차범위 +-2%에서 신뢰도 95%인 신뢰구간을 구하고자 한다면 최소한 몇 명의 유권자를 상대로 여론조사를 실시해야하는가

 

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 인 정규분포 플롯

trust = 95 #신뢰도

# z_1 = round((0.05) / math.sqrt( 0.0018532 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(1 - (1-(trust/100))/2) ,3 )

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 = scipy.stats.norm.cdf(z_1) - scipy.stats.norm.cdf(-z_1)
plt.annotate('' , xy=(0, .1), xytext=(2 , .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))
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.text(2 , .1, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)

ax.text(2 , .15, f'신뢰구간 모평균에 대한 {trust}% : \n' + r'$\widehat{p}$' +f'-{z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$' +' , '+ r'$\widehat{p}$' +f'+ {z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$',fontsize=15)
#\widehat{p}-\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}


ax.text(-5.5 , .15, f'신뢰구간 L = 2*{z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$',fontsize=15)

d = 0.02 *2
ax.text(-5.5 , .25, f'사전정보가 없는 경우 n' + r'$\geq\dfrac{z^2_{a/2}}{d^2}$' + f' = {round(z_1**2 / d**2,2)}',fontsize=15)

ax.text(-5.5 , .35, f'사전정보 p가 있는 경우 n' + r'$\geq\dfrac{4*z^2_{a/2}*{p}*{(1-p)}}{d^2}$',fontsize=15)

모비율에 대한 표본크기 구하기

 

d = 0.02 * 2 = 0.04

 

z_0.025 = 1.96

 

n >= 1.96**2 / 0.04**2 = 2401

 

EX-02) 78%가 강의 도중 핸드폰 사용경험이 있다. 오차한계 2.5%에서 대학생의 휴대폰 사용 경험 비율에 대한 95% 신뢰구간을 구하기 위한 최소한의 표본의 크기

 

p = 0.78

 

n = 1055

 

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 인 정규분포 플롯

trust = 95 #신뢰도

# z_1 = round((0.05) / math.sqrt( 0.0018532 ) ,2)
# # z_2 = round((34.5 - 35) / math.sqrt(5.5**2 / 25) , 2)
z_1 = round(scipy.stats.norm.ppf(1 - (1-(trust/100))/2) ,3 )

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 = scipy.stats.norm.cdf(z_1) - scipy.stats.norm.cdf(-z_1)
plt.annotate('' , xy=(0, .1), xytext=(2 , .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))
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.text(2 , .1, f'P({-z_1}<=Z<={z_1}) : {round(area,4)}',fontsize=15)

ax.text(2 , .15, f'신뢰구간 모평균에 대한 {trust}% : \n' + r'$\widehat{p}$' +f'-{z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$' +' , '+ r'$\widehat{p}$' +f'+ {z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$',fontsize=15)
#\widehat{p}-\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}


ax.text(-5.5 , .15, f'신뢰구간 L = 2*{z_1}' + r'$\sqrt{\dfrac{\widehat{p}\widehat{q}}{n}}$',fontsize=15)

d = 0.025 *2
p = 0.78
ax.text(-5.5 , .25, f'사전정보가 없는 경우 n' + r'$\geq\dfrac{z^2_{a/2}}{d^2}$',fontsize=15)

ax.text(-5.5 , .35, f'사전정보 p가 있는 경우 n' + r'$\geq\dfrac{4*z^2_{a/2}*{p}*{(1-p)}}{d^2}$' + f'= {round(4 * z_1**2 * p * (1-p) / d**2)} ' ,fontsize=15)

모비율에 대한 표본크기 구하기

728x90
반응형

+ Recent posts