SlideShare a Scribd company logo
1 of 24
Download to read offline
データアーティスト株式会社
藤田 知樹
第1回Rを用いたデータマイニング概論
データ環境Rの基本的なプログラミング
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page2Page2Page2Page2
アジェンダ
今回はデータサイエンスの基礎の基礎:「データ」について簡単に理解したうえで、「基本的なプログラミング」を通し
てRを体感していきます。
説明
Rで使うデータの種類
データを視覚化する
テクニック
データを集計する方法
基本的なプログラミング
実
行
!
実
行
!
第1部:データについて
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page4Page4Page4Page4
第1部:データについて
第1部では、2つのコンテンツを勉強します。
そのほか、よく使うことになるテクニックを紹介します
扱いやすい、データを集計するプログラミングを紹介します
データを見やすくするための5つの方法を紹介します!
Rで扱う4種類のデータを紹介します!
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page5Page5Page5Page5
Rで使うデータの種類 1/5
Rを操作する上で使う主なデータは以下の4種類あります。
ベクトル 行列 データフレーム
リスト
ベクトル 行列
データ
フレーム
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page6Page6Page6Page6
Rで使うデータの種類 2/5(ベクトル)
以下のコードを実行し、ベクトルを作成してみよう。
要素にアクセスし、性質を見てみよう。
#1
v1=c(1:5)
v1=rep(3,10)
v1=rep(1:3,10)
v1=seq(0,100,3)
v.rand=runif(100) #一様な乱数を発生
v.logic=(0.3>v.rand)
v.dice=round(6*runif(100)+0.5) #サイコロを作る
__________________________________________
#2
v1=c(1:15)
length(v1) #v1の長さを見る
v1[4] #4番目を見る
names(v1)=paste(“value”,1:15,sep=“”)
v1[“value13”]
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page7Page7Page7Page7
Rで使うデータの種類 3/5(行列)
以下のコードを実行し、行列を作成してみよう。
行列の要素にアクセスし、さまざまな操作をしてみよう。
#1
v1=c(1:15) #作成
m1=matrix(v1,nrow=5,ncol=3)
m1 #中身を確認
__________________________
#2
dim(m1)
nrow(m1)
ncol(m1)
length(m1)
m1[3,] #3行目を見る
m1[,2] #2行目を見る
rownames(m1)=c("太郎","二郎","三郎","四郎","五郎") #行に名前を付ける
colnames(m1)=c("power","speed","luck") #列に名前を付ける
m1["三郎","luck"]
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page8Page8Page8Page8
Rで使うデータの種類 4/5(行列)
以下のコードをそれぞれ打ち込んで、行列で計算を実行しよう。
行・列の置換や結合をやってみよう。
#計算
m1=matrix(1:15,nrow=5,ncol=3)
m1+1
m1-3
m1*4
m1/2
m1^2
m2=matrix(rep(1:5,3),nrow=5,ncol=3)
m1+m2
m1-m2
m1*m2
t(m1)%*%m2 #とても大切な演算。第3回で説明
m1/m2
#置換、結合
m1=matrix(1:15,nrow=5,ncol=3)
m2=matrix(rep(1:5,3),nrow=5,ncol=3)
m1[1,]=c(2,4,8) #置換
m.r=rbind(m1,m2) #行が追加されるように結合
m.c=cbind(m1,m2) #列が追加されるように結合
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page9Page9Page9Page9
Rで使うデータの種類 5/5(データフレーム)
以下のコードを実行し、データフレームを作ってみよう。
m1=matrix(1:15,nrow=5,ncol=3)
d1=data.frame(fruit=c("りんご","みかん","ぶどう","すいか","もも"),m1)
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page10Page10Page10Page10
データを視覚化する 1/2
Histogram of iris[, 1]
iris[, 1]
Frequency
4 5 6 7 8
051015202530
4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
2.02.53.03.54.0
Sepal.Length
Sepal.Width
Sepal.Length Sepal.Width Petal.Length Petal.Width
012345
ヒストグラム 散布図 棒グラフ
setosa versicolor virginica
2.02.53.03.54.0
-4 -2 0 2 4
0510152025
x
x^2
ボックスプロット 関数
データを視覚的にわかりやすくとらえる、5つのやり方を身につけよう。
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page11Page11Page11Page11
データを視覚化する 2/2
以下のコードを実行し、データをさまざまに視覚化してみよう。
#ヒストグラム
hist(iris[,1])
_______________________
#散布図
plot(iris[,1:2])
_______________________
#棒グラフ
iris.mean.val=apply(iris[,-5],2,mean)
barplot(iris.mean.val)
_______________________
#ボックスプロット
boxplot(Sepal.Width~Species, data = iris)
_______________________
#関数
curve(x^2,xlim=c(-5,5)) 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
2.02.53.03.54.0
Sepal.Length
Sepal.Width
Sepal.Length Sepal.Width Petal.Length Petal.Width
012345
棒グラフ
散布図
Histogram of iris[, 1]
iris[, 1]
Frequency
4 5 6 7 8
051015202530
setosa versicolor virginica
2.02.53.03.54.0
ヒストグラム
ボックスプロット
第2部:基本的なプログラミングの習得
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page13Page13Page13Page13
第2部:基本的なプログラミングの習得
第2部では、さらに2つのコンテンツを勉強します。
そのほか、よく使うことになるテクニックを紹介します!
扱いやすい、データを集計するプログラミングを紹介します!
データを見やすくするための5つの方法を紹介しました
Rで扱う4種類のデータを紹介しました
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page14Page14Page14Page14
基本的なプログラミングの習得
1.データの集計 2.繰り返し処理
3.条件分岐 4.自作関数
基本的なプログラミングとして、以下の4つを身につけよう
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page15Page15Page15Page15
基本的なプログラミング(1.データの集計 1/3)
総和 平均 中央値 最大値
分散 標準偏差
etc
…
さまざまな集計量
集計:データを集めて計算し、使いやすい数値にまとめる作業のこと。
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page16Page16Page16Page16
基本的なプログラミング(1.データの集計 2/3)
以下のコードをそれぞれ実行して、データの集計をやってみよう。
v.dice=round(6*runif(100)+0.5)
sum(v.dice) #和
mean(v.dice) #平均
sd(v.dice) #不偏標準偏差
var(v.dice) #不偏分散
summary(v.dice) #複数の統計量
#table
table(v.dice)
v.dice1=round(6*runif(100)+0.5)
v.dice2=round(6*runif(100)+0.5)
dice.mat=cbind(v.dice1,v.dice2)
table(dice.mat) #一つのベクトルの様に扱われる
dice.df=data.frame(v.dice1,v.dice2)
table(dice.df)
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page17Page17Page17Page17
基本的なプログラミング(1.データの集計 3/3)
以下のコードをそれぞれ実行して、データの集計をやってみよう。
#次に、以下を入力して得られる、150個のデータを使ってみよう。
iris
#apply:行列の「行」「列」あるいは「各要素それぞれ」に対して、集計を行う。
apply(iris[,-5],1,sum) #行について集計をする。実際に1行目を合計して確認してみよう。
apply(iris[,-5],2,sum) #列について集計をする。
apply(iris[,-5],2,summary) #列について集計をする。
#tapply:グループ化された変数に対して、グループごとに集計を行う。
#以下では、5列目の分類に基づいて、1列目の平均をそれぞれとっています。
tapply(iris[,1],iris[,5],mean)
#by:以下では、5列目の分類に基づいて、1列目から4列目までのそれぞれに集計量をとっています。
#tapply関数では、引数(カッコの中の値)が同じ長さでなければだめ、という制約があります。
by(iris[,1:4],iris[,5],summary)
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page18Page18Page18Page18
基本的なプログラミング(2.繰り返し処理 1/2)
繰り返し処理:データに対して、コンピュータに同じ操作を自動で複数回行わせるテクニック
NO!
繰り返し処理
リンゴを10個買いに行く
レジへ並ぶ
YES!
10個入れた?
1個かごに入れる
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page19Page19Page19Page19
基本的なプログラミング(2.繰り返し処理 2/2)
以下のコードを実行し、繰り返し処理を体感しよう。
For文とwhile文の違いに注意しよう。
#for:走査したいiの値が決まっている時
n=10
permutation=n
for(i in 1:5){
permutation=permutation*(n-i)
}
permutation #出てきた値を確かめよう
#while:ある条件の時
total.damage=0
while(total.damage<5){
total.damage=total.damage+runif(1)
}
permutation #出てきた値を確かめよう(その2)
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page20Page20Page20Page20
基本的なプログラミング(3.条件分岐 1/2)
条件分岐:ある条件を設定し、それが満たされているかどうかで次に実行する操作を自動で変更できるテクニック
おつかいに行く
スーパー
駄菓子屋さん
帰宅
YES! NO!
条件分岐
寄り道する?
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page21Page21Page21Page21
基本的なプログラミング(3.条件分岐 2/2)
以下のコードを実行し、条件分岐を体感しよう。
val1=4
{
if(val1>=3){ #もしval1が3以上ならval2は1。
val2=1
}
else{
val2=0 #そうでないならval2は0
}
}
val2
val1=3
switch(val1, # switch(文字列,
"1" = print("one"), # "1" のときに実行
"2" = print("two"), # "2" のときに実行
print("not matched") # 一致するものが無い時
)
#val1の数字を1や2に変えて何回かやってみよう。
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page22Page22Page22Page22
基本的なプログラミング(4.自作関数)
自作関数:データを好きなように加工するためには、時には自分で関数を作る必要があります。
たとえば、以下の「CVRを調べる関数」を実行して、コードから関数の性質を考えてみましょう。
get.cvr.error=function(p,n,ety="none"){ #CVRの誤差に関する情報
p.var=p*(1-p)/n
p.sd=p.var^0.5
switch(ety,
"sd"=return(p.sd),
"var"=return(p.var),
print("select type")
)
}
#ここまでが関数の定義
#以下をコピペして実行してみよう。
get.cvr.error(0.1,10,"sd")
get.cvr.error(0.1,10,"var")
get.cvr.error(0.1,10)
cvr.v=0.2*runif(10)
uu.v=round(1000*runif(10))
get.cvr.error(cvr.v,uu.v,"sd") #複数の値を入れた場合
Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page23Page23Page23Page23
まとめ
最後に、今回の内容を簡潔にまとめるとこのようになります。
そのほか、よく使うことになるテクニックを紹介しました!
扱いやすい、データを集計するプログラミングを紹介しました!
データを見やすくするための5つの方法を紹介しました!
Rで扱う4種類のデータを紹介しました!
以上です!お疲れ様でした。

