1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SPSS Modelerで欠損したタイムスタンプのレコードを補間する。取得できなかったセンサーデータの補間

Last updated at Posted at 2022-04-27

欠損したタイムスタンプのレコードを補間

秒ごとに記録された時系列データで、ある秒のレコードが抜けていることがあります。
例えば毎秒の温度センサーデータで、ある秒のセンサーが取得できなかったのでレコード自体が存在しないような場合で、以下の左のデータでは2021-12-31 23:59:59のセンサー情報が取得できなかったのでレコード自体が存在していません。これを右のデータのように2021-12-31 23:59:59で前後のデータから温度を線形補間したレコードを補間したいと思います。

image.png

この記事ではこのようにレコード自体が存在しない時系列データのレコードをSPSS ModelerのR拡張ノードを使って、補間していきます。

■サンプルストリーム

■テスト環境
Modeler 18.3
R 4.0.5
Windows 10 64bit

Rの連携のセットアップが必要です。
SPSS Modelerの拡張ノードでRを利用する
https://qiita.com/kawada2017/items/0bb68e0b577e02bb8c6a

まず補間の範囲を決めます。ここでは「レコード集計ノード」をつかって、データの最小タイムスタンプと最大タイムスタンプを求めています。
image.png

以下のようなデータが返ります。
image.png

次に「拡張の変換ノード」を接続し、以下のRスクリプトを入力します。
image.png

タイムスタンプレコード補間.r
startTS=modelerData[,1]
endTS=modelerData[,2]
modelerData<-cbind(data.frame(seq(startTS,endTS,by="sec")))

#メタデータ設定
modelerDataModel<-data.frame(X1=c(fieldName='TS',fieldLabel="",fieldStorage="timestamp",fieldMeasure="",fieldFormat="",fieldRole=""))

少し解説をします。
以下で、Modelerの1列目と2列目のデータを開始タイムスタンプ、終了タイムスタンプとして取得しています。

startTS=modelerData[,1]
endTS=modelerData[,2]

以下のseq(startTS,endTS,by="sec")でstartTSからendTSまでの秒ごとのタイムスタンプデータを生成しています。

modelerData<-cbind(data.frame(seq(startTS,endTS,by="sec")))

最後にModelerに戻すデータの列名やデータ型を指定しています。

#メタデータ設定
modelerDataModel<-modelerDataModel<-data.frame(X1=c(fieldName='TS',fieldLabel="",fieldStorage="timestamp",fieldMeasure="",fieldFormat="",fieldRole=""))

プレビューすると開始タイムスタンプと終了タイムスタンプの間のタイムスタンプデータが生成されていて、元データでは欠損していた2021-12-31 23:59:59のデータも生成されていることがわかります。

image.png

これを元データと外部結合します。
image.png

以下のように欠損していた2021-12-31 23:59:59のデータが売上がNULLで補間できました。
image.png

後は「ストリーミング時系列ノード」で線形補間を行えば完成です。「ストリーミング時系列ノード」についての詳しい情報は参考情報を参照してください。

image.png

センサーデータが存在しなかった2021-12-31 23:59:59のレコードが補間できました。
image.png

参考情報

  • Rで連続する秒などのタイムスタンプのベクトルを作る - Qiita
    • Rのseq関数はタイムスタンプ以外にも年月日時分秒または週毎の補間も可能です。

  • SPSS Modelerで欠損した日付のレコードを補間する。売上がない日のデータ補間 - Qiita
    • 欠損した日付の補間についての記事です。

  • Modelerデータ加工Tips#03-欠損値に直前の値を代入または線形補間する | IBM ソリューション ブログ
    • 今回は線形補間しましたが、平均など様々な補間方法を紹介しています。

  • SPSS Modeler ノードリファレンス 2-10 ストリーミング時系列分析 - Qiita
    • ストリーミング時系列の使い方です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?