콘텐츠로 이동

hossam.my_ts

hossam.my_ts

set_index

set_index(data, column, freq=None, sort=True)

날짜 컬럼을 인덱스로 지정하고 관측 간격을 명시한다.

Parameters:

Name Type Description Default
data DataFrame

날짜 컬럼을 포함하는 데이터프레임.

required
column str

인덱스로 사용할 날짜 컬럼명.

required
freq str

관측 간격 (예: "MS", "D", "W"). None이면 지정하지 않음 (기본값: None).

None
sort bool

인덱스를 오름차순으로 정렬할지 여부 (기본값: True).

True

Returns:

Name Type Description
DataFrame

날짜 인덱스가 설정된 데이터프레임.

report_split

report_split(data, column=None, size=3)

시계열을 여러 구간으로 잘라 구간별 평균·표준편차·변동계수를 비교한다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
size int

나눌 구간의 개수 (기본값: 3).

3

Returns:

Name Type Description
DataFrame

구간별 시작·종료·관측치 수·평균·표준편차·변동계수.

report_variation

report_variation(data, column=None, freq='YE')

기간 단위로 묶어 변동폭이 수준에 비례해 커지는지 확인한다.

표준편차는 커지는데 변동계수(표준편차/평균)가 일정하면 변동폭이 수준에 비례한다는 뜻이다. 이 경우 로그변환이 필요하다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
freq str

묶을 기간 단위 (기본값: "YE"). YE → 연말 기준 1년씩 / QE → 분기씩 / ME → 월말 기준 한 달씩, WE → 주말 기준 1주일씩 / D → 하루씩

'YE'

Returns:

Name Type Description
DataFrame

기간별 평균·표준편차·변동계수.

adf_test

adf_test(data, column=None, name=None, alpha=0.05)

시계열 하나의 정상성을 ADF 검정으로 판정한다.

여러 대상을 비교하는 adf_diff · adf_transform 도 이 함수를 반복 호출한다. 반환값이 가로 1행 표이므로 concat() 으로 이어 붙이면 그대로 여러 행이 된다.

Parameters:

Name Type Description Default
data DataFrame | Series

검정할 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
name str

결과표에 표시할 행 이름 (기본값: None). 생략하면 컬럼명 → Series의 이름 → "시계열" 순으로 찾아 쓴다.

None
alpha float

유의수준 (기본값: 0.05).

0.05

Returns:

Name Type Description
DataFrame

대상을 인덱스로 하는 가로 1행 ADF 검정 결과표.

transform

transform(
    data,
    column=None,
    log=False,
    diff=0,
    seasonal_diff=0,
    period=None,
)

로그변환 · 일반차분 · 계절차분을 순서대로 적용한다.

Parameters:

Name Type Description Default
data DataFrame | Series

변환할 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
log bool

로그변환 적용 여부 (기본값: False).

False
diff int

일반차분 횟수. ARIMA의 d에 해당 (기본값: 0).

0
seasonal_diff int

계절차분 횟수. ARIMA의 D에 해당 (기본값: 0).

0
period int

계절 주기. seasonal_diff가 1 이상이면 반드시 지정 (기본값: None).

None

Returns:

Name Type Description
Series

변환이 완료된 시계열. 차분으로 생긴 결측치는 제거된다.

adf_diff

adf_diff(data, column=None, max_diff=-1, alpha=0.05)

차분 차수를 늘려가며 ADF 검정을 수행하고 과대차분 여부를 판정한다.

표준편차가 최소가 되는 차수를 넘기면 데이터에 없던 노이즈를 만들어낸다. p-value를 낮추는 것이 목적이 아니라 필요한 만큼만 차분하는 것이 목적이다.

Parameters:

Name Type Description Default
data DataFrame | Series

검정할 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
max_diff int

최대 차분 횟수. -1이면 표준편차가 다시 커지는 지점, 즉 과대차분이 시작되는 곳에서 스스로 멈춘다 (기본값: -1).

-1
alpha float

유의수준 (기본값: 0.05).

0.05

Returns:

Name Type Description
DataFrame

차수별 ADF 검정 결과와 권장 표시.

