이상치 확인
# 데이터준비
autoparts <- read.csv("autoparts.csv", header = T)
autoparts3 <- autoparts[autoparts$prod_no=="45231-3B610", -c(1:7)]
head(autoparts3)
## fix_time a_speed b_speed separation s_separation rate_terms mpa
## 18780 82.0 0.736 1.776 180.7 719.1 92 74.7
## 18781 82.0 0.724 1.773 178.6 719.9 92 74.8
## 18782 82.0 0.732 1.752 178.9 719.7 92 74.7
## 18783 82.0 0.715 1.682 179.5 719.7 91 74.8
## 18784 81.6 0.728 1.690 180.7 719.4 93 74.8
## 18785 82.0 0.743 1.771 178.7 720.8 91 74.6
## load_time highpressure_time c_thickness
## 18780 19.7 70 26.1
## 18781 19.7 72 27.4
## 18782 19.7 68 27.3
## 18783 19.7 63 26.7
## 18784 19.7 64 25.8
## 18785 19.7 67 26.4
# boxplot은 사분위수를 포함하여 최소값, 중앙값, 최대값을 보여줌
boxplot(autoparts3$c_thickness)
***
이상치 검출
# 패키지
library(car) # 잔차 계산
library(outliers) # 평균에서 가장 먼 값
library(DMwR) # Local outlier Factor
library(tsoutliers) # ARIMA 모형 이용
# 사분위수 이용
# 낮은 이상치 < 제1사분위수 - 1.5 * 사분위편차
# 높은 이상치 > 제3사분위수 + 1.5 * 사분위편차
# @ 사분위편차= 1/2 * (제3사분위수-제1사분위수)
# fivenum(x)[2]는 제1사분위수
# fivenum(x)[4]는 제3사분위수
data <- autoparts3$c_thickness
which(data < fivenum(data)[2] - 1.5 *IQR(data))
## [1] 313 316 416 418 424 568 893 1484 1768 1771 1783 1877 2120
which(data > fivenum(data)[4] + 1.5 *IQR(data))
## [1] 305 306 307 308 461 564 748 1121 1275 1276 1277 1279 1408 1409
## [15] 1410 1411 1413 1482 1483 1591 1592 2363 2364 2365 2366 2367 2368 2369
## [29] 2370 2371 2372 2373 2374 2375 2376 2377 2378
# 잔차 계산 이용
# 회귀분석 후 예측값과 실제값의 차이인 잔차(residual)가 큰 값을 이상치를 삼음
m <- lm(c_thickness ~ ., data=autoparts3)
# rstudent()는 "외연 스튜던트화 잔차" 불리는 것으로 잔차를 전체 잔차의 표준편차로 나눈값임
# 이때, i번째 스튜던트화 잔차를 구할 때 i번째를 제외하여 표준편차를 구하므로 외면 스튜던트화 잔차라 부름
head(rstudent(m))
## 18780 18781 18782 18783 18784 18785
## -0.01545566 -0.29668984 0.13522741 -0.14901718 0.32864459 0.15521404
# 그래프
# 정상데이터와 이상데이터 존재 확인 가능
plot(rstudent(m), main="studentized Residuals")
# 잔차 계산
# car 패키지는 이상치를 자동으로 탐색해주는 함수를 가지고 있음
# 함수는 outlierTest()
# library(car)
# 제시된 데이터들은 통계적으로 유의미하게 잔치가 큰 값임(p < 0.05)
# 오른쪽의 Bonferonmi p는 수정된 값으로 독립변수가 많아질수록 값이 커지는 현상을 보정한 값임
outlierTest(m)
## rstudent unadjusted p-value Bonferonni p
## 21157 14.215108 4.5579e-44 1.0839e-40
## 20262 12.182360 3.7124e-33 8.8281e-30
## 19670 11.297318 7.3111e-29 1.7386e-25
## 21151 10.834554 9.8972e-27 2.3536e-23
## 20655 10.355221 1.3170e-24 3.1319e-21
## 21153 10.226805 4.7210e-24 1.1227e-20
## 21154 10.164636 8.7141e-24 2.0722e-20
## 21155 10.046863 2.7573e-23 6.5570e-20
## 21152 10.018596 3.6290e-23 8.6296e-20
## 20193 -9.002669 4.4145e-19 1.0498e-15
# 쿡의 거리
# 쿡의 거리는 회귀 직선의 모양에 크게 영향을 끼치는 점을 찾는 방법임
# 쿡의 거리는 레버리지(설명변수가 극단에 ㅣ우쳐 있는 정도)와 잔차(예측값과 실제값의 차이)에 비례함
# 이상치 : 쿡의 거리 > 4 / 데이터 개수
m <- lm(c_thickness ~ ., data=autoparts3)
plot(m) # Enter 네번 누름
# 쿡의 거리 계산
cooks <- cooks.distance(m)
plot(cooks, pch=".", cex=1.5, main="plot for cook's Distance")
text(x=1:length(cooks), y=cooks, labels=ifelse(cooks > 4/nrow(autoparts3), names(cooks), ""), col=2)
# 이상치가 있는 데이터만 추출
influential <- names(cooks)[(cooks > 4/nrow(autoparts3))]
autoparts3[rownames(autoparts3)%in%influential, ]
## fix_time a_speed b_speed separation s_separation rate_terms mpa
## 18867 82.0 0.505 1.789 181.3 718.8 91 30.5
## 19052 109.9 0.491 1.525 172.4 726.0 91 29.7
## 19084 82.2 0.742 1.470 165.6 726.8 90 26.4
## 19085 82.1 0.498 1.552 184.5 722.9 91 29.8
## 19086 82.0 0.500 1.552 184.5 722.9 91 29.6
## 19087 82.0 0.498 1.552 184.5 722.9 90 29.8
## 19240 82.3 0.747 1.599 165.5 723.1 91 72.7
## 19342 82.1 0.748 1.536 171.8 725.6 91 26.3
## 19343 82.1 0.498 1.582 233.5 679.1 90 29.8
## 19344 81.8 0.502 1.582 233.5 679.1 90 30.0
## 19345 81.8 0.505 1.582 233.5 679.1 91 30.1
## 19346 81.9 0.503 1.582 233.5 679.1 91 30.0
## 19347 95.7 0.647 1.582 233.5 679.1 91 72.0
## 19496 81.9 0.651 1.480 220.5 677.6 91 73.5
## 19497 82.1 0.724 2.006 172.2 727.6 92 73.5
## 19499 81.8 0.728 2.028 172.5 728.4 92 73.6
## 19526 82.2 0.723 1.483 170.6 723.2 91 26.8
## 19527 82.1 0.498 1.499 177.5 724.9 90 30.3
## 19528 82.0 0.503 1.499 177.5 724.9 91 30.2
## 19529 81.8 0.498 1.499 177.5 724.9 91 30.0
## 19669 82.0 0.718 1.526 171.4 724.9 91 27.0
## 19670 108.2 0.500 1.552 194.3 722.3 90 30.4
## 19671 108.2 0.494 1.552 194.3 722.3 91 30.2
## 19672 82.0 0.714 1.552 194.3 722.3 93 73.1
## 19803 82.0 0.720 1.554 174.0 723.3 91 26.9
## 19804 81.6 0.504 1.557 176.7 723.3 90 30.2
## 19897 97.3 0.741 1.546 171.0 723.3 90 26.8
## 19899 82.0 0.723 1.545 182.6 723.3 90 73.4
## 19900 82.1 0.717 1.561 171.0 722.6 91 26.9
## 19901 93.1 0.502 1.537 172.0 724.5 91 30.2
## 19995 109.8 0.735 1.477 177.4 725.5 91 73.8
## 20054 82.1 0.728 1.500 169.0 723.6 90 27.0
## 20055 82.1 0.499 1.513 176.5 722.4 90 30.5
## 20056 82.1 0.501 1.513 176.5 722.4 90 30.3
## 20057 82.1 0.497 1.513 176.5 722.4 90 30.3
## 20058 81.9 0.502 1.513 176.5 722.4 91 30.3
## 20187 82.1 0.723 1.543 169.9 722.4 90 27.1
## 20190 82.0 0.498 1.571 177.7 722.6 91 30.7
## 20191 102.9 0.495 1.571 177.7 722.6 91 30.6
## 20192 82.1 0.503 1.571 177.7 722.6 91 30.6
## 20193 82.1 0.502 1.571 177.7 722.6 90 30.4
## 20261 82.1 0.735 1.535 168.2 723.1 91 27.3
## 20262 67.6 0.502 1.499 195.2 722.8 90 30.9
## 20263 82.1 0.734 1.499 195.2 722.8 90 73.2
## 20370 77.1 0.742 1.533 170.1 723.5 90 27.3
## 20371 77.1 0.499 1.538 177.3 725.1 90 30.7
## 20374 82.1 0.730 1.528 174.2 722.9 91 27.2
## 20375 77.4 0.500 1.512 179.2 723.4 90 30.7
## 20376 95.2 0.500 1.512 179.2 723.4 91 30.9
## 20521 82.3 0.733 1.570 176.2 723.1 92 27.3
## 20522 91.5 0.498 1.581 182.6 721.1 92 30.6
## 20546 97.4 0.502 1.601 192.8 722.8 92 30.9
## 20547 82.2 0.735 1.601 192.8 722.8 93 74.3
## 20549 104.3 0.498 1.612 187.0 722.4 93 30.7
## 20551 82.2 0.742 1.610 176.4 721.4 93 27.3
## 20552 111.9 0.498 1.613 181.5 721.6 93 30.6
## 20560 82.1 0.727 1.635 177.7 721.2 93 27.3
## 20561 116.5 0.498 1.643 187.6 721.3 93 30.8
## 20585 82.3 0.741 1.632 177.0 721.5 93 27.3
## 20586 108.8 0.495 1.632 181.4 720.9 92 30.7
## 20617 110.2 0.495 1.598 179.7 722.6 93 30.7
## 20654 82.2 0.714 1.585 175.9 722.5 91 27.2
## 20655 107.7 0.494 1.579 199.1 720.9 92 30.5
## 20656 82.3 0.733 1.579 199.1 720.9 91 73.5
## 20685 82.0 0.733 1.583 176.5 721.5 92 27.2
## 20686 82.1 0.505 1.606 182.2 722.1 91 30.6
## 20687 81.9 0.494 1.606 182.2 722.1 91 30.8
## 20688 91.6 0.497 1.606 182.2 722.1 91 30.5
## 20728 82.2 0.736 1.600 176.1 721.1 92 27.1
## 20729 81.8 0.498 1.578 181.9 721.2 91 30.7
## 20730 104.2 0.498 1.578 181.9 721.2 92 30.5
## 20833 82.0 0.500 1.587 180.4 721.1 91 30.6
## 20900 82.1 0.723 1.586 178.3 721.3 90 27.2
## 20901 96.3 0.497 1.563 180.8 723.3 91 30.6
## 20981 81.9 0.718 1.513 174.6 723.1 89 27.2
## 20982 81.9 0.497 1.560 177.0 723.1 89 30.7
## 20983 99.4 0.500 1.560 177.0 723.1 88 30.7
## 20984 99.4 0.492 1.560 177.0 723.1 89 30.6
## 20993 81.8 0.649 1.575 217.1 683.5 90 75.3
## 21009 82.1 0.643 1.472 220.3 682.6 89 75.3
## 21010 82.0 0.731 2.227 177.2 726.1 89 75.5
## 21011 82.0 0.728 2.211 174.9 725.2 88 75.5
## 21017 81.9 0.642 1.566 218.1 683.8 88 75.2
## 21018 82.0 0.648 1.576 207.1 695.3 89 75.1
## 21019 82.0 0.647 1.578 208.9 693.9 88 75.1
## 21020 82.1 0.649 1.571 220.7 683.6 88 75.0
## 21021 83.1 0.649 1.571 214.9 687.4 88 75.8
## 21127 83.2 0.638 1.580 217.3 683.3 87 75.4
## 21128 83.2 0.649 1.477 219.3 681.9 87 75.4
## 21129 83.2 0.642 1.478 216.1 685.2 87 75.4
## 21130 83.0 0.648 1.484 221.2 681.6 86 75.3
## 21131 83.0 0.648 1.477 219.9 681.8 86 75.3
## 21132 83.1 0.645 1.483 214.0 687.1 86 75.4
## 21133 83.1 0.656 1.480 213.0 689.7 86 75.2
## 21134 83.2 0.644 1.473 220.3 681.5 87 75.3
## 21135 83.1 0.647 1.483 214.2 687.2 86 75.3
## 21136 83.1 0.648 1.485 219.6 681.6 86 75.2
## 21137 83.2 0.649 1.484 212.9 689.3 86 75.3
## 21138 83.2 0.658 1.481 215.4 683.2 86 75.3
## 21139 83.2 0.643 1.486 216.8 681.1 86 75.3
## 21140 83.2 0.643 1.488 216.3 681.1 86 75.2
## 21142 83.2 0.647 1.486 202.3 687.3 86 26.9
## 21147 83.1 0.499 1.743 187.1 711.6 85 30.5
## 21148 83.1 0.499 1.743 187.1 711.6 85 30.6
## 21149 81.1 0.502 1.743 187.1 711.6 85 30.4
## 21150 81.1 0.491 1.743 187.1 711.6 85 30.4
## 21151 83.2 0.499 1.743 187.1 711.6 85 30.6
## 21152 83.2 0.500 1.743 187.1 711.6 85 30.7
## 21153 83.1 0.498 1.743 187.1 711.6 85 30.5
## 21154 83.1 0.500 1.743 187.1 711.6 83 30.5
## 21155 83.2 0.500 1.743 187.1 711.6 84 30.6
## 21156 83.2 0.501 1.743 187.1 711.6 84 30.6
## 21157 67.2 0.498 1.743 187.1 711.6 85 30.4
## load_time highpressure_time c_thickness
## 18867 0.0 68 29.8
## 19052 21.7 68 31.5
## 19084 19.6 76 33.5
## 19085 19.6 76 33.5
## 19086 19.7 76 33.5
## 19087 19.6 76 34.1
## 19240 19.7 71 37.3
## 19342 19.7 101 28.5
## 19343 19.7 101 32.5
## 19344 19.7 101 30.0
## 19345 19.7 101 29.5
## 19346 19.7 101 29.6
## 19347 21.7 101 13.3
## 19496 19.7 69 27.8
## 19497 19.7 71 26.1
## 19499 19.7 71 25.0
## 19526 19.7 72 32.1
## 19527 19.7 72 32.3
## 19528 19.7 72 30.8
## 19529 21.8 72 29.0
## 19669 19.7 72 29.6
## 19670 19.7 72 30.7
## 19671 21.8 72 26.9
## 19672 19.7 72 9.3
## 19803 19.7 76 28.6
## 19804 21.8 76 28.7
## 19897 19.7 90 31.6
## 19899 19.7 90 20.0
## 19900 19.7 76 32.3
## 19901 21.8 76 31.0
## 19995 19.7 78 23.0
## 20054 19.7 77 33.3
## 20055 19.7 77 33.3
## 20056 19.7 77 32.5
## 20057 19.7 77 30.4
## 20058 21.8 77 33.4
## 20187 19.7 74 33.6
## 20190 19.7 74 33.6
## 20191 21.8 74 31.1
## 20192 19.7 74 32.3
## 20193 0.0 74 28.9
## 20261 19.7 80 34.6
## 20262 0.0 80 36.5
## 20263 19.7 80 7.9
## 20370 19.7 76 32.3
## 20371 0.0 76 32.6
## 20374 19.7 73 28.8
## 20375 0.0 73 28.7
## 20376 21.8 73 25.1
## 20521 19.8 74 26.6
## 20522 21.8 74 25.6
## 20546 21.8 81 26.9
## 20547 19.8 81 10.3
## 20549 21.8 78 27.3
## 20551 19.8 76 28.1
## 20552 21.8 76 26.3
## 20560 19.8 74 27.0
## 20561 21.8 74 29.2
## 20585 19.8 73 27.4
## 20586 21.8 73 27.3
## 20617 21.8 77 29.8
## 20654 19.8 77 27.5
## 20655 21.7 77 26.6
## 20656 19.8 77 5.9
## 20685 19.8 72 27.9
## 20686 19.8 72 29.5
## 20687 19.8 72 27.8
## 20688 21.8 72 27.1
## 20728 19.8 74 28.7
## 20729 19.8 74 29.8
## 20730 21.8 74 29.0
## 20833 21.7 71 27.1
## 20900 19.7 68 26.3
## 20901 21.7 68 25.5
## 20981 19.7 69 28.2
## 20982 19.8 69 31.1
## 20983 19.8 69 30.5
## 20984 21.8 69 26.0
## 20993 19.8 68 25.3
## 21009 19.7 67 23.0
## 21010 19.7 72 22.6
## 21011 19.8 76 25.8
## 21017 19.7 70 24.0
## 21018 19.7 67 23.5
## 21019 19.8 54 23.1
## 21020 20.7 49 21.6
## 21021 20.7 62 23.6
## 21127 20.7 62 25.3
## 21128 20.7 61 24.7
## 21129 20.7 61 24.6
## 21130 20.7 62 23.1
## 21131 20.7 63 24.2
## 21132 20.7 62 24.8
## 21133 20.7 60 23.2
## 21134 20.7 60 24.1
## 21135 20.7 59 24.5
## 21136 20.7 57 24.7
## 21137 20.7 61 23.7
## 21138 20.7 59 27.3
## 21139 20.7 53 28.0
## 21140 20.7 52 28.5
## 21142 20.7 73 36.3
## 21147 20.7 73 39.5
## 21148 20.7 73 38.8
## 21149 20.7 73 39.0
## 21150 0.0 73 40.6
## 21151 20.7 73 49.5
## 21152 20.7 73 48.6
## 21153 20.7 73 48.9
## 21154 20.7 73 49.1
## 21155 20.7 73 48.8
## 21156 20.7 73 47.5
## 21157 0.0 73 56.6
# 평균에서 가장 먼 값
# 단순히 반응변수만을 이용하여 이상치를 찾을 수도 있음
library(outliers)
outlier(autoparts3$c_thickness) # 56.6 평균에서 가장 멀리 떨어진 최대값
## [1] 56.6
outlier(autoparts3$c_thickness, opposite = TRUE) # 5.9 최소값
## [1] 5.9
# Local outlier Factor
# 밀도를 기반으로 하여 지역적 이상치를 식별하는 알고리즘
# 관측치의 밀도가 주변 밀도에 비해 훨씬 작다면(LOF 점수가 크다면) 이상치로 판정
# 주변 관측치들이 밀집도에 따라 이상치 여부가 달라짐(지역성 locality 반영)
# library(DMwR)
score <- lofactor(autoparts3, k=5) #lof를 구하는데 사용되는 주변값의 개수
plot(density(score))
plot(density(score), xlim=c(1,3))
top5 <- order(score, decreasing=TRUE)[1:5]
top5
## [1] 1216 2363 2378 568 461
# ARIMA 모형 이용
# 시계열 자료인 경우에는 ARIMA 모형을 사용해 이상치를 탐색해볼 수 있음
# ARIMA 모형은 시계열 자료 분석을 위한 AR 모형과 MA 모형을 통합한 것임
# library(tsoutliers)
# 시계열 포맷으로 변환
data.ts <- as.ts(autoparts3$c_thickness[1:500])
auto.ts <- tso(data.ts)
# ind 발견된 이상치
# 이상치 종류
# AO(Additive outlier) : 해당 관측값 수준에만 영향을 미치는 이상치
# LS(Level shift) : 시계열 수준 이동
# TC(Temporary change) : 일시적 변화를 일으키는 이상치
# IO(Innovative outlier) : 모든 관측점에 대해 영향을 미치는 이상치
# SLS(Seasonal Level shift) : 계절별로 수준이동을 일으키는 이상치
plot(auto.ts)
auto.ts # 붉은 점 이상치
## Series: data.ts
## Regression with ARIMA(1,0,1) errors
##
## Coefficients:
## ar1 ma1 intercept AO88 AO273 TC305 LS312 AO349
## 0.8784 -0.3856 27.3151 4.8535 5.1291 9.4894 -6.0545 5.5660
## s.e. 0.0355 0.0657 0.3096 0.9382 0.9350 1.0320 0.5265 0.9356
## AO416 AO461
## -4.3811 14.8656
## s.e. 0.9372 0.9350
##
## sigma^2 estimated as 1.146: log likelihood=-738.91
## AIC=1499.82 AICc=1500.36 BIC=1546.18
##
## Outliers:
## type ind time coefhat tstat
## 1 AO 88 88 4.854 5.173
## 2 AO 273 273 5.129 5.486
## 3 TC 305 305 9.489 9.195
## 4 LS 312 312 -6.055 -11.499
## 5 AO 349 349 5.566 5.949
## 6 AO 416 416 -4.381 -4.675
## 7 AO 461 461 14.866 15.899