R言語 - カレンダーから行動特性プロファイル分析

# はじめに
　このTipsでは、igraph ライブラリ(注1)を使用した行動特性プロファイル分析をご紹介します。具体的には、ハイパフォーマーとローパフォーマーでは、3ヶ月間の間に接する人数に違いがあるのかを分析しています。なお、情報源となるデータは、個人が使用しているコラボレーションツールのCalDAVカレンダーを使用します。処理フローは次の通りです。
![image](https://qiita-image-store.s3.amazonaws.com/0/106773/bcb5e7da-595b-185f-6691-8ba9a9af99b6.png)


# カレンダー情報を取得する
　カレンダー情報は、[CalDAVカレンダーを操作する](http://qiita.com/uchim/items/3b209bc0a9ce424afa8d)でご紹介した手順でR 環境に取り込んでいます。変数「tabIndi」には、1列目:打合せ回数、2列目:メールアドレスを格納しています。

```R:変数「tabIndi」のサンプル
> head(tabIndi)
  X0                              X0.1
1  1       luke.skywalker@starwars.com
2  2     anakin.skywalker@starwars.com
3  2          leia.organa@starwars.com
4  3             han.solo@starwars.com
5  3        bi-wan.kenobi@starwars.com
6  3             Ben.Solo@starwars.com
>
```

# グラフ描画する
　サンプルスクリプトを分析対象のカレンダー毎に実行します。
▼サンプルスクリプト

```R:R
# グラフ描画用ライブラリの読み込み
library(igraph)
# 作業ディレクトリの指定
setwd("working_dir")
# 除外キーワードリストの読み込み
e1 <- read.table('Exclude.txt', header=T)
# 除外用フラグを追加(3列目)
tabIndi <- cbind(tabIndi, c(rep(0, times=nrow(tabIndi))))
# 除外キーワードをgrep
y <- apply(e1, 1, function(x) {return (grep(x, tabIndi[,2]))})
# 変数「y」を添字で操作できるように加工
z <- NULL
for (i in 1:length(y))
{
  for (j in 1:length(y[[i]]))
  {
    z <- rbind(z, y[[i]][j])
  }
}
# 重複排除＆ソート
a <- sort(unique(z))
# 除外用フラグオン
tabIndi[a, 3] <- 1
# 対象データを抽出
tabIndi2 <- tabIndi[tabIndi[, 3] != 1,1:2]
# グラフ属性の表示の有効化
igraph.options(print.graph.attributes=TRUE)
igraph.options(print.vertex.attributes=TRUE)
igraph.options(print.edge.attributes=TRUE)
# ミーティング回数を集計
t1 <- as.data.frame(table(tabIndi2$X0.1))
# ラベルを追加
t2 <- cbind(c("ハイパフォーマー"), t1)
# グラフ作成
wng<-graph.data.frame(t2[t2$Freq < 300,]) 
# 頻出度によって重みを付ける
E(wng)$weight <- E(wng)$Freq
# ただし、10より頻出度の高いものは11にする
E(wng)[E(wng)$Freq > 49]$weight <- 50
# グラフ描画する
tkplot(wng, layout=layout.fruchterman.reingold, vertex.label=V(wng)$name, vertex.label.color="blue", edge.width=E(wng)$weight*0.2, edge.curved = TRUE, canvas.width=1200, canvas.height=600)
```

# 行動特性プロファイル分析で分かったこと
　下図は個人ごとのネットワークです。ノードは人、エッジは接したことを表しています。ハイパフォーマーはローパフォーマーに比べて、3ヶ月間の間に接する人数が多い傾向が見受けられました。もちろん、これだけですべての行動特性をプロファイリングできるわけではありません。あくまでも1つの側面として、洞察と対話のための場を与えるものになると思っています。
![image](https://qiita-image-store.s3.amazonaws.com/0/106773/ed0a9d2d-6693-9757-fab7-4db91fbbc7d2.png)


# ご参考
## 個人のポテンシャルは、どうすれば最大化できるのか？
　個人のポテンシャルを最大化するための要素を１つだけ挙げて下さい、と質問されたら皆さんはどう答えますか？私の場合、真っ先に「ネットワーク」と答えるでしょう。ハイパフォーマーは、ローパフォーマーとは違う何かの行動をしている、その行動というのがネットワークだと思っています。
　組織として、または、個人として、何らかの戦略を持って活動しないと2つの理由からポテンシャルは落ちていきます。1つ目はマクロ観点で、市場規模の成長が鈍化するからです。2つ目はミクロ観点で、組織をファンクションと見立てて、戦略として資本調達と資本配分を考えた場合、取り得る選択肢が限られてしまうからです。おそらく、通常の企業内の組織であれば、社内のキャッシュフローと既存の事業への投資に限られてくるのではないでしょうか。

## 組織のセオリー「外部と内部の戦略で均衡を保つ」
　ここで少し、個人の視点から離れて、組織の視点をご説明しましょう。一般的に、組織は外部と内部の2つの戦略で均衡を保つのがセオリーだと言われています。ここでいう外部というのは、ポジショニング派（～1980年頃まで）を指していて、外部環境が大事で、儲かる市場で儲かる立場を占めれば勝てるという考えです。大テイラー主義の流れを汲む、定量的分析や定型的計画プロセスで経営戦略は理解でき解決できるという戦略です。内部というのは、ケイパビリティ派（1980年～）を指していて、内部環境が大事で、自社の強みがあるところで戦えば勝てるという考えです。大メイヨー主義の流れを汲む、企業活動は人間的側面が重く定性的議論しか馴染まないという戦略です。
　ただし、それぞれには欠点があって、外部のアプローチは、組織が多次元化すると、インパクトが減って単に組織を複雑にするだけですし、内部のアプローチは、仲良しクラブだと、厳しい取引をせざるを得ない場面で足かせになります。では、大事にするのは、外部なのでしょうか？それとも、内部なのでしょうか？近年は、外部と内部の2つの戦略で均衡を保つアダプティブ戦略（2000年～）がセオリーになっています。やってみなくちゃわからない 、どんなポジショニングでどのケイパビリティで戦うかは試行錯誤して決めるという戦略です。例えば、A/Bテストは、アダプティブ戦略のフレームワークの一つです。

## 個人のセオリー「ネットワーク」
　一方で、個人のポテンシャルを最大化するのに注目すべきは、中身の相互関係、つまり「ネットワーク」だということです。ネットワークといえばインターネットですが、仕組みを簡潔にいうならば、アドレッシングとルーティングの仕組みです。ジョナサン・ジットレインの言葉を借りれば、「これは親切と信頼に依存したシステムであり、とてもデリケートで脆弱な面もあります。たとえるなら、データをある場所から別な場所へ動かすのに、運送会社みたいにはやりません。それよりは観客席に近いです。何かスポーツを座席に座って観戦しているとして、誰かがビールを注文したとします。それは通路で手渡され、周りの人は隣席の責務として、自分のズボンを汚すリスクを冒しながら、ビールを目的地へと受け渡していくのです。そのためにお金を払う人はいません。隣の席にいる者の努めというだけです。そしてこれは、インターネットをパケットが動いている仕組みでもあるのです。」となります。
　このように、ネットワークがあるということは、個人の行動に対する責任を個々人が自覚した上で周りとのつながりができている状態になると思います。多くのネットワークがあるほど、他の経路からもアクセスできるので、１つのエラーがあったとしても修復することが可能です。つまり、インターネットのように、脆弱な面もあるけど他の経路からアクセスして修復することができるような仕組みである「ネットワーク」こそが個人のポテンシャルを最大化できると、私は考えています。

# 注釈
注1 サンプルスクリプトは、igraph 0.7.1 を使用しています。

# リファレンス
ウィリアム・N・ソーンダイク・ジュニア『The Outsiders』（2014/1/20, パンローリング, 350ページ）
三谷宏治『経営戦略全史』（2013/4/27, ディスカヴァー・トゥエンティワン, 432ページ）
ジョナサン・ジットレイン [親切に支えられたWeb](http://www.ted.com/talks/jonathan_zittrain_the_web_is_a_random_act_of_kindness?language=ja)