경기도 인공지능 개발 과정/R

R 이상치

agingcurve 2022. 4. 17. 15:40
반응형

### 이상치 정제
# 이상치(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