Kosugitti's BLOG

アンドロイドは正規分布の夢を見るか

この画面は、簡易表示です

2015 / 5月

HijiyamaR#2でお話ししてきました

ということでHijiyama.R(#2)別名Kazutan.R(#2)で発表してきました。

@kazutanから「距離と分類の話をしてください」というお題だけもらっていたんだけど,どこをどうやってまとめたものかな,と考えるより先に出てきたのが,吉田戦車の「伝染るんです」のあのシーンを使いたい,という所謂ネタ画像。

冒頭でいきなりお客さんを掴むか,ドン引きされるかのどっちかだと思っていましたが,後でTLをみると受けていたようで良かったです。

距離と分類,というのは非常に根本的な話で,そこさえ押さえれば後は多変量解析を全部ひとくくりで考えることができる,というのが私の理解&メッセージ。後半に因子分析のQテクニックを入れたのは実はちょっとしたステマでもあったのですが,これはもう少しステておきます。

内容については資料を公開しますので見てください。

距離と分類の話 from 考司 小杉

 

次回は「関数の作り方」とか「for文をつかってみよう」とかいう話をしてみたいな。もちろんRでfor文はご法度なのですが,そうではなくて,アルゴリズムを理解するために,という感じの話ってニーズがあるんじゃないかと思っています。



ドミナンスデータの交互平均法

西里先生の本,「行動科学のためのデータ解析―情報把握に適した方法の利用」の5章からは順序評定データや一対比較データの双対尺度法の話で,データ行列をドミナンス行列に変換してから分析すると良い,と書いてある。
ここでいう分析は交互平均法のことで,交互平均法のコードは前にも書いたから,特に深く追求してませんでした。

最近たまたま指導学生が一対比較データを取ったので,これでやってごらんと本だけ渡して,交互平均法から何からやり始めたんだけど,ドミナンスデータ担ったところで結果が合わないとの相談が。んなわけあるかい,と計算してみたら,おや俺のコードでも結果が合わないw

ということで慌てて復習,再チャレンジしました。
ポイントはp.84にもあるんだけど,

  • 交互平均法の計算につかう行和・列和は,N \times nのドミナンス表の列和と行和にはそれぞれn(n-1)N(n-1)を入れる」
  • 交互平均法の計算につかう総和はNn(n-1)となる

ということ。そしてこれはテキストにはないことなんだけど,計算途中のベクトルを中心化する「平均値を引く」という作業が要りません。ドミナンス数の行和・列和は0なので,考える必要がないということみたい。

ということで,交互平均法のコードで平均ベクトルを引くところを取り除き(コメントアウトしてます),行和(mg.row),列和(mg.row),総和(mg.t)を計算し直したドミナンス表交互平均法のコードは以下の通りです。

[crayon-5bcac3c50c931525782930/]

ためにしテキストに載っているデータを使って計算してみましょう。表5.1の,5人の評定者が8人の受験者を順序付ける(1位が1,8位が8)という例。

[crayon-5bcac3c50c95e765055535/]

[crayon-5bcac3c50c96a536366323/]

これをドミナンス表に変える関数も作ったよ。

[crayon-5bcac3c50c971290879467/]

[crayon-5bcac3c50c977571091275/]

そしてこれを上で作った関数に入れます。

[crayon-5bcac3c50c97d694860862/]

[crayon-5bcac3c50c982679914218/]

はい,第一固有値がでました。

という感じです。



集団とは人間関係行列の固有値である

先日の飲み会で少し漏らした,ちょっとおかしな話を書いておきます。

人間関係の強さを行列で表したとします。なんとなくだけど,関係の強さが-1〜1に標準化されているとして,弱い3人集団だったら,こんな感じ。

[crayon-5bcac3c50ddea001997240/]

[crayon-5bcac3c50ddf5731626157/]

[crayon-5bcac3c50ddfb460749382/]

[crayon-5bcac3c50de00046100609/]

第一固有値が0.6で,これは1よりも小さい。ガットマン基準で考えると,固有値1に満たない因子は因子として認めないから,これは有意味な因子がない行列。

強い関係の集団だとします。例えば0.7ぐらいの強さ。

[crayon-5bcac3c50de06409167875/]

[crayon-5bcac3c50de0a558379917/]

[crayon-5bcac3c50de10302723982/]

[crayon-5bcac3c50de14063149626/]

今度は2.1なので,これで意味のある因子がひとつ得られたというところでしょうか。

もちろんこれは全部の要素が同じ行列だから,強さが0.333…であれば固有値1.0を出すことはできるんです。
数学的には何も面白くない。

でも,人の関係というのは強弱があるので,多少事情は違います。非対称行列になるし,対角項はどのように考えるか(自尊心?)についても諸説あるでしょう。でも,基本的な考え方は関係が強くなると共通因子として抽象的なものの実体が固まってくるというもので,まさに集団は人間関係行列における固有値であるということができるのではないでしょうか。

ちなみに細かい説明は省きますが,非対称行列から得られる固有値は複素数になり,そのままだと寄与率をうまく計算できないので,Chino’s HFMで分析する必要がありましょう。

Chino’ HFMは非対称成分を虚数にした複素行列での非対称行列にしてから固有値分解すると,固有値が実数で得られるよという話で,Rで簡単に実行できます。

[crayon-5bcac3c50de1b834897829/]

[crayon-5bcac3c50de1f228038944/]

[crayon-5bcac3c50de25736711978/]

[crayon-5bcac3c50de29245860902/]

この時の第一固有値の寄与率は,

[crayon-5bcac3c50de2f017550972/]

[crayon-5bcac3c50de34641880774/]

これぐらいですから,十分な大きさでない。これが比較的強い関係だと,

[crayon-5bcac3c50de39539399945/]

[crayon-5bcac3c50de3d467453272/]

[crayon-5bcac3c50de42504675560/]

[crayon-5bcac3c50de47608228340/]

[crayon-5bcac3c50de4d757274982/]

[crayon-5bcac3c50de52046832883/]

となります。

要素間の関係の強さがある一定の基準を越えると,抽象的な関係が像を結ぶ,これが集団だと私は考えています。

人間の面白いところは,例えば今3人集団でやっているので関係行列は3by3ですが,その固有値が1をこえて実体として把握できるようになると,それを変数として4by4の行列に増えて考える,というところです(「みんな」という要素を考える)。

逆に弱まると消えます。随時,像を結んだり結ばなかったりする,そういう対象を追い求める集団力学は,そもそもこういうところから考えていかないと成果を上げられないと思います。



研究は失敗を積み重ねるものだよ,という例

こういう話があって,
相関係数を出しているんだけどどう見てもU字に分布しているから,このままじゃダメだよね,というのは誰でも思いつく話。

ちょっとだけ遊んでみる。ちょっとだけね。

[crayon-5bcac3c50e8af834287608/]

[crayon-5bcac3c50e8ba213430890/]

[crayon-5bcac3c50e8bf716863779/]

plot of chunk unnamed-chunk-1

相関係数が0.28,一応回帰分析をしてみたけれども,まぁこういう感じです。

[crayon-5bcac3c50e8d5310149062/]

[crayon-5bcac3c50e8dc016770730/]

ということで,ここで21世紀の相関係数MICに登場していただこうじゃないか。

参考

[crayon-5bcac3c50e8e1480397812/]

・・・イマイチ改善されんか。ちぇ。

データは自分で作ったわけじゃないけど,isHeroineっていう変数はきっとヒロインかどうか,というダミー変数だよな。であればここの違いがあるかもしれないので,試してみるか。

[crayon-5bcac3c50e8e7107300401/]

[crayon-5bcac3c50e8eb080220610/]

[crayon-5bcac3c50e8f1572660989/]

[crayon-5bcac3c50e8f5191096492/]

・・・イマイチだなぁ。ちぇ。




top