ブライアン・コーコラン - SAS ソフトウェア開発ディレクター
JMPは、幅広いデータ形式を製品に取り込むための様々な方法を提供しています。さらに、結果をエクスポートする方法も豊富に用意されています。最初の理由は明白です。長年にわたり、データの収集とフォーマットのために多くのツールが開発されてきました。しかし、多くの場合、これらのツールではデータをJMPデータテーブルに変換できません。エクスポートが必要なのは、JMPを所有していないユーザーも含め、幅広いユーザーと結果を共有する必要性があるからです。
本稿では、JMP 13のインポート、クエリ、エクスポート機能の使い方について、ほんの一例をご紹介します。デスクトップのスクリーンショットにはWindows版を使用していますが、本稿で解説する機能はすべてMac版のJMPでもご利用いただけます。エンドツーエンドのワークフロー全体を分かりやすくするため、説明形式をとっています。今回は、最近実際に発生した事例を例に挙げました。
私には二人の息子がいます。一人はもうすぐ大学を卒業するところ、もう一人は大学1年生です。上の息子は大学2年生の時に進路を変えました。その間、私たちは将来のキャリアについて何度も話し合いました。「何に興味があるの?」「どこで社会に貢献できると思う?」「デスクワークがいいのか、それとももっと活動的な仕事がいいのか?」「旅行がしたい?」など、延々と話し合いました。
下の息子は学習計画は立てているものの、それが正しい選択かどうか確信が持てません。今回は、意思決定の助けとなるもう少しデータが欲しいと思っています。様々な仕事の見通しはどうでしょうか?息子が今の自分の選択を見直したり、他の選択肢を考えたりするのに役立つかもしれません。彼と話してみると、修士号は取得しても構わないが、博士号は取得したくないと言っていました。おそらく技術分野を希望しているようですが、他の分野も視野に入れています。業務プロセスの改善や、仕事中に周囲を歩き回ることも好きです。そして、給与の高い仕事に就きたいそうです。わかりました。
なんと、米国労働統計局にはこの作業に役立つツールがあるのです。bls.govのウェブサイトには、雇用の伸びや給与、必要な学歴、さらには職務内容に関する膨大なデータが掲載されており、訪問者にこの分野の全体像を掴んでもらうことができます。データは一般公開されており、私にとっては探索を始めるのに最適な場所でした。
BLSのサイトを検索したところ、「雇用予測」の「職業別雇用データベース」セクションが最も関連性が高いように思われました。 [1]ウェブサイトにはデータビューアがありますが、JMPに取り込みたいと考えています。幸い、生データをExcel XLSX形式でダウンロードするボタンがあります。まさに完璧です。500KBと扱いやすいファイルをダウンロードしました。ワークブックには12個の表がありますが、2014年の求人情報と2024年までの予測を含む表1.7が最も適しているようです。JMPの「ファイル」→「開く」でワークブックを開くと、Excelウィザードがデフォルト設定で起動します。「ワークシート」で表1.7を選択し、インポート設定を変更します。
デフォルト設定でのワークシートプレビュー
ヘッダー情報がたくさんあります。JMPのスピンボタンで列ヘッダーとデータの開始位置を調整した結果、見栄えの良い設定に落ち着きました。ヘッダーは2行で、2行目からヘッダーが始まり、5行目からデータが始まります。
調整された設定によるワークシートのプレビュー
インポートボタンを押すと、1000行以上のデータが読み込まれました。BLSはもっと詳細なデータセットを提供していますが、このサマリーデータセットでも私のニーズには十分だと思います。唯一残念なのは、JMPテーブルで列が文字形式に変換される際に問題が発生しているように見えることです。何が問題なのでしょうか?

左揃えのテキストは文字形式を示します
データを下にスキャンすると、表の最後に 4 行の脚注があることがわかります。