More Related Content

What's hot

リクルートライフスタイルのデータを支える技術
リクルートライフスタイルのデータを支える技術リクルートライフスタイルのデータを支える技術
リクルートライフスタイルのデータを支える技術Yu Yamada
 
いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標圭輔 大曽根
 
位置情報にまつわるデータ補間技術
位置情報にまつわるデータ補間技術位置情報にまつわるデータ補間技術
位置情報にまつわるデータ補間技術Hiroaki Sengoku
 
研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011Preferred Networks
 
tokyo_webmining_no51
tokyo_webmining_no51tokyo_webmining_no51
tokyo_webmining_no51Shu (shoe116)
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)takeuchi-tk
 
機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~
機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~
機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~Takahiro Kubo
 
(道具としての)データサイエンティストのつかい方
(道具としての)データサイエンティストのつかい方(道具としての)データサイエンティストのつかい方
(道具としての)データサイエンティストのつかい方Shohei Hido
 
Jenkins によるレポートスクリプト管理
Jenkins によるレポートスクリプト管理Jenkins によるレポートスクリプト管理
Jenkins によるレポートスクリプト管理Tatsuya Tojima
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010Nobuaki Oshiro
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門Atsushi Hayakawa
 
「R for Cloud Computing」の紹介
「R for Cloud Computing」の紹介「R for Cloud Computing」の紹介
「R for Cloud Computing」の紹介Takekatsu Hiramura
 
