「それで、結局どうなの?」

よくあるパターンは、「基本統計量とデータの要約」「有意差があるかどうか?」「データ数は十分?」という話から始まります。

でも、それらの「頼まれたこと」だけをやっていたのでは、大抵の場合、先方はあまり納得してくれません。

「それで、結局どうなの?」

と始まるわけです。

要するに、分散やら検定やらp値やらを計算してもピンとこないわけですね。

相手の言う、

「それで、結局どうなの?」

というのは、「有意差ありと言えるかどうか?」を聞きたいわけではなく、

  • 良くなったのか?
  • 変わらない(悪くはならない)のか?
  • 悪くなったのか?

ということだったり、その「良くなった」「悪くなった」ということと他の要素との間に何らかの因果関係がないか?ということを実は聞きたかったりするわけです。

そういう意味では、いろいろな検査データの数値をもらうのももちろん重要ですが、それらをカテゴリ化してその変化を見たり、因果関係を説明するほうが、直感的に分かりやすいわけですね。

ただ、難しいのは、たとえば「収縮期血圧の正常範囲は?」という質問をしたところで、一応医学的なガイドラインはあるにしても、患者自身が130の血圧で健康と感じるかどうかは別問題だったり、血圧が5下がったから良くなったのか?というのもそう言い切れるとは限りません。こういう血圧のような連続値や、個人差がある場合などは、なかなか一意にカテゴリ化するのは困難であるケースもあります。

医者自身が良くなったか、悪くなったか判断が難しいところで、「それで、結局どうなの?」と聞かれるのはなかなかつらいものがあったりしますが、そこは、

  • いかに理解しやすい切口を提供するか?
  • いかにわかりやすい図表を示すか?

というあたりを努力して、説明すると、あとは自分でいろいろ解釈しはじめて、うまいストーリを作り上げてくれたりすることもあります。

#ということで、もうちょっとがんばらないとなぁ>私。

データクレンジングの重要性

データベースなどでもマスタがきちんと保守されていないものなどのデータを扱うと「キキーッ!!」となることがあります。

今回は、そういう意味ではデータ中に決められたフォーマットや単位で入力されていないデータがあったことに、統計処理やグラフの作成を済ませ、プレゼンを作成してメールした後に気付いてしまいました。

なぜ気が付いたかというと、統計処理するパラメータごとにsummary()関数を使ったり、boxplot()で外れ値を見るくらいはやっていたのですが、前回の解析値とあまりにも掛け離れていたので「あれ?」と思ったのです。

実際、ワークシートを見てみると、いろいろ不正な値があり、自分の算出していた統計値が正しいものでなかったことに後から気付き、改めて反省しました。

この統計処理は何度かデータの追加更新を重ねて、その度にプレゼンテーションをアップデートするというルーチン作業が繰り返していました。
いくつか前の段階ですでに不正な値が混入してたらしいのですが、summary()やboxplot、hist()などで確認していたにも関わらず、それに気付きませんでした。

その後で、pairs()プロットを作成・評価しているときに、また新たな不正データを発見するという事態に陥りました。

そういう意味では、でかいワークシートになるとなかなかゴミが入っているかどうかを目視で確認するのは難しい面もあるので、何らかの不正データ検出というのをパターン化しておかないとダメだなぁと痛感しました。

#今回はたまたま不正データが大量にあったのでまだ自力で
#発見できましたが、大量のデータ中に少量の不正データが
#あったら・・・と想像すると今でも汗がでます。(^o^);;A

Rで作図

今回もご多分に漏れず、グラフを描こうと思ったら、「あれ、どうやるんだっけ?」となって、いつもならおもむろに鞄から本を取り出すところですが、今日はあいにく持ってきていません。

そういう意味では、R関係の情報では非常に心強いRjpWikiというサイトがあります。

#これがまた、Rwiki.jpとしょっちゅう思い込んで、
#アドレスを打ち込むとそうではないんですよね。

そこからたどり着いたのがこのサイトなんですが、めちゃくちゃ強烈です。

R Graphical Manuals

ページの情報によるとこういうことだそうです。

18,691 images, 1,263 packages, 33,935 functions
Last data update: 2007-11-26 (R version 2.6.0)

へっ?
これって、グラフというか作図パターンが18,691枚も掲載されてるってこと?

いやーぁ!人柱というか、先人の強烈なパワーによる蓄積というのは偉大なものです。

#そもそも、必要な図をどうやってさがすのか?
#18,691もの作図パターンを一通り見るのもどんだけの時間がかかるのやら・・・。

まあ、私のほうの作図は「とりあえず」シンプルに片付けて「こんな感じでいかがでしょう?」
として一段落つけましたが、平日の夜や休日にシコシコといろいろいじりたおして、
何か強烈なインパクトが与えられるグラフや図を作りたいところです。