JMPはデフォルトでデータの最初の100行をスキャンして型を判別します。これにより、効率的で応答性の高いプレビューが可能になります。ただし、実際のインポートではすべての行がスキャンされ、データ損失を防ぐため、列は文字型に変換されます。もちろん列の型を直接変更することもできますが、戻って別の方法でインポートすることもできます。「プレビューパネルの更新」パネルの下に「すべての行を表示」チェックボックスがあります。これを選択すると、プレビューパネルにテーブル内のすべての行が表示されるだけでなく、すべての行が列の型指定にも使用されます。

すべての行を表示
これで、表の末尾に移動して、データが脚注の上まで続くように指定できます。ウィザードの「次へ」ボタンを押して、2ページ目のオプションに進みます。データプレビューで、データに含める最後の行をクリックし、ウィザードの2番目のペインにある「データの終了行」の横にある緑色のプラスボタンを押します。ウィザードが正しい行番号を入力するので、もう一度「インポート」ボタンを押してデータを正しくフォーマットします。
これで、1,000を超える職業を検索するデータがJMPにクリーンに取り込まれました。最初の2つの列の名前は大きくてわかりにくいため、BLSの長い名前に倣って、マトリックスタイトルとマトリックスコードに短縮しました。ここで、焦点を絞り込みましょう。テーブルには、職業の種類とは思えない「OccupationType」という列があります。この列の各行には、「Summary(要約)」と「Line item(明細項目)」とだけ表示されています。「Summary(要約)」とは、その行が特定の種類のすべての職種、たとえばすべてのエンジニアを対象としていることを意味します。「Line item(明細項目)」は機械エンジニアかもしれません。そこで、まず最初に、要約行をすべて削除したいと思います。「Select Where(場所を選択)」のような操作を行ってから、テーブルをサブセット化して要約行を削除することもできます。ただし、適用したい追加のフィルターがあります。これにはクエリビルダーが最適です。
JMPクエリビルダーをご存知ない方のために説明すると、これはJMPデータテーブルに対してSQLクエリを作成するためのGUIを備えた強力なクエリツールです。ODBC経由でデータベースにクエリを実行したり、JMP-SASコネクタ経由でSASテーブルにクエリを実行したりするための、同じインターフェースを持つツールも存在します。クエリビルダーを使用するのにSQLの知識は必要ありません。ユーザーインターフェースからクエリを作成し、保存して再利用できます。その際、SQLのコードを確認する必要はありません。
JMPテーブルのクエリビルダーは、「テーブル」メニューから起動します。最初に表示されるテーブル選択ダイアログで、クエリで結合するテーブルを指定できます。今回はデータのフィルタリングだけを行いたいので、既にインポート済みのテーブルをプライマリテーブルとして選択し、先に進みます。

クエリビルダーのテーブル選択
「クエリを作成」を選択すると、メインのクエリ構築ダイアログが表示されます。最初の2つの列には、BLS職業名とコードが含まれています。どちらも「マトリックスタイトル」と「マトリックスコード」という、まだ分かりにくい名前です。コードについては気にしないので、無視します。職業列の名前はまだ気に入らないので、クエリに列を追加した後、「JMP名」をクリックして編集ボックスを表示し、クエリ結果のタイトルを「職名」に変更します。

クエリ後の列名の変更
要約項目を除外するため、 「職業タイプ」列も追加します。また、実際に追加される雇用数に関心があるため、「雇用の変化(2014~2024年) - 数」列も追加します。増加率の列は一見興味深いように見えますが、誤解を招く可能性があります。最も急速に成長している職業の一つは風力タービンの整備士です。しかし、これは5,000人から1万人に増加しており、多くの分野と比較するとまだ少ないです。そのため、増加率ではなく、追加された雇用数を使用します。
また、息子の基準の 1 つであったため、年収の中央値と、入社に必要な一般的な学歴も追加します。最後に、おそらく最も重要な列である「成長と代替による求人数、2014 ~ 2024 年」も追加します。多くの職業の成長は比較的緩やかですが、退職する労働者を大量に置き換える必要があるため、新人労働者には大きなチャンスがあることがわかります。一例として、機械工学が挙げられます。10 年間で 14,600 人 (5%) という緩やかな成長が見られます。ただし、代替も考慮すると、この職業の 277,500 人の雇用のうち 102,500 人が追加されます。これは一般的な比率です。統計学者は、その期間にポジションの 50% を置き換える必要があります。以下は、フィルタリングを行う前のクエリ ビルダーの列選択です。

