Upload
owllearn
View
1.254
Download
4
Embed Size (px)
Citation preview
Copyright © BizReach, Inc. All Right Reserved.
初心者のためのRとRStudio入門
Vol.2
株式会社ビズリーチ
サービス企画部
荒金 万琴
Copyright © BizReach, Inc. All Right Reserved.
自己紹介
荒金 万琴(あらがね まこと)
福岡県出身→進学のため京都へ(4年間)→就職を期に東京へ(5年目)
前職:法人向けソフトウェアメーカーにてマーケティングを担当(4年間)
• 自社製品サイト、カタログ等の制作• イベントの主催、出展• 製品リリースの進行管理 などなど
サービス自体の企画・データサイエンティストを志して転職
2015年4月 ビズリーチ入社(3ヶ月目)• 自社サービス(ビズリーチ:会員制転職サイト)
の会員属性の調査• 会員向け施策の効果検証 などなど
2
Copyright © BizReach, Inc. All Right Reserved.
初心者のためのRとRStudio入門
Vol.2
3
Copyright © BizReach, Inc. All Right Reserved.
初心者のためのRとRStudio入門
Vol.2
初心者による
その分、より初心者に沿った内容になっている…と感じていただければ嬉しいです。
4
Copyright © BizReach, Inc. All Right Reserved.
アジェンダ
Rについて(3分)
• Rとは
• Rによる分析の流れ
ハンズオン(50分)
• 分析の流れに沿って操作してみる
アンケート(2分)
5
Copyright © BizReach, Inc. All Right Reserved.
参加者のみなさまに質問
Rを使ったことはありますか?
本当に初心者ですか??
6
Copyright © BizReach, Inc. All Right Reserved.
今日のゴール
ご自身で手を動かして、Rの操作を体験する
「Rでこんなことができるんだ」と
なんとなくわかる
もう少しやってみたいな、と興味がわく
(といいな)
7
Copyright © BizReach, Inc. All Right Reserved.
まずは
R って何者?
8
Copyright © BizReach, Inc. All Right Reserved.
テトリスみたいなゲームを作りたい
0と1しかわかりませーん
自然言語プログラミング言語
(仲介)機械語
Rとは?
9
分析に特化したプログラミング言語
統計分析のデファクトスタンダードへと進化
• 「教育現場から実務・研究現場へ永続的に利用可能」 by Wikipedia
コンパイルが不要で、対話的に分析が可能
Copyright © BizReach, Inc. All Right Reserved.
Rとは?
分析に特化したプログラミング言語
統計分析のデファクトスタンダードへと進化
• 「教育現場から実務・研究現場へ永続的に利用可能」 by Wikipedia
コンパイルが不要で、対話的に分析が可能
パッケージの導入で、非常に多くの分析や機械学習が可能
• 自分でプログラムを書かなくても、世界中の優秀なエンジニアが作ったパッケージをすぐ使える!しかも無料!
Excelよりも圧倒的に早く、数百MBまで対応が可能
• 詳しくは次スライド参照
10
Copyright © BizReach, Inc. All Right Reserved.
Rの守備範囲
11
Copyright © BizReach, Inc. All Right Reserved.
Rの守備範囲
一言でいうと「そこそこできる」
12
Copyright © BizReach, Inc. All Right Reserved.
Rによる分析の流れ
13
設計 前処理 分析
Copyright © BizReach, Inc. All Right Reserved.
Rによる分析の流れ
利用するパッケージの読み込み
分析したいデータの読み込み
(必要に応じて)前処理
分析の実行
レポートの作成(がRでできるパッケージも!)
14
設計 前処理 分析
このあたりを
流れに沿って
やってみます!
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
15
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
16
Copyright © BizReach, Inc. All Right Reserved.
RとRStudioのインストール
R本体のインストール
• 注意:こちらを先にインストールしてください!
RStudio(総合開発環境)のインストール
• ヘルプの検索
• ファイルシステムの検索
• 定義済み変数の確認
• HTML・PDF・スライドでの出力
• 分析プロジェクトの管理 など
両方インストールできたら、RStudioを起動してください。
17
Copyright © BizReach, Inc. All Right Reserved.
分析プロジェクトの用意
分析案件ごとに「プロジェクト」を作成
新規スクリプトファイル (R script) を作成
18
プロジェクト R script
R script
R script
プロジェクトを作って、コーディングの準備をします。
Copyright © BizReach, Inc. All Right Reserved.
補足:パッケージについて
※今回は、デフォルトの機能だけで分析を行います。
パッケージの多くはCRANやGithubで公開
初めて使うパッケージはインストールが必要
起動のたびにパッケージを読み込む
19
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
20
Copyright © BizReach, Inc. All Right Reserved.
サンプルデータ
Rには多くのサンプルがあり、分析の練習ができる
代表的なサンプル
• iris:あやめの種類とサイズ
• women:米国の30-39歳の女性の身長と体重
• airquality:気象条件とオゾン量
• Titanic:タイタニック号が沈没したときの乗員乗客
など100種類以上
21
Copyright © BizReach, Inc. All Right Reserved.
サンプルデータを見てみよう
head(iris)
head() で先頭6レコードを表示
22
Copyright © BizReach, Inc. All Right Reserved.
データの構造を見てみよう
str(iris)
str() でデータの構造(=stracture)を確認
データフレーム?
• Rでデータを取り扱うためのデータの構造
• Excelの2次元の表のイメージ
23
Sepal.Length 5.1 4.9 4.7
Sepal.Width 3.5 3 3.2
Petal.Length 1.4 1.4 1.3
Copyright © BizReach, Inc. All Right Reserved.
データの構造を見てみよう
str(iris)
150個のレコードで5つの属性をもつ
• 属性:項目、カラム
4つの数値属性と1つの水準属性(3水準)
• 水準属性:○個の選択肢から選ぶsetosa, versicolor, virginica
24
Copyright © BizReach, Inc. All Right Reserved.
基礎集計をやってみよう
summary(iris)
最小値・25%点・中央値・平均値・75%点・最大値
を計算
水準属性の場合は、各々の個数を計算
25
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
26
Copyright © BizReach, Inc. All Right Reserved.
分析したいデータを読み込もう
ダウンロードしたCSVファイル “weather.csv” を利用
• 日付、都市、平均気温、最高気温、最低気温、雨量、日照量
いま使っている R script ファイルと同じ場所に置いて
ください!
27
Copyright © BizReach, Inc. All Right Reserved.
分析したいデータを読み込もう
CSVファイルを読み込んで、変数 df に格納する
• df <- read.csv(file = “weather.csv”, fileEncoding = “cp932”)
dfの構造を確認
• str(df)
• dayのデータが、Factor(水準属性)として読み込まれている!
28
ファイル名を指定 文字コードはShift-JIS<- の右にあるものにdf という名前をつける
Copyright © BizReach, Inc. All Right Reserved.
日付をfactorからdateに変更する
データ型(その項目に入るデータの種類)の変更
• df$day <- as.Date(df$day)
dfの構造を再度確認
• str(df)
29
df 内にある「day」という項目
データ型を日付に変更
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
30
Copyright © BizReach, Inc. All Right Reserved.
条件抽出をしてみよう
subset() で条件に合致したデータだけを抽出する
条件とするものの例
• date :日付、時期
• factor :水準(選択肢、分類)のうちどれに該当するか
• num :数値
31
Copyright © BizReach, Inc. All Right Reserved.
条件抽出:date
2013年のデータだけを抽出
• df_2013 <- subset(df, "2013-01-01" <= df$day
& df$day <= "2013-12-31")
• head(df_2013)
32
dfのdayが 2013年1月1日以降
dfのdayが 2013年12月31日以前
抽出結果をdf_2013 に格納
Copyright © BizReach, Inc. All Right Reserved.
条件抽出:factor
東京のデータだけを抽出
• df_tokyo <- subset(df, df$city == "Tokyo")
• head(df_tokyo)
33
イコールは2つです!
Copyright © BizReach, Inc. All Right Reserved.
条件抽出:num
雨が降ったときのデータだけを抽出
• df_rain <- subset(df, df$rain > 0)
• head(df_rain)
34
Copyright © BizReach, Inc. All Right Reserved.
演習問題
下記の条件で抽出してください。
東京で最高気温が37度以上となった日のデータ
35
Copyright © BizReach, Inc. All Right Reserved.
演習問題
東京で最高気温が37度以上となった日のデータ
• city が Tokyo
• temp_max が 37以上
subset(df, df$city == "Tokyo" & df$temp_max >= 37)
subset(df, city == "Tokyo" & temp_max >= 37)
subset(df_tokyo, temp_max >= 37)
36
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
37
Copyright © BizReach, Inc. All Right Reserved.
グラフを書いてみよう
散布図
• 縦軸、横軸に項目を設定し、データをプロットする
• 2項目の相関関係をみるときによく使う
ヒストグラム
• データをいくつかの区間に分けてその区間のデータを集め、データの度数(数)を棒グラフで表す
• データの分布状況を視覚的にとらえられる
38
Copyright © BizReach, Inc. All Right Reserved.
散布図
東京の平均気温と最高気温の関係
• せっかくなのでdf_tokyoを使います
• plot(df_tokyo$temp_avg, df_tokyo$temp_max,
xlab = "avg", ylab = "max", col = "orange")
39
temp_max をy軸にとるtemp_avg をx軸にとる
x軸のラベル y軸のラベル
Copyright © BizReach, Inc. All Right Reserved.
ヒストグラム
東京の最高気温と最低気温の幅の分布
• diff <- df_tokyo$temp_max - df_tokyo$temp_min
• hist(diff, breaks = 20, col = "orange",
main = "difference")
40
temp_max と temp_min の差をとって、diff とする
diffのデータを20区間に分ける
グラフのタイトル
max(diff)=19.6min(diff)=1
Copyright © BizReach, Inc. All Right Reserved.
ハンズオンの内容
インストールしよう
サンプルデータを見てみよう
分析したいデータを読み込もう
条件抽出をしてみよう
グラフを書いてみよう
Rを使った分析の例:サイトの改善
41
Copyright © BizReach, Inc. All Right Reserved.
分析の例:サイトの改善
新しいLPの方が効果がある?それとも偶然の差?
改善前後の有意差検定
結果の解釈
42
いままでのLP 新しいLP
Before After
ページビュー 1200 1000
コンバージョン 55 60
コンバージョン率 4.6% 6.0%
Copyright © BizReach, Inc. All Right Reserved.
有意差検定
試行回数(PV)と成功回数(CV)を格納
• n にPVの数を設定、x にCVの数を設定する
数字は After → Before の順番で配置
• n <- c(1000, 1200)
• x <- c(60, 55)
• cはベクトルを作成する関数ですが、ここではあまり気にしないでください
– 参考サイトhttp://cse.naro.affrc.go.jp/takezawa/r-tips/r/12.html
43
Copyright © BizReach, Inc. All Right Reserved.
検定の実行
比率の差を検定
CVRは改善されたが、有意差があるのか?
• prop.test(x, n, alternative = c("greater"))
44
※これは「改善の前後で、どちらがよりCVRが大きいか」を比較する場合の方法です。新しいLP 2つを同時に公開して比較する場合には、また違う方法をとります。
Copyright © BizReach, Inc. All Right Reserved.
どういう意味?
本当のCVRが同じ(改善前後で差がない)であるのに、
このCVRの差が「たまたま」生じる確率は
8.22%よりも少ない
統計的な解説はここでは割愛します…
• 参考サイトhttp://labs.xica-inc.com/2014/07/difference-between-t-value-and-p-value/
45
Copyright © BizReach, Inc. All Right Reserved.
で、どうするか
同じ結果でも、人によって解釈に相違
• Aさん「確率が8%以下のことが起こっているなら偶然じゃないでしょ」→有意水準8%の元で、有意な効果があった
• Bさん「1%以下の確率で厳しく判断すべきで、これは偶然の範囲内だ」→有意水準1%の元で、有意な効果があったとはいえない
結局、有意差の考察は「分析者の考え方」しだい
→分析者が背景知識を動員して、適切な有意水準を
決めることが重要
• 通常は5% or 1%ですが、分析対象によって適切な値は異なります46
Copyright © BizReach, Inc. All Right Reserved.
今日のゴール
ご自身で手を動かして、Rの操作を体験する
「Rでこんなことができるんだ」と
なんとなくわかる
もう少しやってみたいな、と興味がわく
(といいな)
47
Copyright © BizReach, Inc. All Right Reserved.
さいごに
connpassグループ
「OWL.learn」
6/18(木) BIツール「Tableau」勉強会
R勉強会続編、数学講座なども企画中
48
Copyright © BizReach, Inc. All Right Reserved.
さいごに
ビズリーチで一緒に働いていただける
仲間募集中です!
49