基準となる平均と標準偏差を元に複数列のZスコアを計算する(SPSS Modeler データ加工逆引き3-29)

---
## 基準となる平均と標準偏差を元に複数列のZスコアを計算する
zスコアの計算例は[過去の記事](https://qiita.com/416nishimaki/items/af11bb87398da85f6caa)にもありますが、
zスコアを計算する際に基準となる平均と標準偏差を、異常値による影響を避けるために、例えば前日の値に固定したいようなことがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/2b5d5f7b-bb4e-2a68-2eee-b79a3cb1e0c5.png)


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

- 異なる尺度をもつフィールド（列）間の比較
- 特徴量への変換（予測アルゴリズムに応じて）
- 異常値の監視


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

ストリーム

https://github.com/hkwd/spsssample/raw/master/240906%E5%9F%BA%E6%BA%96%E3%81%A8%E3%81%AA%E3%82%8B%E5%B9%B3%E5%9D%87%E3%81%A8%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%82%92%E5%9F%BA%E3%81%AB%EF%BC%BA%E3%82%B9%E3%82%B3%E3%82%A2/240906%E5%9F%BA%E6%BA%96%E3%81%A8%E3%81%AA%E3%82%8B%E5%B9%B3%E5%9D%87%E3%81%A8%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%82%92%E5%9F%BA%E3%81%AB%EF%BC%BA%E3%82%B9%E3%82%B3%E3%82%A2.str

データ

https://github.com/hkwd/spsssample/raw/master/240906%E5%9F%BA%E6%BA%96%E3%81%A8%E3%81%AA%E3%82%8B%E5%B9%B3%E5%9D%87%E3%81%A8%E6%A8%99%E6%BA%96%E5%81%8F%E5%B7%AE%E3%82%92%E5%9F%BA%E3%81%AB%EF%BC%BA%E3%82%B9%E3%82%B3%E3%82%A2/01%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E5%B1%A5%E6%AD%B4%E6%B8%A9%E5%BA%A6.csv
## 3.サンプルストリームの説明

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/90f8e524-6317-3bc4-5c5a-8d5d2dfa671c.png)




a.入力するデータは以下の通りです。
タイムスタンプと`温度1`と`温度2`の列があります。
2023-04-01の平均値と標準偏差を基に`温度1`と`温度2`のzスコアを計算したいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/8c0d431c-0775-6851-642c-4bbc131567dc.png)


#### 2023-04-01の平均値と標準偏差をグローバル値として計算します

b.[条件抽出]ノードを編集します。

以下の式で「2023-04-01」のデータに絞り込みます。
```java:
datetime_date(TS)= "2023-04-01"
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/48e81a58-8964-75fe-1378-4ca175fa5185.png)


c.[グローバルの設定]ノードで`温度1`と`温度2`を選択し、「平均」と「標準偏差」を選びます。
値を上書きしないように念のために「実行前にすべてのグローバル値を消去」のチェックは外しておき、実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/7a92d0bb-3154-2955-975d-bf8fdbac95cb.png)

ストリームのプロパティの「グローバル」タブを見ると平均値と標準偏差が計算されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/d21b9317-87bf-4184-0bba-4bcc970e269a.png)

#### Zスコアに変換する

d.[フィールド作成]ノードを編集します。
「モード」を「複数」にします。
「フィールドリスト」に`温度1`と`温度2`を選択します。
「フィールド名拡張子」には「_zscore」を入れました。
そしてCLEM式に以下を入れます。`@FIELD`でグローバル値を参照しているので、複数列の計算が一度に行えます。
```java:
(@FIELD-@GLOBAL_MEAN(@FIELD))/@GLOBAL_SDEV(@FIELD)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/b83eac7b-ee5c-a08f-5450-b7ca557c8a83.png)


e.[テーブル]ノードで結果を見ます。
2023-04-01の平均値と標準偏差を基に`温度1`と`温度2`のzスコアが計算できています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223763/a0429589-a405-25a2-44d4-852dfcb0ebc2.png)



## 4.参考情報

#### 値をZスコアに標準化する(SPSS Modeler データ加工逆引き3-11) #SPSS_Modeler - Qiita 

https://qiita.com/416nishimaki/items/af11bb87398da85f6caa

#### SPSS ModelerでZスコアを扱った記事

https://www.ibm.com/support/pages/spss-modeler%E3%81%A7%E5%88%86%E6%9E%90%E3%81%99%E3%82%8B%E3%81%AB%E3%81%82%E3%81%9F%E3%81%A3%E3%81%A6%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92z%E5%BE%97%E7%82%B9%E3%82%92%E8%A8%88%E7%AE%97%E3%81%97%E3%81%A6%E3%80%81%E5%B7%AE%E3%81%97%E6%9B%BF%E3%81%88%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%E3%80%82

https://qiita.com/kawada2017/items/d2b54b54379d7faaf0e2


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

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

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

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