Chi-squared Test
T-Test는 평균값을 비교할 때 사용
우리나라는 매년 겨울 서풍에 실려오는 초미세먼지로 불편을 겪는다.
- 2020년 1월 신종 코로나 바이러스에 대한 대책으로 중국의 경제 활동이 멈췄고, 우리는 겨울답지 않는 맑은 공기를 반갑게 맞이했다.
실제 공기 질이 좋아졌는지 서울시 일별 대기오염도 정보 자료를 이용해서 2019년 12월과 2020년 2월의 초미세먼지 농도를 비교 해 보자.
다음 예제는 실습의 편의를 위하여 GitHub에 올려둔 파일을 사용한다.
1 dataFile <- 'https://raw.githubusercontent.com/gehoon/statistics/master/data/seoul_daily_air_20200923.csv'
2 df <- read.csv(dataFile, fileEncoding='euc-kr')
3 # 혹은 df <- read.csv(file.choose(), fileEncoding='euc-kr')
4
5 df <- df[ grep('구$', df$측정소명), ]
6
7 dust19 <- data.frame(month = as.factor('2019.12'),
8 pm2.5 = df[ grep('^201912', df$측정일시) , '초미세먼지.....' ])
9 dust20 <- data.frame(month = as.factor('2020.02'),
10 pm2.5 = df[ grep('^202002', df$측정일시) , '초미세먼지.....' ])
11
12 dust = rbind(dust19, dust20)
13 summary(dust)
14 boxplot(pm2.5 ~ month, data=dust, col=c('brown2','deepskyblue'))
15
16 shapiro.test(dust19$pm2.5)
17 shapiro.test(dust20$pm2.5)
18
19 wilcox.test(pm2.5 ~ month, data=dust)
> shapiro.test(dust19$pm2.5)
Shapiro-Wilk normality test
data: dust19$pm2.5
W = 0.9001, p-value < 2.2e-16
> shapiro.test(dust20$pm2.5)
Shapiro-Wilk normality test
data: dust20$pm2.5
W = 0.90371, p-value < 2.2e-16
> wilcox.test(pm2.5 ~ month, data=dust)
Wilcoxon rank sum test with continuity correction
data: pm2.5 by month
W = 266166, p-value = 0.4786
alternative hypothesis: true location shift is not equal to 0
T-test 결과
T-Test (실제로는 Wilcoxon rank sum test)결과 2019년 12월과 2020년 2월의 초미세먼지 농도는 유의미하게 다르지 않다고 한다!!
Chi-squared Test는 빈도를 비교할 때 사용
'매우 나쁨'날의 빈도 비교
2020년 2월의 공기질이 2019년 12월보다 나았다는 것을 꼭 주장하고 싶어서 다른 통계 방법을 써 보기로 한다.
- boxplot을 보면, 초미세먼지 농도가 대부분 20~40 사이에 분포한다.
- 그런 날은 우리가 미세먼지에 대한 생각 없이 그냥 살다가, 수치가 증가한 날 먼지의 존재를 느끼게 된다.
- 단순히 초미세먼지의 농도를 비교하는 방법보다, "초미세먼지가 심한 날"이 몇일이나 되었나를 비교하는 방법을 써 보기로 했다.
2018년 3월 20일 발표된 환경부 기준에 따르면,
- 초미세먼지 농도가 76㎍/㎥ 이상이면 '매우 나쁨'이다.
- dust 데이타의 pm2.5 가 76 이상인지 판단하여 dust$severe 라는 TRUE/FALSE vector로 만들어 저장하고,
table() 함수를 이용하여 TRUE/FALSE의 갯수를 헤아릴 것이다.
FALSE TRUE
2019.12 761 11
2020.02 675 0
Chi-squared Test
초미세먼지가 '매우 나쁨'인 날이 11일 vs. 0일이어서 비교가 불필요하지만, 어쨋든 chisq.test()를 하면 다음과 같다.
계산 결과, p < 0.01 로 다른 어떤 이유없이 '우연히' 이러한 차이를 얻을 확률이 100분의 1 이하라고 한다.
- 2019년 12월과 2020년 2월의 초미세먼지 '매우 나쁨'인 날의 수는, 우연이 아닐 가능성이 큰 것으로 보인다.
1 chisq.test(veryBadDust)
Pearson's Chi-squared test with Yates' continuity correction
data: veryBadDust
X-squared = 7.8949, df = 1, p-value = 0.004958
공기질을 여러 등급으로 나눠서 비교하기
2018년 3월 20일 발표된 환경부 기준에 따르면,
- 초미세먼지 농도가 0~15㎍/㎥ 면 '좋음',
- 초미세먼지 농도가 16~35㎍/㎥ 면 '보통',
- 초미세먼지 농도가 36~75㎍/㎥ 면 '나쁨',
- 초미세먼지 농도가 76㎍/㎥ 이상이면 '매우 나쁨'이다.
- 이 기준에 따라 공기질을 4등급으로 나누면,
> dustSeverity
Bad Good Plain Very Bad
2019.12 185 146 431 11
2020.02 195 146 334 0
Category가 알파벳순(Bad, Good, Plain, Very Bad)으로 자동 정렬되었다.
- 카이제곱 검정과는 관계 없지만, 공기질을 심각 순서로 정렬하려면 이 category를 factor로 인식시켜야 한다.
그리고 Chi-squared test를 하면, p < 0.001 으로 계산된다.
- 이는 2019년 12월과 2020년 2월의 초미세먼지 등급 차이를 '우연히' 얻을 확률이 1000분의 1 이하라는 뜻으로,
- 우연에 의한 차이가 아닐 것으로, 유의미한 차이일 것으로 본다.
> dustSeverity
Good Plain Bad Very Bad
2019.12 146 431 185 11
2020.02 146 334 195 0
> chisq.test(dustSeverity)
Pearson's Chi-squared test
data: dustSeverity
X-squared = 17.008, df = 3, p-value = 0.0007041
| /CentralLimitTheorem /ChiSquared /Clustering /InstallR /InstallRStudio /Lies /NormalDistribution /RBasic /RBasic1 /RBasic2 /RBasic3 /RCloud /RIntro /RKorean /T-Test |