本を持ち歩かないと不安でたまらない!

最近は、.NETやJavaから豊富なRの機能を利用しよう!なんてことでいろいろいじっていましたが、久しぶりに統計処理の依頼が来たので、いろいろとグラフを作成したり、統計計算したりしました。

ただ、私は「本を持ち歩かないと気がすまない男」でして、いつも山のような本を、背中に両手、両脇に本がぎっしりつまった鞄やバッグをPCとともに持ち歩いています。

が、最近ちょっとお疲れ気味だったので、ここ数日は、普段ではありえない、有限要素法の本1冊と小さいウエストバッグのみのお出かけでした。

しかし、そういうときに限って本が見たくなるのです。

私がR関係でどうしても手放せずに持ち歩いている本は、こんな感じです。

The R Tips―データ解析環境Rの基本技・グラフィックス活用集

The R Tips―データ解析環境Rの基本技・グラフィックス活用集

The R Book―データ解析環境Rの活用事例集

The R Book―データ解析環境Rの活用事例集

Rによるデータサイエンス データ解析の基礎から最新手法まで

Rによるデータサイエンス データ解析の基礎から最新手法まで

#アホと言われても反論できないのですが、
#覚えられないというか忘れてしまうのです。

画像処理アルゴリズムを理解して、独自ライブラリを作るには?

実際に作ったという話ではないですが、偶然にもとてもよくまとまった本に出会ったのでご紹介します。

詳解 画像処理プログラミング

詳解 画像処理プログラミング

まあ、私自身は画像処理だけを専門にやっていたわけではないので、画像特有の処理には疎かったりするのですが、そういう意味では、こちらの書籍はOpenCV本よりも詳しく、基礎的な処理から高度な処理まで理論的な説明や数式、Cのコードで詳しく、判りやすく説明してくれています。

特に、プログラミング上効率よく書く工夫なんてのも記述の中に含まれていて、なるほど!と思うところもありました。

たとえば、3x3のフィルタをかけるときに上下左右の辺の部分はどうしてもプログラミング上、特殊条件を入れなきゃいけないのかな?と思い込んでいましたが、そうせずに済む工夫などについて触れられています。

#で、さーて、どうやって既存のライブラリを組み合わせた
#上でオリジナルのライブラリを構築しようかな?
#と考えているだけで一日終わったりする今日この頃であります。

画像処理ライブラリとしてのR

RでもrImageというパッケージを使うと画像の処理が簡単にできるということがこちらの書籍に書かれています。

The R Book―データ解析環境Rの活用事例集

The R Book―データ解析環境Rの活用事例集

実際にいろいろいじってみるまで、相当いろいろ遊べるのかと思っていたのですが、画像処理ライブラリとしてはあまり充実したものではなく、いくつかの簡単な処理関数とjpeg読み込みと表示のためのライブラリがあるだけで、さまざまな画像形式を読み書きしたり、動画を処理できるような機能はありません。

ただ、行列演算などが非常に簡潔に書けるので、アルゴリズムさえ確定してしまえば、オリジナルのライブラリを構築するのは簡単かもしれません。

.NETにRを埋め込んだり、相互運用するにはR(D)COMというCOMブリッジを利用します。
(この利用方法についても過去記事を参照してください。)

ちなみにこのCOMブリッジはScilabと接続することもできます。

Scilabのほうは、Rに比べるとすこし盛り上がりに欠ける印象を持っていましたが、今、ちょっとのぞきに行ったところ、Toolboxもすこしずつ充実してきたようですね。

ちなみに画像処理関係のツールボックスだけでも規模の大小の差こそあれ、10種類くらいはありそうです。

http://www.scilab.org/contrib/index_contrib.php?page=download&category=IMAGE%20TOOLS

画像処理ライブラリとしてのVTK

VTKはどちらかというと3D可視化ライブラリという印象がありますが、2D/3Dを含めた豊富な画像処理アルゴリズムがすでにライブラリ化されています。

Vtk User's Guide: May 2000

Vtk User's Guide: May 2000

The Visualization Toolkit

The Visualization Toolkit

とくに、画像処理というと2D画像の処理や3Dポリゴン画像の処理などの話が多いですが、VTKのライブラリに含まれるものは3Dボリューム画像に対する処理アルゴリズムで、2D画像に対する処理を3Dに拡張したような形で解析することができます。

こちらも.NET上で使用するには、KitwareのActiViz/COMという商用COMコンポーネントを使用するか、VTK.NETというVTKの.NET移植版を利用します。(こちらも過去記事をご覧ください。)