過去の投稿に画像リンク切れ多数ありご迷惑おかけしています.

「JMP超入門」はじめました

JMP JMPではじめるデータサイエンス

このブログに来て頂いているということは,基本的に『JMPではじめる』シリーズの読者の方々と思います.少しはお役に立っていますでしょうか?中には,なかなか時間が取れずに積ん読状態になっている方もいらっしゃるかもしれません.そこで,これからJMPを学ぼうと思っている方のために,記事カテゴリーに「JMP超入門」を加え,連載をしていくことにしました.それというのも,ここしばらくは在宅勤務や出張のキャンセルなどでいつもより時間がある方が多いと思うからです.私も今は時間があるので,こういうことができます.

いきなり春休みに突入した小中高生には,民間企業が提供するいりいろな自宅学習支援のコンテンツが無料解放されています.(売り物なのだから当たり前と言われれば,そうなのですが,)わかってもらおうという努力が伝わる素晴らしいものがたくさんあります.例えば,「子供の科学 無料公開特設サイト」の「なぜ感染する!? ミクロの脅威が見えてくるウイルスの世界へGO!」という特集記事(2016年12月号)はお勧めします.自然免疫は獲得免疫との違いを正しく知るだけでも,今の状況で,正しい行動を判断するための良い指針となるはずです.

文科省も,自宅学習を支援する様々なサービスを「臨時休業期間における学習支援コンテンツポータルサイト(子供の学び応援サイト)」にまとめています.その中に紹介されているサイトを見て回ったのですが,お役所主導のサイトは,例えばこのブログでも紹介したことがある統計局の「なるほど統計学園高等部」など,誰向けなのかわからないものが多いですね. 3DCGのキャラというオブラートにくるんではいますが,中身はいわゆる統計学の教科書の内容です.これを見て統計学が好きになる高校生がどれだけいるのか.最近は,統計学を教えるという機会も増えているので,反面教師という意味では参考になりました.

さて,冒頭に書いたように,このブログでも,これからJMPを学習するという方のために,超初心者用のコンテンツを(時間があるときは)書いていきます.操作の詳細は『JMPではじめるデータサイエンス』を参照して頂くとして,そこに書ききれなかったことなども解説していきます.今回は,新型コロナウィルス感染症の状況をJMPで見る手順を学習します.

最初に何を知りたいのかを明確にします.本日は,日本国内の感染者数の増加を中国の初期の状況と比べて,都市封鎖にまで至る可能性があるのかを判断したいとしておきます.そのためのデータをどこから探せば良いかを考えることが次のステップです.日毎の日本での感染者数が必要となります.このデータは公式サイト?からも拾えますが,CSVでファイルを提供して下さっている方がいますので,それを使います.都道府県別新型コロナウイルス感染者数マップ(ジャッグジャパン株式会社提供)の左上にCSVというリンクがあるので,それをクリックすればCSVファイル「COVID-19.csv」がダウンロードできます.

最初にやることは,ファイルオープンです.このファイルはCSVですから,いきなりJMPで開いてもいいですが,もしもオリジナルデータがエクセルのファイルであれば,まずエクセルで開いて,どのようなデータ構造になっているか確認することが重要です.JMPテーブルへの変換の過程で,必須の情報が抜け落ちたりすることもあります.エクセルウィザードの設定を決めるためにも,特に何行目から何行目までが変数の属性を記述しているかを確認してください.

幸いこのファイルは,JMPでひらけば直ちに分析に着手できます.まず,テーブルの中身をチェックします.それには「列ビューア」が便利です.「FIeld2」以降の列(おそらく予備フィールド)には何も書かれていないことなどが即座にわかります.これらの列は削除しても構いませんが,今回はこのままにしておきます.データ前処理についての詳細は『JMPではじめるデータサイエンス』を参照してください.

次にデータ分析の目的から,必要な変数を探します.このとき最終的なグラフをイメージするといいです.横軸は「発症日」でもいいかもしれませんが,欠測値が多いので「確定日」にしましょうか.縦軸ですが,今の目的には,日毎の累積感染者数が知りたいところですが,このテーブルには見つかりません.どうすればいいか考えてみてください.

わかりましたか?「要約」を使います.「確定日」を『グループ』,「通し」を『統計量』のプルダウンから「最大値」にすればOKです.出力されるテーブルの「行数」を「感染者数」に,「最大値(通し)」を「累積患者数」に書き換えます.これでグラフは描けますが,「確定日」のままでは他国との比較がしにくいので,特定の日からの日数としたいところです.データを見ると1月24日を起点とするのが良さそうです.さて,この日からの日数を計算するにはどうすれば良いでしょうか.

JMP 9から計算式の「日付時間」に「Date Difference」関数が追加されているので,これを使います.この関数の引数は,開始日付,終了日付,以外に「intervalName」「alignment」の4つです.最後の引数はデフォルトでは表示されませんが,ここでは使わない(デフォルトの設定でいい)ので,次のように設定してください.開始日付に「24Jan2020」,「終了日付」に「確定日」列,そして「intervalName」に「”Day”」を指定すれば1日を単位とした時間差が計算できます.因みに,1904年の1月1日からの秒数で時間差が計算されているはずですが,これはMacintoshの仕様と同じですね.JMPのMがMacintoshであることの名残かもしれません.

「Day」列を新規作成して,上記の計算式を入れると1行目は-9になります.この行は「非表示かつ除外」しておきます.後はお楽しみのグラフを描く作業です.「グラフビルダー」でもいいですが「二変量の関係」から「その他の当てはめ」で「Yの変換」を「自然対数」にしたのがこのグラフです.

このグラフにラベルを入れるのは簡単です.最初の点を右クリックして「行ラベル」,「確定日」列を右クリックして「ラベルあり/ラベルなし」とすればいいのです.デフォルトのラベルの位置は見にくいのでドラッグして適当なところに移動させてください.

時間が来たので本日はこれまでとしますが,次回はこの結果を他国と比較してみたいと思います.結果を先に示しますと,冒頭のグラフが中国とイタリア,日本を比較したものです.このグラフのレンジでは中国は振り切れています.PCR検査をしていないからだという指摘もありますが,それを踏まえても日本のはよくやっていると思いませんか?特に医療関係者のご尽力には感謝以外の言葉は見当たりません.

因みに,私はといえば,こういうときこそ慌てず騒がず,今できることをやるべきと考え,To Doリストにずっと残っていたPythonの2系から3系への移行に着手しています.この機会に Jupytor Notebookを試しましたが,いいですねこれ.JMP関連でも,JSLをちゃんと勉強したり,JMP Proの新機能を検証したり,やることはたくさんあります.

それではまた.

統計的問題解決研究所

コメント