본문 바로가기
@ 필수과목/손으로 푸는 통계

[손으로 푸는 통계 ver1.0] 98. 표본분산을 모분산 대신 사용할 수 있는가 (3) 균등분포를 따르는 모집단에서 p값 비교

by bigpicture 2022. 7. 21.
반응형

Z검정에서 표본의 크기가 충분히 크면 모표준편차 대신 표본표준편차를 사용할 수 있는지 알아보고 있습니다. 

지난시간까지 정규분포를 따르는 모집단에서 모분산을 사용한 경우와 표본분산을 사용한 경우의 p값을 비교하였습니다. 표본의 크기가 수천 이상인 경우에 납득할 만한 차이가 발생했습니다. 통상적으로 사용하는 표본크기인 30개에서는 모분산 대신 표본분산을 사용하는 것이 어렵다고 결론내렸습니다. 

이번 시간에는 모집단의 분포를 균등분포로 바꿔봅시다. 방법론은 지난 두 강의에서 자세히 다뤘으니 이번 시간에는 p값을 바로 비교해봅시다. 

모집단이 균등분포를 따를 경우 표본분산은 아래 분포를 따릅니다.

$2.5n \frac{s^2}{\sigma^2} \sim \chi ^2_{2.5n}$

확률 95%로 표본분산이 뽑힐 범위는 아래와 같습니다. 

$\frac{ qchisq(0.05,2.5n)}{2.5n}\ \sigma^{2} \leq  s^{2} \leq \frac{qchisq(0.95,2.5n)}{2.5n} \ \sigma^{2}$

 

아래와 같이 치환했구요. 

 

$A_{n-1} \sigma^2 \leq  s^2 \leq B_{n-1} \sigma^2$

 

각 항에 루트를 씌워줍니다. 

 

$ \sqrt{A_{n-1}} \sigma  \leq  s  \leq  \sqrt{B_{n-1}} \sigma$

 

위 식을 이용하여 Z값의 범위를 구하면 아래와 같습니다. 상세한 과정은 지난시간에 다뤘으므로 생략합니다. 

 

$ \frac{1}{\sqrt{B_{n-1}}} Z_{\sigma}  \leq  Z_{s}  \leq \frac{1}{ \sqrt{A_{n-1}}} Z_{\sigma}$

 

모분산으로 구한 p값이 0.05가 나왔을 때를 기준으로 범위를 구하겠습니다. 모분산으로 구한 p값이 0.05가 나오려면 $Z_{\sigma}$는 1.64여야 합니다. 위 식에 대입합시다. 

 

$ \frac{1}{\sqrt{B_{n-1}}} \times 1.64  \leq  Z_{s}  \leq \frac{1}{ \sqrt{A_{n-1}}} \times 1.64$

 

아래와 같이 치환합니다. 

 

$B'_{n-1}\cdot 1.64 \leq Z_{s} \leq A'_{n-1}\cdot 1.64$

 

표본분산으로 대체했을 때의 p값을 $p_{s}$라고 놓으면 $p_{s}$ 의 범위는 아래와 같습니다. pnorm 은 표준정규분포의 누적분포함수입니다. 

 

$1-pnorm(A'_{n-1} \times 1.64) \leq p_{s} \leq 1-pnorm(B'_{n-1} \times 1.64)$

 

n에 따라 양쪽 값이 어떻게 변하는지 알아봅시다. 지난시간에 구한 정규분포 모집단에서의 범위도 함께 나타냈습니다. 

 

 

표본 크기가 3000은 되야 어느정도 납득할 만한 범위가 됩니다. 표본크기 3000에서 표본분산으로 구한 p값이 0.048~0.053 입니다. 저 구간에 100% 들어오는 것도 아닙니다. 확률은 95%입니다.

 

모분산으로 구한 p값과 표본분산으로 구한 p값의 차이가 10% 이하가 되는 표본 크기를 구해보았습니다. n은 1279입니다. 5% 이내일 경우 n은 3967 입니다. 

 

표본의 크기가 수천개인 아주 큰 표본에서 대체가 가능합니다. 우리가 기준으로 사용하는 표본크기 30에서 표본분산으로 구한 p값의 범위는 아래와 같습니다. 

 

$0.029 \leq p_{s} \leq 0.074$

 

범위가 상당히 넓습니다. 이정도 표본크기에서는 모분산 대신 표본분산을 사용하면 안된다고 생각합니다. 

 

 

#표 생성 코드

size=c(10,30,50,100,200,500,1000,3000,5000,8000,10000)
confid=0.95


df=data.frame(n=NA,A=NA,B=NA)

for (i in 1:length(size)){
  
  A= sqrt(qchisq(1-confid,size[i]*2.5)/(size[i]*2.5))
  B=sqrt(qchisq(confid,size[i]*2.5)/(size[i]*2.5))

  A_prime=1/A
  B_prime=1/B
  
  p_left=round(1-pnorm(A_prime*1.64),3)
  p_right=round(1-pnorm(B_prime*1.64),3)
    
  df[i,]=list(size[i],p_left,p_right)
}

colnames(df)=c("n","p_left","p_right")

 

#타켓 표본크기 계산 코드

confid=0.95
target=0.05


#A' 계산
size=2
p_left=0

while(p_left<target*0.95){
  
  A= sqrt(qchisq(1-confid,size*2.5)/(size*2.5))
  A_prime=1/A

  p_left=1-pnorm(A_prime*1.64)
  
  size=size+1
}
print(size)


#B' 계산
size=100
p_right=1

while(p_right>target*1.05){
  

  B=sqrt(qchisq(confid,size*2.5)/(size*2.5))
  B_prime=1/B
  
  p_right=1-pnorm(B_prime*1.64)
  
  size=size+1
}

print(size)

 

 

#강의 영상

 

반응형

댓글