[Music×Analytics]プロの音に近づくための研究と練習
[Music×Analytics]プロの音に近づくための研究と練習[Music×Analytics]プロの音に近づくための研究と練習
[Music×Analytics]プロの音に近づくための研究と練習Teruyuki Sakaue
 
rstanで個人のパラメーターを推定した話
rstanで個人のパラメーターを推定した話rstanで個人のパラメーターを推定した話
rstanで個人のパラメーターを推定した話Yuya Matsumura
 
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」tokyorgirls
 

What's hot (20)

リクルートライフスタイルのデータを支える技術
リクルートライフスタイルのデータを支える技術リクルートライフスタイルのデータを支える技術
リクルートライフスタイルのデータを支える技術
 
いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標いまさら聞けない機械学習の評価指標
いまさら聞けない機械学習の評価指標
 
位置情報にまつわるデータ補間技術
位置情報にまつわるデータ補間技術位置情報にまつわるデータ補間技術
位置情報にまつわるデータ補間技術
 
研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011研究・企業・生き方について 情報科学若手の会2011
研究・企業・生き方について 情報科学若手の会2011
 
tokyo_webmining_no51
tokyo_webmining_no51tokyo_webmining_no51
tokyo_webmining_no51
 
Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)Fluentd勉強会 (導入編 TreasureData活用)
Fluentd勉強会 (導入編 TreasureData活用)
 
