SPSS Modeler ヒモトク

Modelerデータ加工Tips#08-7日後と6ヵ月後の日付データを作成する

記事をシェアする:

みなさん、こんにちはABTマーケティング株式会社の白岩です。

弊社は、株式会社オートバックスセブンとCCCマーケティング株式会社の2社の共同出資で設立されたマーケティング会社です。オートバックスとTポイントの情報を融合させたデータを使うことでカーライフを軸としたドライバーの分析や、コミュニケーション施策を実現しています。例えば、データから見える傾向と顧客のニーズをくみ取り、より実効性の高いマーケティング業務へ活用・展開を行っています。

SPSS Modelerはデータ活用の際に、柔軟にデータハンドリングしてくれるため欠かせない分析ツールです。処理手順の解釈が容易なため、共通言語としてストリームを共有しチームでスピード感をもって業務をすすめています。

今回のTipsのテーマは、日付データを扱った処理方法です。最適なオイル交換のタイミングやワイパー等、メンテナンスの交換タイミングは、クルマの利用状態により異なります。当然、車検の時期も異なり、データを使って顧客に向けた最適な提案を行うには、日付データの処理が重要になります。車両の状態と利用状況を分析して、その顧客、車両に合わせた、望ましいメンテナンスのご案内を行う場合、未来年月までの月数計算や自動化を行うときに今回の処理方法は役立ちます。今回のTipsでは、そういった日付データを扱うときの知っていると便利な方法を紹介いたします。

 

SPSS Modelerと基準日

SPSS Modelerはdate_days_differenceで2つの日付の差を求めることはできますが、起算日にN日加算するADD_DAYSのような関数が存在しません。そこで一旦1900年1月1日を基準日として、そこから起算日が何秒離れているかを求め、必要な日数を秒で加えます。
例えば、2021-05-14の翌日を求める場合にはdatetime_in_seconds(起算日)で3829939200を求め、1日分の秒数86400(=60*60*24)を加えて、またdatetime_dateで基準日に照らして日付に戻します。

 

ちなみに、基準日の初期設定はストリームのプロパティで変更することができます。

 

日付の関数はこちらの記事に整理されています。

https://qiita.com/Makimaki2020/items/72e3b774039327fa4ac4

 

例題1:7日後の日付を作成する

最初の例題です。起算日の7日後を求めます。

 

投了図はこちらです。フィールド作成ノードの1手詰めです。

 

可変長ファイルノードに以下の対象データを読み込みプレビューます。

https://raw.githubusercontent.com/yoichiro0903n/blue/main/data2.csv

(リンクを右クリックして「リンク先を保存」またはブラウザで開いてからページを保存します)

 

フィールド作成ノードは、2通り例を用意しました。まずは、基準日を軸に全て秒で処理する場合です。起算日を基準日にしてから、秒・分・時間の60*60*24の7日分を加え、datetime_dateで日付に戻しています。

 

次に、datetime_in_secondsをdate_in_daysで置き換えたバージョンです。最終的には秒のシリアル値で計算しますので本質的には先と同じ処理です。

 

例題2:6ヵ月後の日付を作成する

手強いとあらかじめお伝えしたNヵ月後です。

 

例題1と同様1手詰めです。フィールド作成ノードを使います

 

この処理には、

  • 年をまたぐ
  • 月末が31日ではない日がある
  • うるう年かどうかの考慮が必要

の条件が必要ですので関数ライブラリの「論理」からif then elseで表現します。

ポイントは2点です。うるう年かどうかは、西暦が4で割り切れる(ただし100では割り切れず、400では割り切れる)の条件を使うため割り算した余り(剰余)を求める関数remを利用しています。例えば、5 rem 3 で2が返ります。

また、例題1ではdatetime_date(ITEM)は基準値からの秒数を使って日付に変換しましたが、今回はdatetime_date (YEAR,MONTH,DAY)とすることで日付を作成しています。

