### 이상치 정제
# 이상치(Outlier) : 정상범주에서 크게 벗어난 값
# 남자 : 1 / 여자 : 2
# score : 1 ~ 5
outlier <- data.frame(sex = c(1,2,1,3,2,1),
score = c(5,4,3,4,2,6)
)
# 이상치 확인
table(outlier$sex)
table(outlier$score)
# 이상치 => 결측치로 변경
outlier$sex <- ifelse(outlier$sex == 3, NA, outlier$sex )
outlier$score <- ifelse(outlier$score > 5, NA, outlier$score)
# filter() 를 이용하여 NA 값을 제외
outlier %>% filter(!is.na(sex) & !is.na(score)) %>% group_by(sex) %>% summarise(mean_score=mean(score))
# outlier로부터 sex 변수값이 NA가 아니고 score 변수값이 NA가 아닌 값들만 걸러내기
# outlier %>% filter(!is.na(sex) & !is.na(score))
# 걸러낸 값들을 이용하여 sex 기준으로 그룹화
# outlier %>% filter(!is.na(sex) & !is.na(score)) %>% group_by(sex)
# 그룹화된 값들에 대한 평균
# outlier %>% filter(!is.na(sex) & !is.na(score)) %>% group_by(sex) %>% summarise(mean_score=mean(score))
# 극단적인 값 : 논리적으로 존재할 수는 있지만, 극단적으로 크거나 작은 값 (굉장히 드문 값)
# 제거 기준 : 분석가마다 차이가 발생
# 성인 몸무게 : 40~ 150kg => 이 범주를 벗어난 값은 이상치(극단적인 값)으로 간주
# 상하위 0.3% 표준편차 +-3 에 해당하는 값은 이상치(극단적인 값)으로 간주
# boxplot을 이용하여 중심에서 크게 벗어난 값은 이상치(극단적인 값)으로 간주
boxplot(mpg$hwy)
boxplot(mpg$hwy)$stats # $stats은 boxplot을 그릴 때 통계치를 출력하는 기능
#### $stats 에 의한 통계치 출력 결과
# [1,] 12 극단 경계 값
# [2,] 18 1사분위 값
# [3,] 24 중앙 값
# [4,] 27 3사분위 값
# [5,] 37 극단 경계 값
#### 따라서 12 와 37을 벗어난 값은 극단치(이상치)로 간주하여 NA로 처리
mpg$hwy <- ifelse(mpg$hwy < 12 | mpg$hwy >37, NA, mpg$hwy)
table(is.na(mpg$hwy))
mpg %>% group_by(drv) %>% summarise(mean_hwy = mean(hwy, na.rm = T))
'경기도 인공지능 개발 과정 > R' 카테고리의 다른 글
R 서울시 역세권 아파트 가격 분석 (0) | 2022.04.19 |
---|---|
R ggplot2 (0) | 2022.04.17 |
R 결측치 (0) | 2022.04.17 |
R 패키지 ggplot2, dplyr (0) | 2022.04.17 |
R 기본문법(summary, dplyr 패키지, ifelse, table, hist) (0) | 2022.04.17 |