機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~
機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~
機械学習を活用するための、3本の柱~教育型の機械学習ツールの必要性~
 
(道具としての)データサイエンティストのつかい方
(道具としての)データサイエンティストのつかい方(道具としての)データサイエンティストのつかい方
(道具としての)データサイエンティストのつかい方
 
Rでダイエット
RでダイエットRでダイエット
Rでダイエット
 
Jenkins によるレポートスクリプト管理
Jenkins によるレポートスクリプト管理Jenkins によるレポートスクリプト管理
Jenkins によるレポートスクリプト管理
 
Hadoop Conference Japan 2009 #2
Hadoop Conference Japan 2009 #2Hadoop Conference Japan 2009 #2
Hadoop Conference Japan 2009 #2
 
10分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 101010分で分かるr言語入門ver2.15 15 1010
10分で分かるr言語入門ver2.15 15 1010
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
「R for Cloud Computing」の紹介
「R for Cloud Computing」の紹介「R for Cloud Computing」の紹介
「R for Cloud Computing」の紹介
 
[Music×Analytics]プロの音に近づくための研究と練習
[Music×Analytics]プロの音に近づくための研究と練習[Music×Analytics]プロの音に近づくための研究と練習
[Music×Analytics]プロの音に近づくための研究と練習
 
rstanで個人のパラメーターを推定した話
rstanで個人のパラメーターを推定した話rstanで個人のパラメーターを推定した話
rstanで個人のパラメーターを推定した話
 
rcast_20140411
rcast_20140411rcast_20140411
rcast_20140411
 
一般向けのDeep Learning
一般向けのDeep Learning一般向けのDeep Learning
一般向けのDeep Learning
 
HiroshimaR4_LT_sakaue
HiroshimaR4_LT_sakaueHiroshimaR4_LT_sakaue
HiroshimaR4_LT_sakaue
 
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
 

Viewers also liked

データ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナー
データ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナーデータ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナー
データ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナーData Visualization Japan
 
AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】
AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】
AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】Satoru Yamamoto
 
Rデータフレーム自由自在
Rデータフレーム自由自在Rデータフレーム自由自在
Rデータフレーム自由自在Takeshi Arabiki
 
30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティストSatoru Yamamoto
 
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングAtsushi KOMIYA
 

Viewers also liked (6)

データ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナー
データ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナーデータ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナー
データ・ビジュアライゼーション&ストーリーテリングを学ぶ!ハンズオンセミナー
 
AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】
AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】
AI(人工知能)インフォグラフィックス【時間をかけずにすぐわかる】
 
Rデータフレーム自由自在
Rデータフレーム自由自在Rデータフレーム自由自在
Rデータフレーム自由自在
 
30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト30分でわかる『R』によるデータ分析|データアーティスト
30分でわかる『R』によるデータ分析|データアーティスト
 
Newman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリングNewman アルゴリズムによるソーシャルグラフのクラスタリング
Newman アルゴリズムによるソーシャルグラフのクラスタリング
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 

Similar to 統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト

20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOpsYukako Shimizu
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムRecruit Technologies
 
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みリクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みRecruit Technologies
 
カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!Masataka Kawahara
 
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)Developers Summit
 
ビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分けビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分けTetsutaro Watanabe
 
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編Yutaka Shimada
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展Recruit Technologies
 
Serverless LT 20201202
Serverless LT 20201202Serverless LT 20201202
Serverless LT 20201202ssuserebdd2a
 
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介Masayuki Matsushita
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料Recruit Technologies
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例Tetsutaro Watanabe
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルトBrainPad Inc.
 