あとはひたすら、式を我慢強く書くだけです。コピーして便利に使うことを希望される方はこちらでコピーしてください。

→以下のコードはこちらのリンクから

 

スーパーノードでNヵ月後の日付作成

もしNヵ月先の日付を頻繁に求める必要がある場合は、それをスーパーノードにしておくと便利です。

置換ノードを詳しく説明した記事はこちら推しノード#20「スーパーノード」

まず出来上がったストリームのフィールド作成をNヵ月後とリネームして右クリックします。スーパーノードの作成から始点の選択を選びます。

 

スーパーノードのパラメータを設定するために、パラメータの定義をクリックします。

 

それぞれ以下の通りに入力し、最後にデータ型を指定します。

 

データ型を連続型で指定して、下限と上限を入力します。

 

OKボタンで確定するとスーパーノードにパラメータが設定されました。あとは、ノードにパラメータが渡されるように編集します。まずズームインボタンをクリック。

 

フィールド作成ノードを編集します。

 

パラメータは、先ほど名前として登録したmonthの前にパラメータ識別記号の$P-をつけシングルクォーテーションで囲います。あとは例題2で作成したCLEM式の6(6ヵ月後)を置きかえれば完成です。

 

→以下のコードはこちらのリンクから

(完成したCLEM式は一部のみですが以下のようになります)

 

いかがでしたでしょうか?ModelerはPythonやRとの連携が魅力ですが、複雑でよく利用する関数はスーパーノードとして部品化できるのもの良いですよね。

 

Modeler詰将棋!次回のTipsから出題

次の例題にチャレンジしてみてください。2021年5月21日のオンラインユーザー会

https://note.com/ukiukiayatti/n/n91a0a28d41bc

でも特別企画として取り上げられます。事前に例題にトライした上で当日SPSSベテラン棋士がガチで解く様をご覧になると2倍楽しめます!

ご参加を希望される方は、IBMご担当者、またはIBMパートナーに、ご担当が不明の方はリンクの問い合わせ先までご連絡ください、、とのことです。

 

例題:2つのピークの傾きを求める

 

例題データ

https://raw.githubusercontent.com/yoichiro0903n/blue/main/data.csv

(リンクを右クリックして「リンク先を保存」またはブラウザで開いてからページを保存します)

 

いかがでしょうか。IBM所属のSPSS Modeler イケメン棋士達はこの例題に何分、何手詰めできるか見ものです。

次回のTips# 09はイベント当日にも解説されるIBM牧野さんが執筆されます。

ご期待ください。

 

SPSS Modelerの詳細についてはこちら

→Modelerデータ加工Tips バックナンバーはこちら

 

白岩 英士

ABTマーケティング株式会社
データベースイノベーションラボ
チーフデータサイエンティスト

 

More SPSS Modeler ヒモトク stories

Modelerデータ加工Tips#10-時系列データを加工して95%予測上限と下限を求める

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

  みなさんこんにちは。東京ガス株式会社の笹谷と申します。 弊社は、海外から液化天然ガス(LNG)を輸入し、LNG基地で都市ガスを製造、パイプラインを通して都市ガスを供給し、家庭用・業務用・工業用等のお客さまに ...続きを読む


Modelerデータ加工Tips#09-IoTデータからピーク間の傾きを特徴量として抽出

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

みなさん、こんにちは。 現在IBMテクノロジー事業部に所属し、長年SPSS製品に携わっております牧野です。SPSS製品には、ヒモトクブログに登場するSPSS Modelerやアカデミックや医療・研究分野で多くご利用いただ ...続きを読む


Modelerデータ加工Tips#07-傾向スコアとGUIスクリプトで販促と効果の因果推論

Data Science and AI, SPSS Modeler ヒモトク, アナリティクス...

  みなさん、こんにちは 大日本印刷の西山です。 弊社では、お取引先の保有データをお預かりし、データ分析をもとに現状把握、課題抽出、仮説立案、コミュニケーション施策の企画・実行・検証等のマーケティング業務をトー ...続きを読む