adf_transform

adf_transform(
    data,
    column=None,
    period=None,
    max_diff=2,
    log=True,
    alpha=0.05,
)

로그변환 · 일반차분 · 계절차분의 조합을 만들어 전부 ADF 검정한다.

정상성을 만족하는 조합 중 표준편차가 가장 작은 것이 맨 위에 온다.

Parameters:

Name Type Description Default
data DataFrame | Series

검정할 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
period int

계절 주기. None이면 계절차분 조합을 만들지 않음 (기본값: None).

None
max_diff int

조합에 포함할 최대 일반차분 횟수 (기본값: 2).

2
log bool

로그변환 조합을 포함할지 여부 (기본값: True).

True
alpha float

유의수준 (기본값: 0.05).

0.05

Returns:

Name Type Description
Series

권장 조합을 적용해 변환이 끝난 시계열. 조합 이름이 Series의 이름으로 붙는다. 조합별 검정 결과표는 함수 안에서 화면에 출력한다.

plot_rolling

plot_rolling(
    data,
    window,
    column=None,
    title=None,
    xlabel=None,
    ylabel=None,
    width=1280,
    height=480,
    save_path=None,
)

원본과 이동평균·이동표준편차를 한 그래프에 그려 정상성을 눈으로 확인한다.

정상 시계열이라면 이동평균과 이동표준편차가 모두 수평선에 가까워야 한다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
window int

이동 계산에 사용할 창 크기. 계절 주기로 잡는다.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
title str

그래프 제목 (기본값: None).

None
xlabel str

x축 레이블 (기본값: None).

None
ylabel str

y축 레이블 (기본값: None).

None
width int

캔버스 가로 픽셀 (기본값: 1280).

1280
height int

캔버스 세로 픽셀 (기본값: 480).

480
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

원본·이동평균·이동표준편차.

compare_smoothing

compare_smoothing(
    data,
    sizes,
    column=None,
    method="ma",
    overlay=False,
    plot=True,
    title=None,
    xlabel=None,
    ylabel=None,
    width=960,
    height=400,
    save_path=None,
)

창 크기(또는 span)를 바꿔가며 평활 결과를 비교한다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
sizes list | tuple

비교할 창 크기(또는 span) 목록.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
method str

"ma"(이동평균) · "ewm"(지수평활) · "both"(둘 다) (기본값: "ma").

'ma'
overlay bool

True면 한 축에 겹쳐 그리고, False면 격자에 나눠 그린다 (기본값: False).

False
plot bool

그래프를 그릴지 여부 (기본값: True).

True
title str

그래프 제목 (기본값: None).

None
xlabel str

x축 레이블 (기본값: None).

None
ylabel str

y축 레이블 (기본값: None).

None
width int

캔버스 가로 픽셀 (기본값: 960).

960
height int

캔버스 세로 픽셀 (기본값: 400).

400
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

원본과 평활 결과.

decompose

decompose(
    data,
    period,
    column=None,
    model=None,
    plot=True,
    title=None,
    rows=2,
    cols=2,
    width=960,
    height=480,
    save_path=None,
)

시계열을 추세 · 계절 · 잔차 세 성분으로 분해한다.

분해는 차분하기 전의 원본으로 수행한다. 차분은 추세와 계절성을 지우는 작업인데 분해는 그 추세와 계절성을 보려는 것이기 때문이다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
period int

계절 주기.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
model str

"additive" 또는 "multiplicative". None이면 자동 판정 (기본값: None).

None
plot bool

성분별 그래프를 그릴지 여부 (기본값: True).

True
title str

그래프 제목 (기본값: None).

None
rows int

격자 행 수 (기본값: 2).

2
cols int

격자 열 수 (기본값: 2).

2
width int

캔버스 가로 픽셀 (기본값: 960).

960
height int

한 단의 세로 픽셀 (기본값: 480).

480
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

원본·추세·계절·잔차 네 성분.

report_seasonal

report_seasonal(
    data,
    period,
    column=None,
    model=None,
    plot=True,
    title=None,
    xlabel=None,
    ylabel=None,
    width=1000,
    height=400,
    save_path=None,
)

