본문 바로가기

R/R을 이용한 데이터 처리&분석 실무

이상치

반응형

이상치(Outlier)는 주어진 회귀 모델에 의해 잘 설명되지 않는 데이터 점들을 뜻한다. 이상치 검출에서는 잔차, 특히 외면 스튜던트화 잔차(Externally Studentized Residual)를 사용한다.

 

외면 스튜던트화 잔차는 rstudent()를 사용해 구하며 이상치는 car::outlierTest()를 사용해 쉽게 구할 수 있다.

 

-rstudent : 외면 스튜던트화 잔차를 구한다.

rstuden(

    model        #lm또는 glm 함수가 반환한 모델 객체

)

 

-car::outlierTest : 본페로니(Bonferroni)이상값 검정을 수행한다.

car::outlierTest(

   model,          # lm또는 glm 객체

)

 

다음은 Orange 데이터에서 외면 스튜던트화 잔차를 계산하는 예다. corcumference를 age+age2으로 적합했다.

>data(Orange)
>m<-lm(circumference~age+I(age^2),data=Orange)
>rstudent(m)

          1           2                 3                 4                 5            6 
 0.19985287 -0.53303263 -0.17840851 -0.54325622 -1.31082205 -0.92292494 
          7           8                 9                10               11           12 
-1.72799370  0.33615199 -0.06394288  0.85316955  1.23124345  0.92915017 
         13          14                15             16               17          18 
 1.75080916  0.93486279  0.19985287 -0.83687327 -0.69447869 -0.84791970 
         19          20                 21             22                23          24 
-1.54276649 -1.05591062 -1.98782529  0.29066403 -0.36166980  0.89732592 
         25          26                27              28              29            30 
 1.75037512  1.24135751  2.05032759  1.45729711  0.19985287 -0.92493008 
         31          32                33             34               35 
-0.43504980 -0.11561888 -0.34906199  0.44471090 -0.23134075 

 

외면 스튜던트화 잔차는 t분포를 따르므로 t-test를 사용해 rstudent()값이 너무 크거나 작은 점을 찾으면 된다. 다행히 R에는 이를 간단하게 할 수 있는 라이브러리 car::outlierTest()가 있다.

 

Orange데이터에 이상치를 직접 추가하고, corcumference~age+I(age^2)의 포뮬러로 선형 회귀를 수행한 다음 outlierTest를 호출해 이상치를 찾아보자.

>data(Orange)
>Orange<-rbind(Orange,
              data.frame(Tree=as.factor(c(6,6,6)),
                         age=c(118,484,664),
                         circumference=c(177,50,30)))
>tail(Orange)

>install.packages("car")

>m<-lm(circumference~age+I(age^2), data=Orange)
>outlierTest(m)
      rstudent   unadjusted   p-value      Bonferonni     p
36   5.538438                    3.429e-06     0.0001303

 

보다시피 36번쨰 데이터에서 Bonferroni p가 0.05보다 작은 값이 나와 이상치로 검출되었다.

 

 

R을 이용한 데이터 처리&분석 실무 中

 

반응형

'R > R을 이용한 데이터 처리&분석 실무' 카테고리의 다른 글

데이터 탐색  (0) 2020.02.09
변수 선택  (0) 2020.02.08
중선형 회귀  (0) 2020.02.08
선형 회기-2  (0) 2020.02.07
선형 회귀-1  (0) 2020.02.06