• タグ別アーカイブ: Q&A
  • 二刀流で切り込む

    某所で質問を受けたのですが,そのときはあまり時間がなかったもので「今週のブログに掲載する」とお答えしました.本日はそれについて書きますが,JMP初心者の方でしたので,質問もごく単純なものです.おそらくほとんどの方はご存知だと思うようなことだと思いますが,上述の事情があるのでこの点はご容赦くだささい.
    「データフィルタ」や「ローカルデータフィルタ」は『AND』ボタンで複数の変数についてかけることができます.名義尺度の変数であればそれぞれのカテゴリーがボタンとなって表示されます.これをブロック表示と呼びますが,これの操作についての質問でした.カテゴリーが非常に多いのでボタンの表示が潰れて読めないのと,そもそもクリックが煩わしいのだそうです.

    これはご存知の方も多いと思いますが,こういうときはカテゴリーリストの赤三角メニューから「表示オプション>リスト表示」を選びます.こうすることでフォーカスのある変数のカテゴリーを上下の方向キーで切り替えることができます.もちろん,クリックも受け付けるので,離れたカテゴリーを瞬時に切り替えることも可能です.リスト表示なのでカテゴリーの名前が長いときなども文字が隠れないというメリットもあります.いつも思うのですが,一番下のカテゴリーから下方向キーで一番上に戻ると便利なのですが,皆さんはどう思いますか.

    ついでなので,他の表示オプションに言及しておきます.「単一カテゴリ表示」は今1つ存在意義が不明なのですが,フィルタにかける変数の種類が多いときはすっきり見えるのが特徴です.もう1つの「チェックボックス表示」は複数のカテゴリー(上の図のように「学年」と「性別」という別の変数のカテゴリーも含みます)を選択する際に便利です.上述の「リスト表示」のボタンはトグルになっているので,複数のカテゴリーでフィルタをかけるのにshiftキーを押さなければならないのです.その反面,方向キーでのカテゴリーの素早い切り替えはできないのですが,1つ手があります.

    どうすれば良いのかお分かりでしょうか.答えは赤三角メニューにある「アニメーション」を使うのです.こうすることで,「チェックボックス表示」出会ってもカテゴリーを上から素早く切り替えることができます.『Play』ボタンを押してもいいですけど,その左右隣のボタンを押すことで,方向キーと同じようにステップでカテゴリーが切り替わります.

    データの層別化は『By』が基本ですが,複雑な層別化では「ローカルデータフィルタ」が威力を発揮します.データの可視化のところで「ローカルデータフィルタ」と「列スイッチャー」の二刀流でデータに切り込むなどと今度出版する書籍にも書いていますけれど,私の好きなJMPの機能の1つが「ローカルデータフィルタ」です.

    今日は初心者向けの内容でしたけれども,最近JMP初心者の方々にお教えする機会が増えてきたので,このようなブログ記事が増えるかもしれません.

    それではまた.


  • オーバーフィッティングとオッカムの剃刀

    先日は某社で実験計画についてお話しする機会がありました.関係者の皆様,貴重な体験をさせていただきありがとうございました.時間がない中で詰め込みすぎた感があるので,後日何か疑問が湧きましたらいつでもご連絡ください.大阪の会社だったのであまり馴染みのない大阪の街を歩き回ったのですが,電車の中で大声で話している人がいて喧しかったり,コンビニの前で大勢の人がタバコを吸ってたむろっていたり,おっちゃんが自転車で暴走していたり,久しぶりの大阪は賑やかでした.歴史的な建造物もちらほらあって,重みも感じてよかったです.今まで行ったことがある大阪は大阪大学だったり,SAS社のサテライトだったり北寄りで,今回もどちらかというとキタなので,これらの偏ったサンプリングでは真の大阪像は予測できません.機会があればミナミのサンプリングもしてみたいなと思っています.




    講演には『統計的問題解決入門』で勉強してくださったり,このブログをお読みいただいている方もいらっしゃったので,気恥ずかしい思いをいたしましたが,みなさんよく聞いてくださったので,思い切ってお引き受けしてよかったと思っています.とはいえ,人前で話すのは得意ではないので毎回緊張しますし,特に今回のように宿泊が伴うとホテルで寝られない質の私としては大変疲れました.今週は分析の交渉力について書く予定にしていましたが,しんどいので本日はメールでいただいた質問にお答えする形で,オーバーフィッティングについて話します.ご存知の方には当たり前なので,申し訳ないのですが,中高生向きの初心者用コンテンツとしてご容赦ください.


    現象としてオーバーフィッティングを確認するのは簡単です.むやみにべき乗項を加えることの禁忌は容易に理解できると思いますので,別の例を示します.例えば,以下の手順で新規データテーブルに列を作ってみてください.
    1.「データの初期化」を「シーケンスデータ」に変更して「列の新規作成」します.(設定値はデフォルトのまま)列名は「X」とでも.
    2.「Y」列を新規作成し「計算式」として例えば以下の数式を入力します.
    :X + Random Normal() * 20
    この計算式には「Random Normal」関数で乱数が組み込まれています.
    3.今度は「データの初期化」を「乱数」にして「追加する列の数」を20にして「列の新規作成」します.列名はデフォルトで「列3 01」から「列3 20」となります.この列は「Y」とは無関係な単なるノイズです.
    4.「モデルのあてはめ」で「Y」を『Y』に「X」と「列3 01」から始まる20列を「モデル効果」に『追加』して『実行』します.主効果のみにしてください.


    レポートの「効果の要約」を見てください.「X」以外の要因が有意になっていませんか.もしなっていなかったならば「やり直し>自動再計算」にチェックを入れて,「Y」の計算式の『適用』を繰り返し押して乱数を変えてみてください.おそらく,そのうち冒頭のように何かしら有意な列が出てくるはずです.この例では「列3 07」が有意となっていますが,何しろ単なる乱数列なので明らかに間違った効果です.このように,効果の数が多くなればたとえ意味のない変数であっても見かけ上の関係が出てきてしまいます.これがオーバーフィッティングの怖さです.観測データにはノイズが含まれているため,データを完璧に記述するモデルはノイズも正確に再現しています.これが災いの元です.ノイズは再現しないからノイズなのです.


    オーバーフィッティングは機械学習では過学習のことです.学習しすぎるとかえって役に立たなくなるのは人間も同じです.記憶は生存に直結しているとはいえ,人間は忘れることで生き延びてきました.例えば私たちの祖先の猿が獣に襲われたとします.命からがら逃げ延びたとして,その記憶が生存に役立つには細部を忘れることが重要でした.例えば「夏の初めの朝に,森の外れの見通しの良い草原で,尻尾が長く片耳の垂れた黒い縞模様のある黄色い四つ足の生き物に,飛びかかるように襲われた.」と小説のように5W1Hで細部を詳細に覚えていた猿は恐らくその後その経験を生かせなかったことでしょう.詳細な記憶は生存には役に立たないどころか,逆に弊害をもたらします.この記憶を正確に覚えていた記憶力優秀な猿は,秋の夕方に黒い獣に襲われてしまったかもしれません.忘れっぽかった猿は見通しの良い草原で敵に襲われたという記憶のみを保持していたため,生存に役立ったかもしれません.少なくとも詳細を忘れたことは生存レースに有利に働いたことは間違いありません.忘れっぽかった猿の子孫である私たちも同様に忘れっぽいはずです.


    話が逸れましたが,統計モデリングにおいても,良いモデルを作るには詳細を忘れることが重要です.データを完璧に説明したモデルは予測には役に立たないのです.特に説明変数が多いと目的変数をいかようにも説明できてしまうので,真の母集団にない関係をあたかもあるように見せてしまうことが可能です.この間違いを回避するには,できるだけ少ない説明変数でモデルを作ることです.科学では『統計的問題解決入門』のコラム(p153)でも説明している「オッカムの剃刀」という考え方があります.より少ない仮定で説明できる理論のほうが信頼できるという基本姿勢です.モデリングにおいて,オッカムの剃刀で何をそぎ落とすかというと,推定されたパラメータです.剃刀に当たるのが,モデル効果の削除ボタン(ボタンのGUIになってませんが)です.


    この意味で,重回帰分析に先駆けた単回帰分析も軽視できません.但し,OFAT(一因子実験)とは本質的に異なり,データは実験計画で取得することが前提です.この場合であれば,他の変数は層別に考慮することが可能です.共変量が考慮されていれば,単回帰分析でも実務においては十分価値があるように思います.なかなか現場が実験計画をやってくれないという皆様からの悩みを伺うに,1つ提案したいのが単回帰分析です.分析の交渉力とも関係あるので,この点を来週補足します.


    それではまた.


  • JMPのグラフ背景に画像を貼る

    先日,某所で質問を受けました.それに関連して,少し前に書いたJMPの棒グラフの色を変える話の続編を「JMPのグラフ背景に画像を貼る」としてお話しします.質問というのは,グラフの背景に描画データにマッチしたグラデーションを入れたいというものでした.今までそのような必要性を感じなかったので,その場ではお答えできなかったのですが,結論から言うとJMPのグラフ背景に画像が張り込めるので,その機能を使えば可能です.このテクニックを応用すると,例えばこんな感じのグラフが書けます.

    このJMPくんは『統計的問題解決入門』の原稿に使ったそのものの画像なのでサイズが小さく,グラフ全体に引き伸ばしたのでボケてしまっていますが,グラフのポイントの説明にJMPくんに指示させたりと面白いアイデアが簡単に実現できるので今後いろいろ試してみようと思います.

    頂いた質問では画像ではなくグラデーションだったのですが,Excelだと簡単にできるんですね.リンクは貼りませんが,適当に「グラフエリア」「背景」」グラデーション」で検索かけたらそのやり方を解説しているページがすぐに出てきました.質問者に詳しくは聞きませんでしたけど,おそらくこんな感じのことをやりたいのでしょうか.わたしはエクセルを使わないので,Numbersで同様なグラフを書いてみました.
     

    見栄えが良くないと言うことももちろんありますが,そもそもグラフには必要ない要素は入れないのが原則です.背景のグラデーションなどはグラフの持つ情報に対するノイズに過ぎません.このようなグラフ要素をEdward Tufte先生はチャートジャンクと呼びました.ここでジャンクと言っているのはガラクタとか役に立たないという意味です.

    チャートジャンクは役人の作ったグラフによく見られます.例えば,今リアルアイムで文科省のページを訪れているのですが,適当にリンクをクリックすると,やはりこんなのを見つけました.正に「犬も歩けば棒に当たる」状態ですね.まず上にある「文化庁予算の推移」の棒グラフは立体的な円柱に見えるような視覚効果が付いています.何ゆえ円柱グラフにしなければならなかったのか理解できませんが,見にくくなることだけは確かです.下は悪名高い3D円グラフですが,ご丁寧に二重ドーナツになっています.3D効果はもちろんチャートジャンクですが,最外周のドーナツも,色を変えたりと他の方法もあるしそれほど重要な意味があるとは思えないのでチャートジャンクと見なして良いように思います.


    チャートジャンクは少なくとも可視化のグラフでは排除すべきと考えますが,視覚化のグラフではアイキャッチとしての効果があるという研究結果もあるようで,一概にダメとは言い切れません.(JMPのグラフに期待する効果とは思えませんが.)実は,以前背景に写真を貼ったグラフを米国SAS社の方のプレゼンで見たことがありました.そのときは他のソフトで画像処理したのだろうと思ったのですが,質問をいただいてそのことを思い出しました.もしかしたらJMPでも背景に任意画像を設定することができるかとGUIをいじったのですが,どうにも見当たりません.そこでSASジャパンの方に尋ねたら,やはり可能でした.


    やり方ですが,最初に画像をコピーしておくことがポイントです.ですから,グラデーションを入れたいのであれば,他のソフトはやはり必要になります.適用なサイズの四角形を作ってそれをグラデーションで塗りを入れます.そのオブジェクトをコピーした状態で,グラフ背景の右クリックメニューを開くと「編集>背景イメージの貼り付け」が出現します.通常はコマンドを実行すると画像の場所を聞いてくるというUIが多いので,これが盲点でした.更に「イメージ>サイズ/スケール>グラフサイズに合わせる」を実行するとグラフ背景いっぱいに広がってこのようになります.
     

    このときの注意ですが,グラフ範囲は軸座標の範囲なので通常の設定では余白ができてしまいます.この図では,最初に大きめに軸の範囲を設定して画像を貼り付け,その後で元のサイズに戻すといった工夫をしています.ヒストグラムの場合は度数軸の調整ができませんから,何か他の工夫が必要です.それと検証したところ,「一変量の分布」レポートのグラフにも貼ることはできました.但し,グラフサイズに合わせるというコマンドがありませんので,画像サイズを別途指定しなければならにので扱いにくいかもしれません.

    画像を貼るのにわざわざJMPでやる必要はないかもしれませんが,簡単な画像処理なども実装されているのに驚きました.アイデア次第ではプレゼン映えがするグラフが描けるかもしれません.
     

    それではまた.