integral: 시계열의 누적 적분
foundryts.functions.integral(method='LINEAR')는 숫자형 시계열 하나를 시간에 따라 누적 적분하는 함수를 반환합니다. 각 관측 시각까지의 구간 넓이를 더하며 시간 간격은 초 단위로 계산합니다. 입력과 출력은 FunctionNode입니다.
적분 방법
method는 String이며 다음 값 중 하나를 사용합니다.
| method | 계산 방법과 특성 |
|---|---|
| LHS | 구간 시작값으로 넓이를 계산하는 왼쪽 합. 증가하는 구간에서는 작게, 감소하는 구간에서는 크게 추정하는 경향이 있음. 초기 값이 구간을 대표하는 모델에 사용 |
| RHS | 구간 끝값으로 계산하는 오른쪽 합. 증가하는 구간에서는 크게, 감소하는 구간에서는 작게 추정하는 경향이 있음. 최근 값이 구간을 대표하는 모델에 사용 |
| LINEAR | 기본값. 양끝 값을 평균한 사다리꼴 넓이로 계산하여 두 시점의 값을 함께 반영 |
LHS와 RHS는 리만 합으로 구간 넓이를 추정합니다. LINEAR는 구간 내 선형 변화를 가정하는 사다리꼴 적분입니다. 범주형 시계열에는 적용하지 않습니다.
가상 관측 예제
import foundryts.functions as F
series = F.points(
(1000, 1.0),
(3000, 3.0),
(5000, 0.0),
(6000, 5.0),
(8000, -7.0),
name="series",
)
linear_integral = F.integral(method="LINEAR")(series)
lhs_integral = F.integral(method="LHS")(series)
rhs_integral = F.integral(method="RHS")(series)
linear_df = linear_integral.to_pandas()
시각은 나노초이므로 첫 구간의 길이는 2마이크로초입니다. LINEAR의 첫 누적값은 평균값 2에 0.000002초를 곱한 0.000004입니다. 필요한 다른 방법의 노드도 같은 방식으로 평가할 수 있습니다.
| timestamp | 입력 값 | LINEAR | LHS | RHS |
|---|---|---|---|---|
| 1970-01-01 00:00:00.000001 | 1.0 | 0.0 | 0.0 | 0.0 |
| 1970-01-01 00:00:00.000003 | 3.0 | 0.000004 | 0.000002 | 0.000006 |
| 1970-01-01 00:00:00.000005 | 0.0 | 0.000007 | 0.000008 | 0.000006 |
| 1970-01-01 00:00:00.000006 | 5.0 | 0.0000095 | 0.000008 | 0.000011 |
| 1970-01-01 00:00:00.000008 | -7.0 | 0.0000075 | 0.000018 | -0.000003 |
첫 관측에는 아직 적분할 시간 구간이 없어 누적값이 0입니다. 각 출력 DataFrame은 pandas.Timestamp 형식의 timestamp와 float 형식의 value를 가집니다. 초당 값의 변화율을 구하려면 derivative를 사용합니다.