계절 성분을 주기 안의 위치별로 정리해 계절지수표를 만든다.

승법 모델의 계절지수는 배수로 읽는다. 1.227은 추세선보다 22.7% 높다는 뜻이다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
period int

계절 주기.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
model str

"additive" 또는 "multiplicative". None이면 자동 판정 (기본값: None).

None
plot bool

계절지수 그래프를 그릴지 여부 (기본값: True).

True
title str

그래프 제목 (기본값: None).

None
xlabel str

x축 레이블 (기본값: None).

None
ylabel str

y축 레이블 (기본값: None).

None
width int

캔버스 가로 픽셀 (기본값: 1000).

1000
height int

캔버스 세로 픽셀 (기본값: 400).

400
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

주기 내 위치(1~period)를 인덱스로 하는 계절지수표.

adjust_seasonal

adjust_seasonal(
    data,
    period,
    column=None,
    model=None,
    plot=True,
    title=None,
    xlabel=None,
    ylabel=None,
    width=1280,
    height=480,
    save_path=None,
)

원본에서 계절 성분을 걷어내 계절조정 시계열을 만든다.

계절조정 결과에서 갑자기 튀는 지점은 계절성으로 설명되지 않는 사건이 있었다는 뜻이다.

Parameters:

Name Type Description Default
data DataFrame | Series

날짜 인덱스를 가진 시계열 데이터.

required
period int

계절 주기.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
model str

"additive" 또는 "multiplicative". None이면 자동 판정 (기본값: None).

None
plot bool

원본과 겹쳐 그릴지 여부 (기본값: True).

True
title str

그래프 제목 (기본값: None).

None
xlabel str

x축 레이블 (기본값: None).

None
ylabel str

y축 레이블 (기본값: None).

None
width int

캔버스 가로 픽셀 (기본값: 1280).

1280
height int

캔버스 세로 픽셀 (기본값: 480).

480
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
Series

계절 요인이 제거된 시계열.

auto_correlation

auto_correlation(
    data,
    column=None,
    period=None,
    plot=True,
    rows=2,
    cols=1,
    width=1280,
    height=380,
    title=None,
    save_path=None,
)

ACF와 PACF를 한 번에 계산해 유의성과 차수 후보(p·q·P·Q)를 판정한다.

Parameters:

Name Type Description Default
data DataFrame | Series

정상성을 만족하는 시계열 데이터.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
period int

계절 주기. None이면 계절 차수를 판정하지 않음 (기본값: None).

None
plot bool

ACF·PACF 그래프를 그릴지 여부 (기본값: True).

True
rows int

그래프 격자의 행 수 (기본값: 2).

2
cols int

그래프 격자의 열 수 (기본값: 1).

1
width int

캔버스 가로 픽셀 (기본값: 1280).

1280
height int

한 칸의 세로 픽셀 (기본값: 380).

380
title str

그래프 제목 (기본값: None).

None
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

lag별 acf·pacf·유의성과 차수 위치 표시. 가장 뒤쪽 차수의 lag까지만 잘라서 반환하며, 차수가 모두 0이면 근거를 볼 수 있도록 전체를 반환한다.

fit_model

fit_model(
    data,
    column=None,
    p=1,
    d=1,
    q=1,
    P=1,
    D=1,
    Q=1,
    s=None,
    log=False,
    search_diff=False,
    report=True,
    summary=False,
)

차수 범위 안의 모든 SARIMA 조합을 적합해 AIC가 가장 낮은 모형을 고른다.

Parameters:

Name Type Description Default
data DataFrame | Series

차분하지 않은 원본 시계열.

required
column str

data가 데이터프레임인 경우 대상 컬럼명 (기본값: None).

None
p int

비계절 AR 차수의 상한 (기본값: 1).

1
d int

일반 차분 횟수 (기본값: 1).

1
q int

비계절 MA 차수의 상한 (기본값: 1).

1
P int

계절 AR 차수의 상한 (기본값: 1).

1
D int

계절 차분 횟수 (기본값: 1).

1
Q int

계절 MA 차수의 상한 (기본값: 1).

