こんにちは、@24guchiaです。
弊ブログをTwilioしか書かないブログかな?
と思われている方もいらっしゃるでしょうが、
Twilio以外も書きます。
統計解析向けのR言語というものを今回は使い、
平均応答時間の分析をしました。
Twilioも関係はありますが、今回はRがメインです。
そもそもTwilioを利用しているのは、
電話機をソフトフォンにするのはメインの狙いではなく、
データを用いた業務改善施策を行うためにTwilioを選択しています。
これについては、下記記事で触れているので、
読んでみてください。
通話などのデータが取れるTwilioとデータを分析できる
Rの組み合わせはなかなかおもしろいです。
目次
そもそも応答時間とは?
コールセンターのKPIの一つで、
着信があってから、オペレーターが対応するまでの時間です。
短ければ短いほどよい指標です。
コールセンターでなくても、電話応対をする会社であればよく
「3コール以内に取るように!」と先輩社員などから
言われたことがあるかもしれません。
応答時間を短くし、お客様を待たせないようにするのは、
一般的な会社員でもご存知かと思います。
3コール以内
って結局何秒なんだ?とまで考える方は少ないかもしれませんが、
9秒
と考えてもらって構いません。
日本では呼び出し音は1秒音が鳴り、2秒待機するのが1コール。
1コール3秒なので、9秒です。
法律でも定められているため、基本的には
平均応答時間を9秒以内にすることを目指していけばよさそうです。
https://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA%E9%9F%B3
R言語を選択した理由
社内勉強会でR言語もくもく会という会が、毎週月曜日に行われていて、
それに参加しているからです。
社内のデータサイエンティストである@SKUEさんが主催で、
R言語で何ができるかの説明や、
もくもくした結果に対するフィードバックをくれる貴重な場で、
毎週楽しく参加しています。
Rだと、ggplot2
というグラフ描画が得意なパッケージが使え、
かなり優秀だと思いました。
アウトプット
こんな感じのグラフが出ました。
ggplot2
のgeom_tile
を使って描画しています。
※ データは仮のものです。下記JavaScriptコードでダミーを作成しています
https://github.com/enyuka/rlang_mokumoku/blob/master/src/analyse_phone/data/mk_dummy_data.js
このグラフから分かることは
050xxxxyyyy
の平均応答時間は10秒前後で推移しているので、サービスレベルが高く、
対して、0120xxxyyy
は平均応答時間が14秒前後で推移しています。
そのため、この番号はサービスレベルが低いと言わざるをえません。
この番号に関しては、受電できる人を増やしたり、
IVRを用いて、そもそも受電しないなどの施策を行い、
改善をすることが求められます。
こういう提案を勘ではなく、ビジュアル化により誰が見てもわかる形式で
データを元に決定できるのでとてもいいですね。
以下、実装についてです。
コード
どういうコードになったかの説明をします。
Githubはこちら
使ったデータ形式
MMDD_MMDD
という形式のディレクトリの1ヶ月分を用意- 例:
0701_0702
,0702_0703
…
- 例:
- 各ディレクトリには
+8150xxxxyyyy.csv
という形式のCSVが入っている - CSVの中身は1列目にConferenceSid,2列目が応答時間です
- Githubにあげているデータは仮のデータです
乱雑データと整然データ
データ分析しづらいデータを乱雑データ
、
データ分析しやすいデータを整然データ
と言います。
乱雑データ
乱雑データは下記のようなデータ。
date | 050xxxxyyyy | 0120xxxyyy |
---|---|---|
0701 | 10 | 14 |
0702 | 9 | 15 |
エクセルとかでは見やすそうなデータですね。
セルの中身はその日の平均応答時間です。
当初、このような形式にする必要があると思って、
悪戦苦闘していましたが、ggplotに渡すに当たり、
引数がxとyしか指定できず、
なんか違うっぽいな・・・と思い、@SKUEさんレビューいただき、
整然データについて教えてもらいました。
整然データ自体は下記惑星本で学んでハイライトまでしていたのですが、
ちゃんと理解できていませんでしたね?
ちなみにこの惑星本は@SKUEさんにも、Tokyo RのSlackでもおすすめされました。
とてもいい本だと思います。
整然データ
整然データの定義は下記です。
上で紹介した惑星本こと、RユーザのためのRStudio[実践]入門から引用します。
- 1つの列が1つの変数を表す
- 1つの行が1つの観測を表す
- 1つのテーブルが1つのデータセットだけを含む
出典元: RユーザのためのRStudio[実践]入門
先の乱雑データは1列目は日付の変数ですが、
各番号は各行の見出し、平均応答時間は行列にまたがってしまってます。
上で紹介した雑然データを整然データをしたのが下記です。
date | number | sec |
---|---|---|
0701 | +8150xxxxyyyy | 10 |
0702 | +8150xxxxyyyy | 9 |
0701 | +81120xxxyyy | 14 |
0702 | +81120xxxyyy | 15 |
整然データの定義に則ったデータ形式です。
各列は1つの変数ですし、1つの行はその日のその番号の平均応答時間です。
これで整然データができたので、これをggplot2
で描画し、
色の調整をすることで、できたのがアウトプットの図です。
ちなみに乱雑データを苦労して作ったので、
せっかくなのでこれもGithubに上げてあります。
https://github.com/enyuka/rlang_mokumoku/blob/master/src/analyse_phone/messy_analyse_speed_of_answer.r
まとめ
Twilioの強みはオムニチャネルやコンタクトセンターを作れるFlexなど
色々とありますが、データを分析しやすい形で残せるのも
大きな特長の一つです。
残したデータを分析し、データドリブンで業務改善を進めていきましょう。