Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

scatter: 두 시계열의 대응 값과 회귀

foundryts.functions.scatter(
    start=None, end=None, before='NONE', internal='LINEAR',
    after='NONE', regression=None, regression_fit=None
)

정확히 두 숫자형 시계열을 받아 같은 시각의 값을 (x, y)로 정렬하는 함수를 반환합니다. 첫 시계열의 값이 x, 두 번째 시계열의 값이 y입니다. 시각이 일치하지 않으면 지정한 보간 전략으로 없는 값을 구합니다.

입력은 두 시계열을 담은 NodeCollection이며 결과는 SummarizerNode입니다. 결과 DataFrame의 각 행은 대응점 하나입니다.

인수

인수형식기본값과 의미
startint, datetime 또는 strNone. 시작 시각 포함. 기본 하한은 pandas.Timestamp.min
endint, datetime 또는 strNone. 종료 시각 제외. 기본 상한은 pandas.Timestamp.max
beforestr 또는 List[str]NONE. 첫 관측 이전의 보간
internalstr 또는 List[str]LINEAR. 관측 사이의 보간
afterstr 또는 List[str]NONE. 마지막 관측 이후의 보간
regression회귀 생성 함수의 반환값None. 회귀를 추가하지 않음

보간 전략은 interpolate의 내부 및 외부 전략을 사용합니다. 회귀 구성에는 regression 인수로 F.linear_regression(), F.polynomial_regression() 또는 F.exponential_regression()의 반환값을 전달합니다.

출력 스키마

열형식의미
is_truncatedbool사용 중단이 진행 중인 필드이며 무시해야 함
points.first_valuefloat첫 시계열의 값
points.second_valuefloat두 번째 시계열의 값
points.timestampdatetime대응 시각
regression.*회귀별 결과 형식회귀를 선택했을 때 추가되는 계수와 관련 필드

범주형 시계열에는 scatter를 적용하지 않습니다.

가상 입력과 보간

from foundryts import NodeCollection
import foundryts.functions as F

series_1 = F.points(
    (11, 21.0), (13, 23.0), (15, 25.0), (17, 27.0),
    name="series-1",
)
series_2 = F.points(
    (11, 21.0), (13, 23.0), (17, 37.0), (37, 47.0),
    name="series-2",
)
collection = NodeCollection(series_1, series_2)
scatter_result = F.scatter(
    before="NEAREST",
    internal="LINEAR",
    after="NEAREST",
)(collection)
scatter_df = scatter_result.to_pandas()

정수 시각은 나노초입니다. 시각 15의 두 번째 값은 23과 37 사이를 보간하여 30이 됩니다. 시각 37에서는 첫 시계열의 마지막 값 27을 사용합니다.

points.timestamppoints.first_valuepoints.second_value
1970-01-01 00:00:00.00000001121.021.0
1970-01-01 00:00:00.00000001323.023.0
1970-01-01 00:00:00.00000001525.030.0
1970-01-01 00:00:00.00000001727.037.0
1970-01-01 00:00:00.00000003727.047.0

가상 예제에서 is_truncated 값은 모두 False입니다.

두 값 사이의 선형 회귀

regression_result = F.scatter(
    before="NEAREST",
    internal="LINEAR",
    after="NEAREST",
    regression=F.linear_regression(),
)(collection)
regression_df = regression_result.to_pandas()

위와 같은 다섯 대응점에 회귀 결과가 추가됩니다. 여기서 x는 시간이 아닌 첫 시계열의 값입니다. 각 행에 공통으로 나타나는 회귀 필드는 다음과 같습니다.

필드가상 결과 값
regression.min_bounds.first_value21.0
regression.max_bounds.first_value27.0
regression.min_bounds.second_value21.0
regression.max_bounds.second_value47.0
regression.regression_fit_function.linear_regression_fit.intercept-59.926471
regression.regression_fit_function.linear_regression_fit.slope3.720588
regression.regression_fit_function.linear_regression_fit.statistics.rsquared0.827161

계수와 데이터 범위의 의미는 linear_regression에 설명되어 있습니다. 다항 회귀와 지수 회귀도 regression에 연결할 수 있습니다.