フィルタリング前のクエリ
雇用の代替率と成長率を反映する列を追加したいのですが、「使用可能な列」の横にある赤い三角のメニューを選択し、「計算列の追加」を選択します。分子に「求人数…」 、除数に「雇用-2014」を選択して、「OK」をクリックします。
計算列の追加
列は計算1という名前で作成されます。コンテキストメニューを使って名前を「Jobs per Total」に変更し、「含まれる列」に追加します。そこで、「書式」フィールドを「パーセンテージ」に変更できます。変数名が長いため、すべてのフィールドを表示するには「含まれる列」ペインを広げる必要があるかもしれません。これで、フィルターを使って検索範囲を絞り込む準備ができました。
まず、職業タイプをフィルターパネルにドラッグします。そこで「明細項目」をクリックすると、集計タイプではない行のみが含まれます。次に、年収75,000ドルを超える仕事だけを含めるように、平均年収をフィルターします。職業タイプフィルターのすぐ下に年間賃金をドラッグすると、デフォルトでAND演算が行われます。これが私が求めているものです。OR演算を行う場合は、ORボタンをクリックして開始する必要があります。また、必要な標準教育を入力し、「学士号」、「修士号」、そして未コード化を意味するダッシュを拡張選択しました。最後に、残りの仕事の多くが管理職であることに気づきました。エントリーレベルの人が管理職に就く可能性は非常に低いため、これらの職種を除外したいと思います。これは、「次を含む」フィルターを「次を含まない」に切り替えることで実現できます。これを行うには、マトリックスタイトル変数をドラッグします。次に、赤い三角形のドロップダウンメニューで「フィルタータイプ > 含む」を選択します。 「役職」の横にドロップダウンリストが表示されるので、「含まない」を選択して「マネージャー」と入力します。「役員」についても同様の手順で、最高経営責任者(Chief Executives)を除外できます(ちなみに、過去10年間で3%減少しています)。フィルターリストが完了すると、以下のようになります。
完了したフィルター
これで「クエリ実行」ボタンを押せば、必要なデータを含むテーブルを取得できます。1,000行以上あった行数を58行に減らしました。クエリを保存しておけば、後で変更を加える際に再度開くことができます。テーブルの作成に使用したクエリは、データテーブル内にテーブルスクリプトとして保存されます。このスクリプトを編集して処理内容を確認したり、実行してデータを再作成したり、さらにはクエリ自体を変更することも可能です(ただし、変更する際は注意してください)。

データテーブル内のソーススクリプト
データが揃ったので、グラフのラベルとして「役職」を選択します。グラフビルダーを起動し、X値に「平均年収」 、Y値に「求人数…」と入力します。もう少し情報量を増やすために、色に「標準的な教育水準…」を選択し、「合計の求人」を「サイズ」ドロップゾーンにドラッグして、マーカーのサイズを労働者全体に対する求人の増加数を示すパーセンテージに設定します。このグラフを閲覧していると、ソフトウェア関連の仕事がかなり目立つことに気づきました。アプリケーションソフトウェアとシステムソフトウェア関連の仕事はダイヤモンド型のマーカーで表します。これをコンピューターサイエンス専攻の長男に送って、正しい選択をしたと伝えることができます。タイトルを最終的に調整した後のグラフは、次のようになります。