1
s int

계절 주기. None이면 계절 성분을 쓰지 않음 (기본값: None).

None
log bool

로그를 씌워 적합할지 여부 (기본값: False).

False
search_diff bool

d·D도 0부터 탐색할지 여부 (기본값: False).

False
report bool

조합별 AIC·BIC 결과표 출력 여부 (기본값: True).

True
summary bool

선택된 모형의 요약 통계량 출력 여부 (기본값: False).

False

Returns:

Type Description

선택된 차수로 적합한 SARIMAX 결과 객체. 탐색 결과표가 grid_, 로그변환 여부가 log_ 속성으로 붙는다.

predict

predict(
    fit,
    steps,
    alpha=0.05,
    plot=True,
    history=None,
    title=None,
    xlabel=None,
    ylabel=None,
    width=1280,
    height=520,
    save_path=None,
)

적합된 SARIMA 모형으로 관측 구간 다음의 예측값과 예측구간을 계산한다.

Parameters:

Name Type Description Default
fit

fit_model 함수로 적합된 SARIMAX 결과 객체.

required
steps int

내다볼 시점의 개수. 계절 주기를 넣으면 한 시즌이 된다.

required
alpha float

예측구간의 유의수준. 0.05면 95% 구간 (기본값: 0.05).

0.05
plot bool

관측값과 예측 결과를 그래프로 그릴지 여부 (기본값: True).

True
history int

그래프에 함께 그릴 최근 관측치 수. None이면 전체 (기본값: None).

None
title str

그래프 제목 (기본값: None).

None
xlabel str

x축 레이블 (기본값: None).

None
ylabel str

y축 레이블 (기본값: None).

None
width int

캔버스 가로 픽셀 (기본값: 1280).

1280
height int

캔버스 세로 픽셀 (기본값: 520).

520
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

미래 시점을 인덱스로 하는 예측 표 (pred · lower · upper).

report_residual

report_residual(
    fit,
    alpha=0.05,
    report=True,
    plot=True,
    title=None,
    xlabel=None,
    ylabel=None,
    width=800,
    height=480,
    save_path=None,
)

적합된 시계열 모형의 잔차가 세 가지 가정을 만족하는지 한 표로 점검한다.

잔차에 패턴이 남아 있으면 모형이 아직 뽑아내지 못한 정보가 있다는 뜻이고, 정규성·등분산성이 깨지면 예측구간의 폭을 그대로 믿을 수 없게 된다.

Parameters:

Name Type Description Default
fit

적합된 시계열 모형 결과 객체.

required
alpha float

유의수준 (기본값: 0.05).

0.05
report bool

종합 판정 문장 출력 여부 (기본값: True).

True
plot bool

잔차의 흐름과 분포를 그래프로 그릴지 여부 (기본값: True).

True
title str

그래프 전체 제목 (기본값: None).

None
xlabel str

잔차 흐름 그래프의 x축 레이블 (기본값: None).

None
ylabel str

잔차 흐름 그래프의 y축 레이블 (기본값: None).

None
width int

캔버스 한 칸의 가로 픽셀 (기본값: 800).

800
height int

캔버스 세로 픽셀 (기본값: 480).

480
save_path str

이미지 저장 경로 (기본값: None).

None

Returns:

Name Type Description
DataFrame

검정명을 인덱스로 하는 잔차 진단 결과표.

report_score

report_score(fit, name='적합값', report=True)

모형의 예측값과 기준선(나이브)의 오차를 원래 단위에서 나란히 비교한다.

성능 지표는 혼자 보면 잘한 것인지 알 수 없다. "작년 같은 달과 똑같을 것이다" 수준의 기준선을 함께 계산해 비교 대상으로 삼는다.

Parameters:

Name Type Description Default
fit

적합된 시계열 모형 결과 객체.

required
name str

결과표에 표시할 모형 행 이름 (기본값: "적합값").

'적합값'
report bool

평가 구간과 기준선 대비 개선폭 출력 여부 (기본값: True).

True

Returns:

Name Type Description
DataFrame

대상을 인덱스로 하는 성능 지표표 (MAE · RMSE · MAPE).