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 결과 객체.
탐색 결과표가 |
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
|
|
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). |