본문 바로가기
공부/R & Python

6-4. 데이터의 정규성검정과 신뢰구간

by 드인 2020. 2. 15.

6-4. 데이터의 정규성검정과 신뢰구간


1) 데이터 설명

- stud_math 데이터 : 포루투칼의 고등학생 수학성적 (stud_math_desc.doc참고)

 

2) 데이터의 정규성 검정

- 정규확률도 (Normal Q-Q plot) : 데이터가 정규분포하는가?

par(mfrow=c(2,2))

qqnorm(G1)
qqline(G1, col = 2, cex=7)

qqnorm(G2)
qqline(G2, col = 2, cex=7)

qqnorm(G3)
qqline(G3, col = 2, cex=7)

qqline의 디폴트는 정규분포의 1사분위, 3사분위를 직선

qqline(y, distribution = qqnorm, probs = c(0.25, 0.755))

 

- 정규분포 : 확률변수 X의 확률 밀도함수가 다음과 같이 주어질 때 X는 정규분포 N(m, s^2)따름

                  f(x)=(1/√2(pie)s)e^-((x-m)^2/2s^2), -∞<x<

 

- 정규분포 적합성검정 : 데이터가 정규분포 하는지에 대한 검정

(1) Shapiro-Wilks 검정

shapiro.test(G3)

G3는 정규분포한다고 볼 수 없다 (p-value~0)

 

(2) Anderson-Darling 검정 (추가패키지 필요)

install.packages('nortest')
library(nortest)
ad.test(G3)

G3는 정규분포한다고 볼 수 없다 (p-value~0)

 

3) 데이터 시뮬레이션

- 확률분포함수로부터 데이터생성

 

- 확률분포함수로부터 데이터생성

runif(5,min=1,max=5)
rnorm(5,mean=5,sd=1)
rgamma(5,shape=3,rate=2)
rbinom(5,size=100,prob=.2)

 

- 정규분포로부터 데이터생성, 밀도함수 그래프

x<-rnorm(1000)
plot(density(x),xlim=c(-5,10))

 

- 데이터 생성 (정규분포(평균=500, 편차=100)에서 100개 데이터 생성)

nreps <- 100
ll <- numeric(nreps)
ul <- numeric(nreps)
n <- 100
mu <- 500
sigma <- 100
for(i in 1:nreps) {
  set.seed(i)
  x <- rnorm(n, mu, sigma)
  ll[i] <- mean(x) - qnorm(0.975)*sqrt(sigma^2/n)
  ul[i] <- mean(x) + qnorm(0.975)*sqrt(sigma^2/n)
}

 

par(mfrow=c(1,1))
plot(1:100, ylim=c(min(ll), max(ul)),
     ylab="95% Confidence Interval", xlab="iterations")

for(i in 1:100) lines(c(i, i), c(ll[i], ul[i]))
abline(h=mu, col="red", lty=2, lwd=3)

신뢰구간 95% 그림

5개는 모평균에 포함X

 

4) 신뢰구간

- 신뢰구간

 신뢰구간은 실제 모수를 추정하는데 몇 퍼센트의 확률로 그 신뢰구간이 실제 모수를 포함하게 될 것이냐 하는 것이다. 예를 들어 모평균의 추정을 위해 100번의 sampling을 통해 표본평균과 표본분산을 구하여 100개의 신뢰구간을 얻었을 때, 그 100개의 신뢰구간 중 95개에 모평균이 포함되게 설정된 신뢰구간을 95% 신뢰구간이라고 한다.

 

5) 신뢰구간의 의미

- 신뢰수준, 표본오차

"전국의 유권자 1,500명을 조사한 결과에 의하면 A 후보 지지율은 45%이며, 95% 신뢰수준에서 오차한계는 3.5%이다."

==> 지지도에 대한 95% 신뢰구간 : 표본 지지율 ± 오차한계 <=> 45% ± 3.5% <=> (41.5%, 48.5%)