コンテンツにスキップ

数値の平滑化

細かい上下動をならして、傾向を見やすくします。 日々の売上の変動を均して流れを見る、センサーのノイズを取る、といった使い方をします。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでは動きません。

行の数は変わりません。 対象列 1 つにつき 1 列増えます。

設定項目

処理対象列を選択
ならす列。数値の列だけ選べます。複数選べます。
処理対象列を結果から除外する
on にすると、元の列を消します。既定は off です。
平滑化手法を選択
単純移動平均(既定)/ 指数移動平均 / カルマンフィルタ。
ウィンドウ幅を設定必須
単純移動平均と指数移動平均のときだけ出ます。既定は 3。

オプション

特定の列で並べ替えてから実行する
on にすると、並べ替えの組が出ます。既定は off です。
対象列を選択
並べ替えに使う列。組はいくつでも足せます。
並べ替えタイプを選択
昇順(既定)か降順。

手法の違い

手法内容向いている場面
単純移動平均直近 n 行の平均まず試す(既定)
指数移動平均新しい値を重く見る直近の変化に早く追従したい
カルマンフィルタノイズを推定して取り除く観測にばらつきがある

指数移動平均の「ウィンドウ幅を設定」は、平均を取る行数ではなく重みの減り方を決める値です。 大きいほど過去を長く引きずります。

増える列の名前

元の列は書き換わりません。 手法ごとに決まった接頭語が付いた新しい列が増えます。

手法できる列
単純移動平均単純移動平均_<元の列名>
指数移動平均指数移動平均_<元の列名>
カルマンフィルタカルマンフィルタ_<元の列名>

同じ名前の列がすでにあるときは、末尾に _1 が付きます。 単純移動平均_売上 がすでにあれば 単純移動平均_売上_1 になります。元の列が上書きされることはありません。

行の並び順で決まる

今の行順で計算します。 時系列なら必ず日付順にしてください。特定の列で並べ替えてから実行するを使うか、先に行の並べ替えをつなぎます。

ウィンドウ幅の決め方

大きいほど滑らかになり、変化への反応が遅れます。 日次データで週の波を消したいなら 7、月の波なら 30 が目安です。

先頭の行も空欄にはなりません。 1 行目はその行だけの平均、2 行目は 2 行分の平均、というように、ウィンドウ幅に満たないあいだはある分だけで計算します。 そのため先頭のほうはならし方が弱くなります。

欠損値の扱い

欠損の行は欠損のまま残り、計算からも外れます。 欠損を飛ばして、値のある行だけを詰めてから平均を取ります。たとえばウィンドウ幅 3 で 5 行目が欠損のとき、6 行目は 3・4・6 行目の平均になります(5 行目は数えません)。

欠損を飛ばしたくないときは、先に欠損値処理で埋めてください。

エラーと対処

数値でないデータが含まれている

数値に見えても文字列型になっている列を選んだときに出ます。

処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。

直し方 — 数値の列だけを選ぶか、列の型変更で数値にしてください。

処理対象列を選んでいない

処理対象列を選択を空のまま実行したときに出ます。

対象の列が選択されていません。

直し方 — 処理対象列を選択で列を選んでください。

選んだ列が入力データにない

前のノードで列名を変えたり列を削ったりして、選んである列がなくなったときに出ます。

対象の列が存在しません。

直し方 — 列を選び直してください。

よく使う例

1. 日々の売上の流れを見る

曜日ごとの波が大きく、増えているのか減っているのかが読み取れないとき。

入力

日付売上
2024-04-01120
2024-04-0290
2024-04-03150
…(以降 90 日分)…

設定

設定項目値
処理対象列を選択売上
平滑化手法を選択単純移動平均
ウィンドウ幅を設定7
特定の列で並べ替えてから実行するon
対象列を選択日付
並べ替えタイプを選択昇順

出力 — 単純移動平均_売上 が増えます。1 行目は 120、2 行目は 105、3 行目は 120 というように、7 行たまるまでは少ない行数で計算されます。

2. 直近の変化を早く捉える

最近の動きを重く見たいので、古い値に引っ張られたくないとき。

入力 — 例 1 と同じ

設定

設定項目値
平滑化手法を選択指数移動平均
ウィンドウ幅を設定7

出力 — 指数移動平均_売上 が増えます。例 1 と同じ 3 行で比べると、こうなります。

日付売上単純移動平均_売上指数移動平均_売上
2024-04-01120120120
2024-04-0290105102.857
2024-04-03150120123.243

どちらも 1 行目は元の値そのままです。 2 行目以降は、指数移動平均のほうがその行の値(90 や 150)に近くなります。これが「新しい値を重く見る」の中身です。

3. ノイズの多い計測値をならす

センサーの値がばらつき、移動平均では遅れが気になるとき。

入力

計測時刻温度
10:00:0024.1
10:00:0123.6
10:00:0224.4

設定

設定項目値
処理対象列を選択温度
平滑化手法を選択カルマンフィルタ

出力 — カルマンフィルタ_温度 が増えます。ウィンドウ幅を設定は出ません。

4. ならす前と後をグラフで比べる

どのくらいならされたかを目で確かめたいとき。

入力 — 例 1 と同じ

設定

設定項目値
処理対象列を結果から除外するoff(既定)

出力 — 売上 と 単純移動平均_売上 が並ぶので、折れ線グラフで 2 本とも描けます。

5. 複数の列をまとめてならす

売上・客数・単価を同じ条件でならしたいとき。

入力

日付売上客数単価
2024-04-011201210
2024-04-0290910

設定

設定項目値
処理対象列を選択売上、客数、単価
平滑化手法を選択単純移動平均
ウィンドウ幅を設定7

出力 — 単純移動平均_売上 単純移動平均_客数 単純移動平均_単価 の 3 列が増えます。ウィンドウ幅は 3 列とも同じです。別々にしたいなら、このノードを分けてつなぎます。

関連