マーケジンDMPセミナー final 0528
マーケジンDMPセミナー final 0528マーケジンDMPセミナー final 0528
マーケジンDMPセミナー final 0528Intimate Merger Inc.
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25Nobuaki Oshiro
 

Similar to 統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト (20)

20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps20181206 Jazug DataScience TeamBuilding and DevOps
20181206 Jazug DataScience TeamBuilding and DevOps
 
Rゼミ 1
Rゼミ 1Rゼミ 1
Rゼミ 1
 
ビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラムビッグデータ活用支援フォーラム
ビッグデータ活用支援フォーラム
 
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組みリクルートのビッグデータ活用基盤とデータ活用に向けた取組み
リクルートのビッグデータ活用基盤とデータ活用に向けた取組み
 
カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!カタログDTPのデータを活用しよう!
カタログDTPのデータを活用しよう!
 
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
【14-B-2】グリーを支えるデータ分析基盤の過去と現在(橋本泰一〔グリー〕)
 
WebDB Forum 2013
WebDB Forum 2013 WebDB Forum 2013
WebDB Forum 2013
 
ビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分けビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分け
 
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編さくっとはじめるテキストマイニング(R言語)  スタートアップ編
さくっとはじめるテキストマイニング(R言語)  スタートアップ編
 
ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展ビッグデータ&データマネジメント展
ビッグデータ&データマネジメント展
 
Serverless LT 20201202
Serverless LT 20201202Serverless LT 20201202
Serverless LT 20201202
 
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
Pivotal Greenplumで実現する次世代データ分析基盤のご紹介
 
WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料WebDB Forum 2012 基調講演資料
WebDB Forum 2012 基調講演資料
 
Tokyo r30 beginner
Tokyo r30 beginnerTokyo r30 beginner
Tokyo r30 beginner
 
リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例リクルートを支える横断データ基盤と機械学習の適用事例
リクルートを支える横断データ基盤と機械学習の適用事例
 
SQiPシンポジウムアブストラクト作成のポイント
SQiPシンポジウムアブストラクト作成のポイントSQiPシンポジウムアブストラクト作成のポイント
SQiPシンポジウムアブストラクト作成のポイント
 
機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト機械学習システムのアーキテクチャアラカルト
機械学習システムのアーキテクチャアラカルト
 
マーケジンDMPセミナー final 0528
マーケジンDMPセミナー final 0528マーケジンDMPセミナー final 0528
マーケジンDMPセミナー final 0528
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 

More from Satoru Yamamoto

Ai artificial intelligence in japan
Ai artificial intelligence in japanAi artificial intelligence in japan
Ai artificial intelligence in japanSatoru Yamamoto
 
2014年 日本のコンバージョンニュース
2014年 日本のコンバージョンニュース2014年 日本のコンバージョンニュース
2014年 日本のコンバージョンニュースSatoru Yamamoto
 
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社Satoru Yamamoto
 
デジタルフィールドリサーチ
デジタルフィールドリサーチデジタルフィールドリサーチ
デジタルフィールドリサーチSatoru Yamamoto
 
【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築
【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築
【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築Satoru Yamamoto
 
データアーティストの理念とビジョン~設立一周年記念スライド~
データアーティストの理念とビジョン~設立一周年記念スライド~データアーティストの理念とビジョン~設立一周年記念スライド~
データアーティストの理念とビジョン~設立一周年記念スライド~Satoru Yamamoto
 
効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~
効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~
効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~Satoru Yamamoto
 
お金をかけないランディングページのつくりかた
お金をかけないランディングページのつくりかたお金をかけないランディングページのつくりかた
お金をかけないランディングページのつくりかたSatoru Yamamoto
 
【データアーティスト株式会社】5歳の娘でもわかるDMP
【データアーティスト株式会社】5歳の娘でもわかるDMP【データアーティスト株式会社】5歳の娘でもわかるDMP
【データアーティスト株式会社】5歳の娘でもわかるDMPSatoru Yamamoto
 
営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティスト営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティストSatoru Yamamoto
 
DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法
DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法
DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法Satoru Yamamoto
 
都市工学調査資料
都市工学調査資料都市工学調査資料
都市工学調査資料Satoru Yamamoto
 

