Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

第1回Rを使って統計分析を勉強する会

2,112 views

Published on

勉強会用に作ったスライド。

Published in: Data & Analytics
  • タイポや表紙の日付の誤りを直しました。
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

第1回Rを使って統計分析を勉強する会

  1. 1. R を使って統計分析を勉強する会 第 1 回 2014 年 4 月 23 日(水) 日直:井ノ口
  2. 2. Introduction
  3. 3. R のいいところ 統計分析を手早く書くのに最適 ● 統計分析が得意 – 関数が豊富(重回帰分析が 1 行) – 表形式のデータが扱いやすい ● 分析手順を再現できます – 実行履歴が残ります – スクリプトとして残せます
  4. 4. Excel でダメなの? もちろんケースバイケース。こんな時は Excel でもいいんじゃないでしょうか。 ● 難しい統計分析はしない。実際、重回帰分析 くらいなら Excel でもできる。 ● 分析手順を再利用しない。 ● データは更新されない。
  5. 5. R にしろ Excel にしろ 道具です。 R が使えるからと言って、統計分 析ができるというわけでは、残念ながらあり ません。 というわけで、この勉強会では、 R の使い方 に加えて、統計分析の考え方についてもちょ くちょく触れていきたいと思います。
  6. 6. Hello woRld!
  7. 7. 何はともあれ 動かしてみましょう。 RStudio を起動して、左下の Console で > print("Hello World!") [1] "Hello World!"
  8. 8. 基本のキ 作業ディレクトリ。 RStudio を起動して、左下の Console で確認し たり変更したりしてみる。 作業状態はここに保存されます。 > getwd() > setwd("~/workingdirectory") > setwd("~workingdirectory")
  9. 9. Start Statistics
  10. 10. こんな流れで進めます 「データ可視化の 7 ステップ」 ( 出典『ビジュアライジング・データ』 ) 1.Acquire : データをゲットします 2.Parse : 整形します 3.Filter : 必要なサブセットを抜き出します 4.Mine : 分析します 5.Represent : 分析結果を出力します 6.Refine : 省略 7.Interaction : 省略
  11. 11. もう少し具体的に こんな感じで行ってみようと思います 1.Acquire : Excel を読み込みます 2.Parse : 文字列を因子に変換します 3.Filter : 必要な行・列を取り出します 4.Mine : 代表値(平均値とか)を出します 5.Represent : ヒストグラムや箱ひげ図 6.Refine : 省略 7.Interaction : 省略
  12. 12. Acquire
  13. 13. XLConnect 結局出回っているデータの多くが Excel なの で、それを読み込みます。 XLConnect というパッケージを使います。 > install.packages("XLConnect") > library(XLConnect) > data <- readWorksheetFromFile("test.xlsx", 1) > data # 1 シート目のデータが表示される
  14. 14. R のデータ構造
  15. 15. 一体何を読み込んだのか? R には大きく 5 つのデータ構造があります 1.vector :基本。 1 次元配列。 2.matrix :行列。 2 次元配列。 3.array :配列。 n 次元配列。 4.data frame :重要。表。さっき読み込んだ 5.list :柔軟で便利。
  16. 16. vector これが基本。単一の値はあまり扱いません。 四則演算できます。 for 文不要です。 > v1 <- c(1, 2, 3, 4) > v1[1] # 添え字は 1 から > v1[c(1, 2)] # 添え字にも vector 使えます > v2 <- c(3, 3, 2, 4) > v1 + v2 > v1 + c(1, 2) # 要素数が違うと繰り返して補います
  17. 17. matrix, array matrix はあまり使いません array はもっと使いません(経験上) > m1 <- matrix(v1, nrow=2) > m1[1, 2] # 行 , 列の順で指定 > m1[, 2] # 省略すると全指定 > a1 <- array(v1, dim=c(2, 1, 2) > a1 > a1[1, 1, 1]
  18. 18. data frame 最もよく使います。なじみ深い表形式のデー タ構造です。 さっき読み込んだデータで色々試してみてく ださい # 列名を付けられます > df <- data.frame(col1=c(1, 2), col2=c("a", "b")) > df > df[1, 2] # 配列と同じようにアクセスできます > df[, "col1"] # 列名でアクセスできます > df$col1 # こんな風にも # 1 次元に落ちたときに vector になるのを防ぐには # 地味に重要(忘れてバグの温床に) > df[, "col1", drop=FALSE]
  19. 19. list 柔軟なので便利。各要素の要素数が異なって いても大丈夫( data fame はダメ) 私は色々な分析結果を 1 オブジェクトにまと めるときに使ったりします # data frmae 同様列名を付けられます > li <- list(elem1=c(1, 2), elem2=c("a", "b", "c")) > li > li[[1]] # 要素へのアクセスには癖があります > li$elem1 # 要素名でのアクセスは同じ
  20. 20. ライブラリを使っていて困ること どうやって渡すの? どれが返ってきたん だ? と悩みます。 class(), is.xxx(), as.xxx() が便利 # matrix から data frame への変換の例 > class(m1) # 当然 matrix > is.data.frame(m1) # FALSE > as.data.frame(m1) # 列名がついた !? > class(as.data.frame(m1)) # data frame に !! > is.data.frame(as.data.frame(m1)) # TRUE
  21. 21. Parse
  22. 22. 文字列を因子に 文字列 "A" と選択肢 "A, B, AB, O" の "A" と 選択肢 "A, B, C" の "A" を正しく扱おう、と いう話です。 > sample <- c("A", "B") > blood <- factor(sample, levels=C("A", "B", "AB", "O")) > choice <- factor(sample, levels=c("A", "B", "C")) # == はクラスを意識しないので、 identical で比較 # Java の == と equlas のようなものです > identical(sample[1], blood[1]) > identical(sample[1], choice[1]) > identical(blood[1], choice[1])
  23. 23. その他の型 (1/2) 代表的な Parse 先 ● numeric: 数値 (1, -2, 0.1) ● character: 文字列 ("Hello World") ● logical: 論理値 (TRUE, FALSE) > c(1, -2, 0.1) > c("Andy", "Bob", "Chris") > c(TRUE, FALSE, TRUE)
  24. 24. その他の型 (2/2) 代表的な Parse 先 ● factor: 因子 ● Date: 日付 ● NA: 欠損値 > as.factor(c("A", "B"), levels=c("A", "B", "AB", "O")) > as.Date(c("2014/4/24", "2014/4/25")) > c(1, 5, NA, 6)
  25. 25. 型と尺度水準
  26. 26. 型と尺度水準について 尺度水準には 4 種類ある。それぞれ意味があ る代表値や演算が異なる。 1.名義尺度→ 最頻値。演算意味ない。 2.順序尺度→ 中央値。+ー意味ない。 3.間隔尺度→ 平均値。 ×÷ 意味ない。 4.比例尺度→ 平均値。演算に意味がある。
  27. 27. 名義尺度 カテゴリ。背番号とか。 R では factor に相 当。 ● 演算する意味ない 例)アンケートだとこんな設問 設問 1 あなたの役割を教えて下さい。 1. 開発 2. 営業 3. スタッフ 4. その他
  28. 28. 順序尺度 よくみる 5 段階評価とか。Rでは order=TRUE オプション付の factor に相当。 ● 意味があるのは順序だけ。足し引き意味ない 例)アンケートだとこんな設問 設問 2 この勉強会には満足していますか? 1. 満足している 2. やや満足している 3. ふつう 4. やや不満である 5. 不満である
  29. 29. 間隔尺度 差が等しくて零点が任意の数値。日付とか温 度(摂氏、華氏)とか。Rでは numeric に相 当。 ● 足し引きできる。 ×÷ 意味ない 例) 20℃ は 40℃ の 2 倍熱いわけではない。 華氏だと 68°F と 104°F (約 1.5 倍 ) 。
  30. 30. 比率尺度 差が等しくて零点が絶対的な数値。長さとか 温度(絶対温度)とか。 R では numeric に相 当。型の上では間隔尺度と区別されない。 ● 足し引きできる。 ×÷ もできる。比率にも意 味がある。 例) 100m は 10m の 10 倍の長さ。
  31. 31. Appendix
  32. 32. Enterprise での利用 Google は R でプロトタイピングして C で実装 Oracle のデータも R で分析できる(らしい) ● Companies Using R | Revolution Analytics ● Oracle R Enterprise

×