이상치




이상치 확인

# 데이터준비 
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사분위수 - 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

이상치 검출 2
# 잔차 계산 이용

# 회귀분석 후 예측값과 실제값의 차이인 잔차(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

이상치 검출 3
# 쿡의 거리

# 쿡의 거리는 회귀 직선의 모양에 크게 영향을 끼치는 점을 찾는 방법임
# 쿡의 거리는 레버리지(설명변수가 극단에 ㅣ우쳐 있는 정도)와 잔차(예측값과 실제값의 차이)에 비례함
# 이상치 : 쿡의 거리 > 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

이상치 검출 4
# 평균에서 가장 먼 값

# 단순히 반응변수만을 이용하여 이상치를 찾을 수도 있음
library(outliers)

outlier(autoparts3$c_thickness) # 56.6 평균에서 가장 멀리 떨어진 최대값
## [1] 56.6
outlier(autoparts3$c_thickness, opposite = TRUE) # 5.9 최소값
## [1] 5.9

이상치 검출 5
# 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

이상치 검출 6
# 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