More from Satoru Yamamoto (15)

Ai artificial intelligence in japan
Ai artificial intelligence in japanAi artificial intelligence in japan
Ai artificial intelligence in japan
 
2014年 日本のコンバージョンニュース
2014年 日本のコンバージョンニュース2014年 日本のコンバージョンニュース
2014年 日本のコンバージョンニュース
 
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
ABテスト・LPOのための統計学【社内向けサディスティックエディション】データアーティスト株式会社
 
デジタルフィールドリサーチ
デジタルフィールドリサーチデジタルフィールドリサーチ
デジタルフィールドリサーチ
 
【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築
【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築
【DMP x LPO ABテスト】パブリックdmpを用いたデータドリブンペルソナ構築
 
データアーティストの理念とビジョン~設立一周年記念スライド~
データアーティストの理念とビジョン~設立一周年記念スライド~データアーティストの理念とビジョン~設立一周年記念スライド~
データアーティストの理念とビジョン~設立一周年記念スライド~
 
効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~
効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~
効果的なAbテストがwebサイトを成長させる~abテスト成功メソッドのご紹介~
 
お金をかけないランディングページのつくりかた
お金をかけないランディングページのつくりかたお金をかけないランディングページのつくりかた
お金をかけないランディングページのつくりかた
 
【データアーティスト株式会社】5歳の娘でもわかるDMP
【データアーティスト株式会社】5歳の娘でもわかるDMP【データアーティスト株式会社】5歳の娘でもわかるDMP
【データアーティスト株式会社】5歳の娘でもわかるDMP
 
営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティスト営業向け ABテストの統計学 データアーティスト
営業向け ABテストの統計学 データアーティスト
 
DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法
DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法
DMPを用いたデータドリブンLPOによる最適コミュニケーションの発見方法
 
判別分析
判別分析判別分析
判別分析
 
広告業界の俯瞰
広告業界の俯瞰広告業界の俯瞰
広告業界の俯瞰
 
音楽の正体
音楽の正体音楽の正体
音楽の正体
 
都市工学調査資料
都市工学調査資料都市工学調査資料
都市工学調査資料
 

