기술 통계와 추론 통계
통계적 가설 검정
t 검정(t-test)
데이터 준비
mpg <- as.data.frame(ggplot2::mpg)
library(dplyr)
mpg_diff <- mpg %>%
select(class, cty) %>%
filter(class %in% c("compact", "suv"))
head(mpg_diff)
## class cty
## 1 compact 18
## 2 compact 21
## 3 compact 20
## 4 compact 21
## 5 compact 16
## 6 compact 18
table(mpg_diff$class)
##
## compact suv
## 47 62
# table()함수 : 매개변수가 한 개이면 도수분포표를, 두 개 이상이면 교차표를 출력하는 함수
t-test
t.test(data = mpg_diff, cty ~ class, var.equal = T)
##
## Two Sample t-test
##
## data: cty by class
## t = 11.917, df = 107, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 5.525180 7.730139
## sample estimates:
## mean in group compact mean in group suv
## 20.12766 13.50000
#1) 유의확률(p-value) 5%를 판단 기준으로 삼고 0.05 미만이면 '집단 간 차이가 통계적으로 유의하다'고 해석. 실제론 차이가 없는데 이런 정도의 차이가 우연히 관찰된 확률이 5%보다 작다면, 우연으로 보기 힘들다라고 결론 -> 분석결과 'compact와 suv 간 평균 도시 연비 차이가 통계적으로 유의하다'
# 2) 각 집단의 cty(도시 연비) 평균 비교로 compact는 20, suv는 13 이므로 "suv" 보다 "compact"의 도시 연비가 더 높다
데이터 준비
mpg_diff2 <- mpg %>%
select(fl, cty) %>%
filter(fl %in% c("r", "p")) # r:regular, p:premium
table(mpg_diff2$fl)
##
## p r
## 52 168
t-test
t.test(data = mpg_diff2, cty ~ fl, var.equal = T)
##
## Two Sample t-test
##
## data: cty by fl
## t = 1.0662, df = 218, p-value = 0.2875
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.5322946 1.7868733
## sample estimates:
## mean in group p mean in group r
## 17.36538 16.73810
#1) 유의확률(p-value)가 0.05 보다 큰 0.2875 이므로, 실제로는 차이가 없는데 우연에 의해 이런 차이가 관찰될 확륙이 28.75% -> 분석결과 일반 휘발유와 고급 휘발유를 사용하는 자동차 간 도시 연비 차이가 통계적으로 유의하지 않다
# 2) 고급 휘발유와 일반 휘발유 자동차의 도시 연비 평균이 0.6 정도의 차이는 우연히 발생했을 가능성이 크다고 해석
상관분석(Correlation Analysis)
데이터 준비
economics <- as.data.frame(ggplot2::economics)
상관분석
cor.test(economics$unemploy, economics$pce)
##
## Pearson's product-moment correlation
##
## data: economics$unemploy and economics$pce
## t = 18.605, df = 572, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.5603164 0.6625460
## sample estimates:
## cor
## 0.6139997
# 유의확률(p-value) 값이 0.05 미만으로, 실업자 수와 개인 소비 지출의 상관이 통계적으로 유의하다고 해석
# cor(상관계수)가 양수 0.61이므로, 실업자 수와 개인 소비 지출은 한 변수가 증가하면 ㄷ른 변수가 증가하는 정비례 관계 임
데이터 준비
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
상관행렬 만들기
car_cor <- cor(mtcars) # 상관행렬 생성
round(car_cor, 2) # 소수점 셋째 자리에서 반올림해서 출력
## mpg cyl disp hp drat wt qsec vs am gear carb
## mpg 1.00 -0.85 -0.85 -0.78 0.68 -0.87 0.42 0.66 0.60 0.48 -0.55
## cyl -0.85 1.00 0.90 0.83 -0.70 0.78 -0.59 -0.81 -0.52 -0.49 0.53
## disp -0.85 0.90 1.00 0.79 -0.71 0.89 -0.43 -0.71 -0.59 -0.56 0.39
## hp -0.78 0.83 0.79 1.00 -0.45 0.66 -0.71 -0.72 -0.24 -0.13 0.75
## drat 0.68 -0.70 -0.71 -0.45 1.00 -0.71 0.09 0.44 0.71 0.70 -0.09
## wt -0.87 0.78 0.89 0.66 -0.71 1.00 -0.17 -0.55 -0.69 -0.58 0.43
## qsec 0.42 -0.59 -0.43 -0.71 0.09 -0.17 1.00 0.74 -0.23 -0.21 -0.66
## vs 0.66 -0.81 -0.71 -0.72 0.44 -0.55 0.74 1.00 0.17 0.21 -0.57
## am 0.60 -0.52 -0.59 -0.24 0.71 -0.69 -0.23 0.17 1.00 0.79 0.06
## gear 0.48 -0.49 -0.56 -0.13 0.70 -0.58 -0.21 0.21 0.79 1.00 0.27
## carb -0.55 0.53 0.39 0.75 -0.09 0.43 -0.66 -0.57 0.06 0.27 1.00
# mpg(연비) 행과 cyl(실린더 수) 열이 교차되는 상관계수가 -0.85이므로, 연비가 높을수록 실린더가 수가 적은 경향이 있다
# cyl(실린더 수)과 wt(무게)의 상관계수가 0.78이므로, 실린더 수가 많을수록 자동차가 무거운 경향이 있다
상관행렬 히트맵 만들기
#install.packages("corrplot")
library(corrplot)
## corrplot 0.84 loaded
corrplot(car_cor)
원 대신 상관계수 표시
corrplot(car_cor, method = "number")
다양한 파라미터 지정하기
col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(car_cor,
method = "color", # 색깔로 표현
col = col(200), # 색상 200개 선정
type = "lower", # 왼쪽 아래 행렬만 표시
order = "hclust", # 유사한 상관계수끼리 군집화
addCoef.col = "black", # 상관계수 색깔
tl.col = "black", # 변수명 색깔
tl.srt = 45, # 변수명 45도 기울임
diag = F) # 대각 행렬 제외