JMPのグラフビルダー出力
この出力をインタラクティブHTMLレポートとして長男に送ることにしました。長男はデスクトップで仕事をしながら、あるいはゲームをしながらでも、ポイントにマウスオーバーしてデータを簡単に調べることができます。インタラクティブHTMLは分析データをHTMLレポート内に送信するため、機密データを扱う場合はこの点に注意してください。「ファイル」->「名前を付けて保存」(Macの場合は「ファイル」->「エクスポート」)を選択し、「ファイルの種類」ドロップダウンから「データ付きインタラクティブHTML」を選択すれば、簡単にレポートを作成できます。このスタンドアロンレポートを息子にメールで送信すれば、息子はWebブラウザでレポートを開き、ポイントにマウスオーバーしてデータを見ることができます。
Chrome のインタラクティブ HTML レポート
当初の読者である私の下の息子は、iPadをよく使っています。彼にこのデータの最初の概要を渡し、その後は彼自身でさらに詳しく調べさせてあげたいと思っています。iPad用のグラフビルダーはJMPデータテーブルを開き、テーブル内にグラフビルダースクリプトが見つかった場合は自動的にグラフビルダーで開きます。データテーブルに分析データを入力した後、息子が自分でデータを詳しく調べられるようにします。このグラフでは、求人数をより強調したいと思っています。まず、求人情報…をY、役職をX、給与を色の範囲で表示します。しかし、少し雑然として雑然とした印象になります。

最初の試み
グラフビルダーのコントロールパネルを再度開き、「ツリーマップ」ボタンをクリックするだけで、より好みのグラフを作成できます。一番良い点は、四角形にマウスを合わせるだけで詳細情報を簡単に確認できることです。
グラフビルダーツリーマップ
データテーブルを送信する前に、グラフビルダースクリプトを埋め込む必要があります。グラフビルダーアウトラインノードの横にある赤い三角形のドロップダウンメニューをクリックし、「スクリプトを保存」→「データテーブルへ」を選択します。スクリプトの名前を入力するように求められるので、「Job Openings」と入力して「OK」をクリックします。これで、ツリーマップスクリプトがテーブルに埋め込まれます。
これで、データテーブルをDropbox、iCloud、Google Driveなどのクラウドストレージフォルダに保存できるようになりました。iPad版JMPグラフビルダーはこれらのボックスの見方を理解しているので、テーブルをiPadに素早くダウンロードできます。最初は、テーブルを選択するための大きなJMPアイコンだけが表示されます。
テーブル選択ペイン
これをクリックすると、グラフ ビルダー アプリがテーブルを開き、テーブルに埋め込まれた最初のグラフ ビルダー スクリプトを探して、その分析を表示します。
グラフが自動的に開きます
息子はデータと私の最初の分析結果を手に入れたので、データとグラフを自分で試すことができます。例えば、「フィルター」を押して、任意の列を選択して調べることができます。例えば、「入社に必要な一般的な学歴」でフィルターをかけると、どの職種に学士号が必要で、どの職種に修士号が必要かを確認できます。

必要な学位によるフィルタリング
グラフビルダーアプリのもう一つの素晴らしい機能は、デスクトップ版のグラフビルダーで提供されているグラフのほとんどを試すことができることです。例えば、息子が別のビジュアルを見たり、列をドラッグしてデータを別の視点から見たいと思ったら、すぐに試すことができます。列名の横にはドラッグできることを示す「グリップ」があり、変数をドラッグすると、グラフビルダーでおなじみのドロップゾーンがハイライト表示されます。マーカー、背景色、軸のカスタマイズ機能も備えています。息子は出力を次のように変更できるかもしれません。

iPadアプリで新しいグラフを作成する
これで私の仕事は完了です。息子たちにはそれぞれインタラクティブなレポートを送って、検討してもらいました。まだ模索中の息子には、自分でレポートを作成して、自分の選択について少しでも理解を深めてもらうようにしています。
JMPにデータを取り込む方法は他にもたくさんあります。SASへの接続、テキストデータのインポート、他のソースから取得したSPSSデータ、Triple-S調査データなど、その他にも様々な方法があります。「ファイルを開く」ダイアログで様々な選択肢をご確認ください。また、作成したレポートは、相手がJMPを持っていなくても、インタラクティブな方法で他のユーザーと共有できます。
[1]アメリカ合衆国労働統計局「雇用予測」労働統計局ウェブサイト、2017年8月18日https://www.bls.gov/emp/ep_data_occupational_data.htm