# 데이터 다운로드 : http://www.bio.ic.ac.uk/research/mjcraw/therbook/
# 책 pdf 주소 : https://www.cs.upc.edu/~robert/teaching/estadistica/TheRBook.pdf
# chapter 8 classic test 부터 다룬다.

# 데이터 준비
getwd()
# header = T를 안붙힐 경우, txt에서온 칼럼명이 row로 들어가고 V1이라는 칼럼명이 생성된다.
light <- read.table("data/light.txt", header = T) #폴더에 접근할때는앞에 / 안붙히고 바로..
light


#### normal QQ plot ####
# 2개의 그래프를 그리고 접선과 일치할수록, 정규분포를 따르는 데이터라 할 수 있다.

# 1) 눈 대중..으로 데이터의 분포를 보기 위한 hist() 히스토그램확인
hist(light$speed, col = "green")
image


# 2) rnorm()으로 생성한 정규분포 데이터로 그래프 비교해보기
x <- rnorm(1000)
hist(x)

# 3) 데이터 통계를 보기 위한 summary() + boxplot()****
summary(light) # 통계정보
boxplot(light) # 통계정보를 그래프로
image

# 4) hist()그램보다 더 정확하게 정규분포인지를 확인할 수 있는 QQplot *** ####
# qqnorm() : 데이터들을 점으로 표시하여, qqline()과 비교할 준비를 한다.
# qqline() : quantile을 기준으로 줄을 세워, 정규분포를 가정하는 선을 생성
# 생성된 qqline과 점들의 분포가 비슷하면, normal distribution을 "부정하기 어렵다"라고 말함.

# 1단계 : H0 : 정규분포 되어있다. 를 가정
# 2단계 : qqnorm()+qqline()-> 그려보고 선에 안맞으면 reject할 준비
# 3단계 : 실제적으로 shapiro.t()를 넣어 p-value를 확인하여 0.05(5%)보다 큰 것을 확인한다.
 

# H0 : 정규분포를 가진다

qqnorm(light$speed)
qqline(light$speed, col = "red")
# 선에 벗어나 있으므로 H0 거절할 준비하기
image

# p-value확인
shapiro.test(light$speed) # (대립가설이)0.09를 가져 0.05보다 크다. => H0를 채택해야하는 상황.
# 정규분포라 봐야한다...


# 5) 완전 정규분포인 데이터를 가지고 qqplot을 그려보자.
# 1단계
# H0 : 정규분포 되어있다. 를 부정할 수 없을 것이다..예상
x <- rnorm(1000)

# 2단계
qqnorm(x)
qqline(x, col = "red")
# 정규분포 선과 점들이 거의 일치
image

# 3단계
shapiro.test(x) # p-value가 0.05보다 커서 H0채택 H1거절 -> 정규분포   아니라고말할수x
# cf) 카이제곱검정 H0 : chisq.test()로 검정 : 남/녀가 영향안줄 것이다. 결과들 독립이다. 를 검정
#      - p가 0.05보다 작으면 H0거절 H1(남여영향줌)을 채택
# cf) 정규분포검정 H0 : shapiro.test()로 검정정규분포를 따를 것이다.
#      - p가 0.05보다 작으면 H0거절 H1(정규분포라고 말할 수 없다.)을 채택
      

#  다시 한번 정규분포x인 데이터로 연습해보자.
x <- exp(  rnorm(1000)  )

# 1단계
# H0 : 정규분포 되어있다. 를 부정(reject)


# 2단계
qqnorm(x)
qqline(x, col = "red")
# 정규분포 선과 점들이 일치x
image

# 3단계
shapiro.test(x) # p-value가 엄청 작다 -> H0 거절 H1채택 -> 정규분포 라고 보기 힘듬.



# 7) wilcox.test()를 통해, 정규분포가 아닌 측정된 샘플데이터에서 [H0:빛의 속도(모집단)의 평균(mu)는 299 990 k/ms]이다.를 검정해보자
# ***정규분포를 따르지 않으므로 Student's t test(데이터가 정규분포일 때, 모집단의 평균 검정)는 하지 못하여 wilcox.test()를 사용한다.
# 데이터 설명
# 빛의 속도라고 알려진 299990에서 299000을 뺀 수치들이다.
# 그 결과 정규분포를 따르지 않게 되고
# 정규분포를 가정하고 실험하는 Student's t test를 하지 못한다.***

#*** 윌콕슨 검정 H0 : 샘플로 본 빛의 속도(모집단)의 평균은 990 -> 299 990일 것이다.
wilcox.test(light$speed, mu = 990 )
# 그 결과 p-value가 0.05보다 작다 -> H0:거절 / H1 채택-> 빛의 속도평균 299990 아님

# summary()로 확인한 샘플들의 Mean값을 가지고 윌콕슨 검정해보자.
summary(light$speed) # Mean = 909
#*** 윌콕슨 검정 H0 : 샘플로 본 빛의 속도(모집단)의 평균은 909 -> 299 909일 것이다.
wilcox.test(light$speed, mu = 909 )
# 그 결과 p-value가 0.69 -> H0: 채택-> 빛의 속도평균 299 909 이 아니라고할수x

+ Recent posts