不定期な記録の時間間隔を揃えて欠損値を補間する(SPSS Modeler データ加工逆引き5-18)

# 不定期な記録の時間間隔を揃えて欠損値を補間する（線形補間）

![スクリーンショット 2025-04-16 15.57.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/58c6eaa2-3e46-46eb-95a2-acf7f8a4763c.png)

*逆引き5-9では欠損のあるケースが限られている場合の処理を紹介しています。

https://qiita.com/416nishimaki/items/196b0ebacbf93ac62984

## 1.想定される利用目的

・予約数の推定
・設備IoTデータの欠損値の処理

## 2.サンプルストリームのダウンロード

https://github.com/yoichiro0903n/blue/raw/refs/heads/main/irregular_records.str

## 3.サンプルストリームの説明

![スクリーンショット 2025-04-16 16.24.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e46ef1a7-573e-4544-9ddb-e65f06c72489.png)


a1.入力するデータの１つ目です。データの記録時間がまちまちです。

![スクリーンショット 2025-04-16 12.09.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/715333f7-3379-417e-bf2d-246c48db48d0.png)

a2.入力するデータの２つ目です。aの記録開始時間から、本来観測するべき粒度（ここでは分）のデータを生成しています。
![スクリーンショット 2025-04-16 12.09.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/641ed26d-b6a8-4ea6-8a7a-48d01c37ef69.png)

#### 線形補間のイメージ

b.[時系列グラフ]ノードを実行します。[時系列グラフ]は不定期な情報でも線形補間表示します。
今回はこの線で示した欠損区間を改めて作成することでモデル作成などに役立てます。

![スクリーンショット 2025-04-16 12.10.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7a02e9bd-10c4-4c60-9904-a3bb394fac9c.png)

#### 推定データ作成のための準備

c.[フィールド作成]ノードを編集します。1行上の人数との差を求めるため列方向に参照するオフセット関数を利用します。[@&#xFFF0;OFFSET(フィールド,1)]でフィールドの値の1行上を参照します。

![スクリーンショット 2025-04-16 12.10.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/9393bb44-4d80-47ff-baf3-83cee7ad7319.png)

[プレビュー]します。

![スクリーンショット 2025-04-16 12.12.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/61f77446-87ab-4572-b5db-6382d80dba60.png)

d.[フィールド作成]ノードを編集します。1行上から何分経過しているか差分を求めます。

![スクリーンショット 2025-04-16 12.10.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/eb4b7312-1c02-46b4-8433-ffb24107fc9b.png)

[プレビュー]します。

![スクリーンショット 2025-04-16 12.13.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/59911729-3b33-4f58-9742-81557b8b2d71.png)

e.[フィールド作成]ノードを編集します。1分あたりに何人増えたのかを求めます。

![スクリーンショット 2025-04-16 12.11.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/3c41edfb-5465-41f0-b0e8-927faef90a8f.png)

[プレビュー]します。

![スクリーンショット 2025-04-16 12.13.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7811ad2c-bb0e-4ea7-baee-f2b38d56672b.png)

f.[フィールド作成]ノードを編集します。後続の計算のために、eの値を1レコード繰り上げます。

![スクリーンショット 2025-04-16 12.13.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/df46c404-a36e-4988-9130-ff11d7d57a7f.png)

[プレビュー]します。

![スクリーンショット 2025-04-16 16.35.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/e002e627-dd6f-4c3a-a9c8-0b3bf3977e1b.png)


#### 本来の時間間隔のデータに実績のあるレコードを結合

g.[レコード集計]ノードを編集します。

![スクリーンショット 2025-04-16 12.16.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/29c6fddb-4cea-4e88-a119-e4f1a3f73f98.png)

h.[ソート]ノードを編集します。

![スクリーンショット 2025-04-16 12.15.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/8cb1a1ef-262d-47f4-9d17-cbcbda18aeb7.png)

[プレビュー]します。

![スクリーンショット 2025-04-16 12.16.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/4215b5a8-7704-459d-a3d7-6d6a15157ad4.png)

#### 欠損値を線形に補間します。

i.[フィールド作成]ノードを編集します。欠損区間にインデックスを割り当てます。

![スクリーンショット 2025-04-16 12.16.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/bcbae969-88b8-42a3-8126-9221ead2b82b.png)

j.[フィールド作成]ノードを編集します。欠損が始まる直前に記した単位時間あたりの増加量をインデックスにかけ算して累積します。

![スクリーンショット 2025-04-16 12.17.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/7a2b5fcc-789f-4cf2-9744-c24c8c41040d.png)

k.[時系列グラフ]ノードを実行します。その後の伸びをイメージしやすいように少し後続期間を設けてデータが作られています。

![スクリーンショット 2025-04-16 12.18.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cf876f28-e0ac-40c1-8a7b-87009623c793.png)

[テーブル]ノードを実行します。

![スクリーンショット 2025-04-16 12.17.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/286322/cc2d127c-32d5-4aef-9597-8d540467ca03.png)


#### 注意点

今回はタイムスタンプを利用しましたが、時間の間隔は目的に応じて設定します。場合によっては値をあらかじめ集約する必要があります。

## 4.参考情報

#### 時系列の欠損値を線形補間する

https://qiita.com/416nishimaki/items/196b0ebacbf93ac62984

#### SPSS Modeler ノードリファレンス目次

https://qiita.com/416nishimaki/private/503037195081d3323eee

#### SPSS Modeler 逆引きストリーム集（データ加工）

https://qiita.com/416nishimaki/private/4bf813e6cba84b2a1008