★모분산을 모를때는 t-분포★기초통계학-[연습문제02 -16]
11.모평균이 뮤인 정규모집단으로부터 크기 9인 표본을 임의로 추출한다. 추출된 표본의 표본분산이 25일때 P( | |X - 뮤 | < k) = 0.9를 만족하는 상수 k를 구하라.
모분산 = 모름
크기 = 9
표본분산 = 25
==> 모분산을 모를때는 t-분포를 활용한다.
https://knowallworld.tistory.com/302
★모분산을 모를땐 t-분포!★stats.norm.cdf()★모분산을 알때/모를때 표본평균의 표본분포★일표본
1. 표본평균의 표본분포(모분산을 아는 경우) ==> 표본평균에 대한 표본분포는 정규분포를 따른다. EX-01) 모평균 100 , 모분산 9인 정규모집단으로부터 크기 25인 표본을 임의로 추출 1> 표본평균 |X
knowallworld.tistory.com
자유도 = 9-1 = 8
T = (|X - 뮤) / (25/루트(9)) ~ t(8)
P( | |X-뮤 | < k ) = P ( |T| < t_0 ) = 0.90
t_0 = k / (25/루트(9))
P(T>t_0) = 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=(2.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)
k = Symbol('k')
k = solve((math.sqrt(25/9)) * t_r[0] - k)
print(k)
k = Symbol('k')
k = solve((math.sqrt(25/9)) * t_r[0] - k)
print(k)
t_0 = 1.86
k = 3.1
12. 평균 198인 정규분포 , 25명을 무작위로 선정하여 측정 결과 표본평균이 197, 표본평균편차가 3.45
1> 표본평균 |X에 대한 표본분포를 구하라.
==>모분산을 모른다.
|X ~ N (197 , 모분산/ 25)
루트 (모분산/25) = 3.45
모분산 = 297.562
P(196.82 <= |X <= 199.18) = [P(199.18 - 197 / 3.45 ) - P(Z<=0)] * 2
==> 틀리다.
T = (|X - 198) / (3.45 / 5 ) ~ t(25-1)
2> 표본평균이 196.82와 199.18 사이일 근사확률을 구하라.
P(196.82 <= T <= 199.18) = P( (196.82 - 197) / ( (3.45 / 5 ) < T <= (199.18 - 197) / ( (3.45 / 5 ) ) = ( P(T<=1.71) - P(T<=0) ) * 2 = P(-1.71 <= T <= 1.71) = 0.9
X = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
dof_2 = [24] #자유도
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
#t_r = scipy.stats.t(dof_2).ppf(1- 0.05)
t_r = round( (199.18 - 198) / ( (3.45 / 5 ) ) , 2)
ax.fill_between(X, scipy.stats.t(dof_2).pdf(X) , 0 , where = (X<=t_r) & (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')
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
plt.annotate('' , xy=(0, .16), xytext=(1.5 , .16) , arrowprops = dict(facecolor = 'black'))
area = (scipy.stats.t(dof_2).cdf(t_r) - scipy.stats.t(dof_2).cdf(0) ) * 2
ax.text(1.71 , .17, r'$P(T>t_{})$' + f'= {round(area[0], 2)}',fontsize=15)
ax.text(t_r - 0.8 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
ax.text(-t_r - 0.8 , 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)
3> 표본평균이 상위 2.5%인 경계수치를 구하라.
t_r = 2.064 = x- 198 / (3.45 / 5 )
x = 199.424
X = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
dof_2 = [24] #자유도
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(1- 0.025)
# t_r = round( (199.18 - 198) / ( (3.45 / 5 ) ) , 2)
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')
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
plt.annotate('' , xy=(2.5, .005), xytext=(2.5 , .16) , arrowprops = dict(facecolor = 'black'))
area = 1- scipy.stats.t(dof_2).cdf(t_r)
ax.text(1.71 , .17, r'$P(T>t_{0.025})$' + f'= {round(area[0], 3)}',fontsize=15)
ax.text(t_r - 0.8 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
# ax.text(-t_r - 0.8 , 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)
13. 평균 5000시간인 정규분포, 전구 16개 구입하여 , |x = 4800시간 , s = 1000시간
1> 표본평균 |X의 표본분포를 구하라.
모분산 모른다.
|X - 5000 / 루트(1000**2 / 16 ) ~ t(16-1)
2> 이 표본을 이용하여 P(| |X -5000 | < x_0 ) = 0.9를 만족하는 x_0를 구하라.
n = 16
자유도 = 15
(P( (x_0) / 루트(1000**2 / 16 ) < T ) - 0.5) * 2 = 0.9
P( (x_0) / 루트(1000**2 / 16 ) < T ) = 0.95
t_0.05 = (x_0) / 루트(1000**2 / 16 ) = 1.753
x_0 = 438.25
X = np.arange(-5,5 , .001)
fig = plt.figure(figsize=(15,8))
dof_2 = [15] #자유도
ax = sns.lineplot(x = X , y=scipy.stats.t(dof_2).pdf(X) )
t_r = scipy.stats.t(dof_2).ppf(0.95)
# t_r = round( (199.18 - 198) / ( (3.45 / 5 ) ) , 2)
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')
ax.vlines(x = t_r ,ymin=0 , ymax= scipy.stats.t(dof_2).pdf(t_r) , colors = 'black')
plt.annotate('' , xy=(2.5, .005), xytext=(2.5 , .16) , arrowprops = dict(facecolor = 'black'))
area = 1- scipy.stats.t(dof_2).cdf(t_r)
ax.text(1.71 , .17, r'$P(T>t_{0.05})$' + f'= {round(area[0], 3)}',fontsize=15)
ax.text(t_r - 0.8 , 0.02 , r'$t_r$' + f'= {t_r}' , fontsize = 13)
# ax.text(-t_r - 0.8 , 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 = Symbol('x')
print(solve(1.753 * math.sqrt(1000**2/16) - x))
출처 : [쉽게 배우는 생활속의 통계학] [북스힐 , 이재원]
※혼자 공부 정리용