시계열분석은 자료의 간격과 주기가 중요하기 때문에 결측값을 없애면 안됩니다.
이상값을 삭제하게 되면 모형의 예측력이 떨어집니다.
결측값 처리 방법은 크게 세가지로
1. 결측값 그대로 놔두기
2. 보정
3. 다른 값으로 대체하기 가 있습니다.
예제로 시계열 자료에서 결측값 처리방법을 살펴보겠습니다.
proc import datafile= "/oil.csv " out= ex1 dbms=csv replace;
getnames= yes;
run;
data ex1_sub;
set ex1;
newdate = date ;
format newdate date9.;
if newdate >= "01JAN2012"d ;
run;
data ex1_NA; /*NA생성 데이터 */
set ex1_sub;
if _N_=11 or _N_=15 then oil=.;
run;
ex1_sub 데이터 셋을 만들고 ex1_NA로 NA 생성 데이터 셋을 생성합니다.
11번째, 15번째 관측치에 oil value를 결측치로 생성하였습니다.
결측값 없이 원자료로 그린 자료입니다.
proc timeseries data=ex1 plots=series;
id date interval=month;
var oil;
run;
결측값이 있는 데이터를 그려보겠습니다.
proc timeseries data=ex1_NA plots=series;
id newdate interval=month;
var oil;
run;
위에서 작성한 코드로 11번째 데이터와 와 15 번째 자료가 결측치입니다.
[plot]
위의 plot은 2012.11.01자료와 2013.03.01자료가 빠진 plot 입니다.
결측값이 있는 위의 자료 ex1_NA로 결측값을 평균으로 대체한 코드입니다.
proc timeseries data=ex1_NA plots=series out= ex1_NA_new;
id newdate interval=month setmissing=mean;
var oil;
run;
setmissing 옵션은 timeseries에서 사용하는 옵션으로 결측치를 다른 방법으로 대체하는 옵션입니다.
결측치를 mean뿐 아니라 avg(average), min(minimum), med(median), max(maximum) 등을 사용할 수 있습니다.
다음은 보간법입니다.
보간법은 새로운 점을 만들기 위해 수많은 점들을 평균화 시키는 것 입니다.
사용할 보간법은 결측값을 결측값 바로 전 시간의 값으로 대체하는 방법으로 금융자료와 경제 자료에서 자주 사용됩니다.
proc expand data=ex1_NA plots=(converted)
out=ex1_ba from=month to=month;
id newdate;
convert oil=newoil / method=join;
run;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Early bird rate extended! Save $200 when you sign up by March 31.