統計を始める方へ①_データ環境Rの基本的なプログラミング|データアーティスト

  • 2. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page2Page2Page2Page2 アジェンダ 今回はデータサイエンスの基礎の基礎:「データ」について簡単に理解したうえで、「基本的なプログラミング」を通し てRを体感していきます。 説明 Rで使うデータの種類 データを視覚化する テクニック データを集計する方法 基本的なプログラミング 実 行 ! 実 行 !
  • 4. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page4Page4Page4Page4 第1部:データについて 第1部では、2つのコンテンツを勉強します。 そのほか、よく使うことになるテクニックを紹介します 扱いやすい、データを集計するプログラミングを紹介します データを見やすくするための5つの方法を紹介します! Rで扱う4種類のデータを紹介します!
  • 5. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page5Page5Page5Page5 Rで使うデータの種類 1/5 Rを操作する上で使う主なデータは以下の4種類あります。 ベクトル 行列 データフレーム リスト ベクトル 行列 データ フレーム
  • 6. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page6Page6Page6Page6 Rで使うデータの種類 2/5(ベクトル) 以下のコードを実行し、ベクトルを作成してみよう。 要素にアクセスし、性質を見てみよう。 #1 v1=c(1:5) v1=rep(3,10) v1=rep(1:3,10) v1=seq(0,100,3) v.rand=runif(100) #一様な乱数を発生 v.logic=(0.3>v.rand) v.dice=round(6*runif(100)+0.5) #サイコロを作る __________________________________________ #2 v1=c(1:15) length(v1) #v1の長さを見る v1[4] #4番目を見る names(v1)=paste(“value”,1:15,sep=“”) v1[“value13”]
  • 7. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page7Page7Page7Page7 Rで使うデータの種類 3/5(行列) 以下のコードを実行し、行列を作成してみよう。 行列の要素にアクセスし、さまざまな操作をしてみよう。 #1 v1=c(1:15) #作成 m1=matrix(v1,nrow=5,ncol=3) m1 #中身を確認 __________________________ #2 dim(m1) nrow(m1) ncol(m1) length(m1) m1[3,] #3行目を見る m1[,2] #2行目を見る rownames(m1)=c("太郎","二郎","三郎","四郎","五郎") #行に名前を付ける colnames(m1)=c("power","speed","luck") #列に名前を付ける m1["三郎","luck"]
  • 8. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page8Page8Page8Page8 Rで使うデータの種類 4/5(行列) 以下のコードをそれぞれ打ち込んで、行列で計算を実行しよう。 行・列の置換や結合をやってみよう。 #計算 m1=matrix(1:15,nrow=5,ncol=3) m1+1 m1-3 m1*4 m1/2 m1^2 m2=matrix(rep(1:5,3),nrow=5,ncol=3) m1+m2 m1-m2 m1*m2 t(m1)%*%m2 #とても大切な演算。第3回で説明 m1/m2 #置換、結合 m1=matrix(1:15,nrow=5,ncol=3) m2=matrix(rep(1:5,3),nrow=5,ncol=3) m1[1,]=c(2,4,8) #置換 m.r=rbind(m1,m2) #行が追加されるように結合 m.c=cbind(m1,m2) #列が追加されるように結合
  • 9. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page9Page9Page9Page9 Rで使うデータの種類 5/5(データフレーム) 以下のコードを実行し、データフレームを作ってみよう。 m1=matrix(1:15,nrow=5,ncol=3) d1=data.frame(fruit=c("りんご","みかん","ぶどう","すいか","もも"),m1)
  • 10. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page10Page10Page10Page10 データを視覚化する 1/2 Histogram of iris[, 1] iris[, 1] Frequency 4 5 6 7 8 051015202530 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 2.02.53.03.54.0 Sepal.Length Sepal.Width Sepal.Length Sepal.Width Petal.Length Petal.Width 012345 ヒストグラム 散布図 棒グラフ setosa versicolor virginica 2.02.53.03.54.0 -4 -2 0 2 4 0510152025 x x^2 ボックスプロット 関数 データを視覚的にわかりやすくとらえる、5つのやり方を身につけよう。
  • 11. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page11Page11Page11Page11 データを視覚化する 2/2 以下のコードを実行し、データをさまざまに視覚化してみよう。 #ヒストグラム hist(iris[,1]) _______________________ #散布図 plot(iris[,1:2]) _______________________ #棒グラフ iris.mean.val=apply(iris[,-5],2,mean) barplot(iris.mean.val) _______________________ #ボックスプロット boxplot(Sepal.Width~Species, data = iris) _______________________ #関数 curve(x^2,xlim=c(-5,5)) 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 2.02.53.03.54.0 Sepal.Length Sepal.Width Sepal.Length Sepal.Width Petal.Length Petal.Width 012345 棒グラフ 散布図 Histogram of iris[, 1] iris[, 1] Frequency 4 5 6 7 8 051015202530 setosa versicolor virginica 2.02.53.03.54.0 ヒストグラム ボックスプロット
  • 13. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page13Page13Page13Page13 第2部:基本的なプログラミングの習得 第2部では、さらに2つのコンテンツを勉強します。 そのほか、よく使うことになるテクニックを紹介します! 扱いやすい、データを集計するプログラミングを紹介します! データを見やすくするための5つの方法を紹介しました Rで扱う4種類のデータを紹介しました
  • 14. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page14Page14Page14Page14 基本的なプログラミングの習得 1.データの集計 2.繰り返し処理 3.条件分岐 4.自作関数 基本的なプログラミングとして、以下の4つを身につけよう
  • 15. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page15Page15Page15Page15 基本的なプログラミング(1.データの集計 1/3) 総和 平均 中央値 最大値 分散 標準偏差 etc … さまざまな集計量 集計:データを集めて計算し、使いやすい数値にまとめる作業のこと。
  • 16. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page16Page16Page16Page16 基本的なプログラミング(1.データの集計 2/3) 以下のコードをそれぞれ実行して、データの集計をやってみよう。 v.dice=round(6*runif(100)+0.5) sum(v.dice) #和 mean(v.dice) #平均 sd(v.dice) #不偏標準偏差 var(v.dice) #不偏分散 summary(v.dice) #複数の統計量 #table table(v.dice) v.dice1=round(6*runif(100)+0.5) v.dice2=round(6*runif(100)+0.5) dice.mat=cbind(v.dice1,v.dice2) table(dice.mat) #一つのベクトルの様に扱われる dice.df=data.frame(v.dice1,v.dice2) table(dice.df)
  • 17. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page17Page17Page17Page17 基本的なプログラミング(1.データの集計 3/3) 以下のコードをそれぞれ実行して、データの集計をやってみよう。 #次に、以下を入力して得られる、150個のデータを使ってみよう。 iris #apply:行列の「行」「列」あるいは「各要素それぞれ」に対して、集計を行う。 apply(iris[,-5],1,sum) #行について集計をする。実際に1行目を合計して確認してみよう。 apply(iris[,-5],2,sum) #列について集計をする。 apply(iris[,-5],2,summary) #列について集計をする。 #tapply:グループ化された変数に対して、グループごとに集計を行う。 #以下では、5列目の分類に基づいて、1列目の平均をそれぞれとっています。 tapply(iris[,1],iris[,5],mean) #by:以下では、5列目の分類に基づいて、1列目から4列目までのそれぞれに集計量をとっています。 #tapply関数では、引数(カッコの中の値)が同じ長さでなければだめ、という制約があります。 by(iris[,1:4],iris[,5],summary)
  • 18. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page18Page18Page18Page18 基本的なプログラミング(2.繰り返し処理 1/2) 繰り返し処理:データに対して、コンピュータに同じ操作を自動で複数回行わせるテクニック NO! 繰り返し処理 リンゴを10個買いに行く レジへ並ぶ YES! 10個入れた? 1個かごに入れる
  • 19. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page19Page19Page19Page19 基本的なプログラミング(2.繰り返し処理 2/2) 以下のコードを実行し、繰り返し処理を体感しよう。 For文とwhile文の違いに注意しよう。 #for:走査したいiの値が決まっている時 n=10 permutation=n for(i in 1:5){ permutation=permutation*(n-i) } permutation #出てきた値を確かめよう #while:ある条件の時 total.damage=0 while(total.damage<5){ total.damage=total.damage+runif(1) } permutation #出てきた値を確かめよう(その2)
  • 20. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page20Page20Page20Page20 基本的なプログラミング(3.条件分岐 1/2) 条件分岐:ある条件を設定し、それが満たされているかどうかで次に実行する操作を自動で変更できるテクニック おつかいに行く スーパー 駄菓子屋さん 帰宅 YES! NO! 条件分岐 寄り道する?
  • 21. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page21Page21Page21Page21 基本的なプログラミング(3.条件分岐 2/2) 以下のコードを実行し、条件分岐を体感しよう。 val1=4 { if(val1>=3){ #もしval1が3以上ならval2は1。 val2=1 } else{ val2=0 #そうでないならval2は0 } } val2 val1=3 switch(val1, # switch(文字列, "1" = print("one"), # "1" のときに実行 "2" = print("two"), # "2" のときに実行 print("not matched") # 一致するものが無い時 ) #val1の数字を1や2に変えて何回かやってみよう。
  • 22. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page22Page22Page22Page22 基本的なプログラミング(4.自作関数) 自作関数:データを好きなように加工するためには、時には自分で関数を作る必要があります。 たとえば、以下の「CVRを調べる関数」を実行して、コードから関数の性質を考えてみましょう。 get.cvr.error=function(p,n,ety="none"){ #CVRの誤差に関する情報 p.var=p*(1-p)/n p.sd=p.var^0.5 switch(ety, "sd"=return(p.sd), "var"=return(p.var), print("select type") ) } #ここまでが関数の定義 #以下をコピペして実行してみよう。 get.cvr.error(0.1,10,"sd") get.cvr.error(0.1,10,"var") get.cvr.error(0.1,10) cvr.v=0.2*runif(10) uu.v=round(1000*runif(10)) get.cvr.error(cvr.v,uu.v,"sd") #複数の値を入れた場合
  • 23. Copyright© 2002-2013 Data Artist, Inc. All Rights Reserved. Page23Page23Page23Page23 まとめ 最後に、今回の内容を簡潔にまとめるとこのようになります。 そのほか、よく使うことになるテクニックを紹介しました! 扱いやすい、データを集計するプログラミングを紹介しました! データを見やすくするための5つの方法を紹介しました! Rで扱う4種類のデータを紹介しました!