★모분산을 모를땐 t-분포!★stats.norm.cdf()★모분산을 알때/모를때 표본평균의 표본분포★일표본★표본비율★기초통계학-[모집단 분포와 표본분포 -03]
1. 표본평균의 표본분포(모분산을 아는 경우)
==> 표본평균에 대한 표본분포는 정규분포를 따른다.
EX-01) 모평균 100 , 모분산 9인 정규모집단으로부터 크기 25인 표본을 임의로 추출
1> 표본평균 |X의 표본분포
뮤_|X = 100 , 분산_|X = 9/25 = 0.36
|X ~ N(100, 0.6**2)
2> 표본평균이 99이상, 101이하일 확률
https://knowallworld.tistory.com/254
==> 표준화 방법
(99-100) / 0.6 = -1.67
(101-100) /0.6 = 1.67
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 인 정규분포 플롯
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=1.67) & (x>=-1.67) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf(1.67) - stats.norm.cdf(0)) * 2
ax.text(1.71 , .17, f'P(-1.67<=Z<=1.67) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= 1.67, ymin= 0 , ymax= stats.norm.pdf(1.67, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
ax.vlines(x= -1.67, ymin= 0 , ymax= stats.norm.pdf(-1.67, loc=0 , scale =1) , color = 'black' , linestyle ='solid' , label ='{}'.format(2))
P(-1.67 <= Z <= 1.67) = (P(Z<=1.67) - P(Z<=0) ) * 2= 0.9051
3> 표본평균이 모평균보다 1.5이상 더 클 확률
모평균 = 100
표본평균 + 1.5 이상 클 확률 = P(|X >= 100+1.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 , 표준편차 =1 인 정규분포 플롯
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 = (1- stats.norm.cdf(2.5) )
ax.text(1.71 , .11, f'P(Z>=2.5) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(2.6, .007), xytext=(2.6 , .1) , 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))
Z = (101.5 - 100) / 0.6 = 2.5
1 - P(Z<=2.5) = 0.0062
EX-02) 모평균 20 , 모분산 25인 정규모집단에서 크기 36인 표본을 임의로 추출
1> 표본평균 |X의 표본분포
뮤_|X = 20 , 분산_X = 25/36
|X ~ N(20 , 0.833**2)
2> 표본평균이 19.4이상 , 21.8 이하일 확률
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((19.4-20) / 0.833 ,2)
z_2 = round((21.8-20) / 0.833 , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_2) & (x>=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_2)) - stats.norm.cdf(z_1))
ax.text(1.71 , .17, f'P({z_1}<=Z<={z_2}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_2, ymin= 0 , ymax= stats.norm.pdf(z_2, 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))
P(19.4 <= |X <= 21.8) = P(19.4-20 / 0.833 <=Z <= 21.8-20 / 0.833) = P(-0.72<= Z<= 2.16) = 0.7489
3> 표본평균과 모평균의 차의 절대값이 1.5보다 클 확률
모평균 = 20
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((18.5-20) / 0.833 ,2)
z_2 = round((21.5-20) / 0.833 , 2)
ax.fill_between(x, stats.norm.pdf(x, loc=0 , scale =1) , 0 , where = (x<=z_2) & (x>=z_1) , facecolor = 'skyblue') # x값 , y값 , 0 , x<=0 인곳 , 색깔
area = (stats.norm.cdf((z_2)) - stats.norm.cdf(z_1))
ax.text(1.71 , .17, f'P({z_1}<=Z<={z_2}) : {round(area,4)}',fontsize=15)
plt.annotate('' , xy=(0, .17), xytext=(1.7 , .17) , arrowprops = dict(facecolor = 'black'))
ax.vlines(x= z_2, ymin= 0 , ymax= stats.norm.pdf(z_2, 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))
P(20 -1.5<=|X < = 20 + 1.5) = P(18.5 - 20 / 0.833 < Z <= 21.5 / 0.833) = P(-1.8<= Z <= 1.8) = 0.9281
2. 표본평균의 표본분포(모분산을 모르는 경우)
==> 대부분의 모집단은 모분산 또는 모표준편차가 알려지지 않음. ==> 표본평균이 정규분포를 따른다고 할 수 없다.
==> |X의 표준화 확률변수 Z는 자유도가 n-1인 t-분포를 따른다.
==> 모분산이 알려지지 않은 정규모집단에서 크기 n인 표본을 선정할때, 표본평균 |X의 표준화 확률변수를 T로 나타낸다.
https://knowallworld.tistory.com/259
==> T-분포
EX-03) 평균이 77점인 정규분포 따른다. 신입생 9명 선정하여 표본조사
1> 표본평균에 대한 표본분포
뮤 = 77 , n = 9 ==> 모분산을 모르는 정규분포
==> 표본평균에 대한 표본분포는 자유도 (9-1)인 t-분포를 따른다.
T = (|X - 77) / (s/3) ~ t(8)
2> 무작위로 얻은 표본 [72 ,86 ,75 , 83 ,67 ,77 ,82 ,79 ,88] 일때 표본평균과 표본표준편차
a = [72 ,86 ,75 , 83 ,67 ,77 ,82 ,79 ,88]
print(np.mean(a))
print(np.std(a , ddof= 1))
==> ddof = 1 이 표본에 대한 계산
|x = (72+86 ········ + 88) / 9 ~ 78.78
s = 6.778
3> [72 ,86 ,75 , 83 ,67 ,77 ,82 ,79 ,88]의 표본을 이용하여 표본평균이 상위 5%인 점수를 구하라.
P(|X >= x_0) = 0.05, T = (|X - 77) / (6.778/3) ~ t(8)
P(|X>= x_0) = P( (|X - 77) / (6.778/3) >= (x_0 - 77) / (6.778/3)) = P(T>=(x_0 - 77) / (6.778/3) ) = 0.05
X = np.arange(-5,5 , .01)
fig = plt.figure(figsize=(15,8))
dof_2 = [8] #자유도
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(1- 0.05)
print(t_r)
ax.fill_between(X, scipy.stats.t(dof_2).pdf(X) , 0 , where = (X>=t_r) , facecolor = 'skyblue') # x값 , y값 , 0 , X조건 인곳 , 색깔
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
plt.annotate('' , xy=(3.0, .007), xytext=(2.5 , .16) , arrowprops = dict(facecolor = 'black'))
ax.text(1.71 , .17, r'$P(T>t_{0.05})$' + f'= {0.05}',fontsize=15)
ax.text(t_r - 1 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
b = ['t-(n={})'.format(i) for i in dof_2]
plt.legend(b , fontsize = 15)
자유도 8인 t-분포표에서 상위 5%인 95% 백분위수가 t_0.05 = 1.86
x_0 = sympy.Symbol('k')
sol_k = ((x_0 - 77) / (6.778/3)) - 1.86
k_sol = solve(sol_k)
print(k_sol)
==> SOLVE () 함수는 0값을 만들어 놓아야 한다.
==> 81.20235
EX-04) 신차의 연비가 평균 15km인 정규분포를 따른다. 크기 10인 표본을 임의로 추출하여 표본조사
1> 표본평균에 대한 표본분포
뮤 = 15 , n = 10 ==> 모분산을 모르는 정규분포
==> 표본평균에 대한 표본분포는 자유도 (10-1)인 t-분포를 따른다.
T = (|X - 15) / (s/루트10) ~ t(9)
2> 무작위로 얻은 표본 [15.1 ,14.6 ,16.4 , 15.5 ,14.2 ,14.4 ,14.6 ,16.0 ,16.2 , 16.7] 일때 표본평균과 표본표준편차
a = [15.1 ,14.6 ,16.4 , 15.5 ,14.2 ,14.4 ,14.6 ,16.0 ,16.2 , 16.7]
print(np.mean(a))
print(np.std(a , ddof= 1))
뮤_|X = 15.37
s_|x = 0.913
3> [15.1 ,14.6 ,16.4 , 15.5 ,14.2 ,14.4 ,14.6 ,16.0 ,16.2 , 16.7]의 표본평균이 상위 10%인 연비를 구하라.
P(|X >= x_0) = 0.1, T = (|X - 15) / (0.913/3) ~ t(9)
P(|X>= x_0) = P( (|X - 15) / (0.913/3) >= (x_0 - 15) / (0.913/3)) = P(T>=(x_0 - 77) / (0.913/3) ) = 0.1
X = np.arange(-5,5 , .01)
fig = plt.figure(figsize=(15,8))
dof_2 = [9] #자유도
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(1- 0.1)
print(t_r)
ax.fill_between(X, scipy.stats.t(dof_2).pdf(X) , 0 , where = (X>=t_r) , facecolor = 'skyblue') # x값 , y값 , 0 , X조건 인곳 , 색깔
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
plt.annotate('' , xy=(2.0, .007), xytext=(2.5 , .16) , arrowprops = dict(facecolor = 'black'))
ax.text(1.71 , .17, r'$P(T>t_{0.1})$' + f'= {0.1}',fontsize=15)
ax.text(t_r - 1 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
b = ['t-(n={})'.format(i) for i in dof_2]
plt.legend(b , fontsize = 15)
x_0 = sympy.Symbol('k')
sol_k = (x_0 - 15) / (0.913/3) - 1.383
k_sol = solve(sol_k)
print(k_sol)
==> 15.4208
출처 : [쉽게 배우는 생활속의 통계학] [북스힐 , 이재원]
※혼자 공부 정리용
'기초통계 > 표본분포' 카테고리의 다른 글
★표본분산 S**2 , 관찰 표본분산 s_0**2★카이제곱분포표★모분산의 표본분포★기초통계학-[모집단 분포와 표본분포 -06] (0) | 2023.01.06 |
---|---|
★중심극한정리★기초통계학-[모집단 분포와 표본분포 -05] (0) | 2023.01.06 |
★lineplot★중심극한정리★기초통계학-[모집단 분포와 표본분포 -04] (0) | 2023.01.05 |
★모비율★표본비율★기초통계학-[모집단 분포와 표본분포 -02] (0) | 2023.01.05 |
★표본분포★이산균등분포★표본추출 방법★모집단 분포★기초통계학-[모집단 분포와 표본분포 -01] (1) | 2023.01.05 |