データサイエンス演習(R システムを使用)(スライド資料13回)

【概要】 Rシステムは、データフレームを基本データ構造とし、コマンドラインでの操作により統計検定や機械学習を実行できる統計解析ソフトウェアである。オブジェクト一覧の表示、ワークスペースの保存、CSVファイルの読み込みなど、多彩な機能を備え、データ分析に必要な一連の操作を実行できる。

大学授業用に作成した資料を更新・改良して公開している。これらは クリエイティブコモンズ 表示-非営利-継承 4.0 国際ライセンス(CC BY-NC-SA 4.0) で提供しており、事前の許可なく自由に利用できる。条件は著作者表示(BY)、非営利目的のみ(NC)、同一ライセンスでの再配布(SA)である。

目次

  1. rd-1. R システムと RStudio [PDF], [パワーポイント], [HTML]

    【概要】Rシステムは統計解析とグラフィックスのためのソフトウェアである。RStudio(統合開発環境)により、Rシステムを効率的に利用できる。Rシステムは、コマンドラインインターフェースによる操作を基本とし、オブジェクト一覧、操作履歴、プロット機能などのデータ分析機能を備えており、数千の拡張パッケージを活用できる。

  2. rd-2. ヒストグラム、散布図、折れ線グラフ、要約統計量 [PDF], [パワーポイント], [HTML]

    【概要】Rシステムは、データ分析の基本機能としてヒストグラム、散布図、折れ線グラフの作成、要約統計量の算出を提供する。グラフ作成には、ggplot2(可視化パッケージ)などをインストールし、データフレームの作成後にグラフ化を行う。基本操作の練習には、irisデータセット(アヤメのデータ)が有用である。

  3. rd-3. 機械学習による自動分類 [PDF], [パワーポイント], [HTML]

    【概要】機械学習における分類のための教師あり学習では、教師データから未知のデータに適用可能なパターンや規則を抽出する。Irisデータセットを用いた学習では、3種のアヤメの外花被片(がいかひへん)と内花被片の幅と長さの計測データ、およびアヤメの種類のデータから、新しい花の種類を予測する能力を獲得する。

  4. rd-4. 平均と分散 [PDF], [パワーポイント], [HTML]

    【概要】母集団から抽出した標本から母平均を推定する際は、標本の大きさが大きいほど推定精度が向上する。母集団が正規分布に従う場合、標本平均の分布も正規分布となり、その分散は母分散を標本サイズnで割った値となる。母分散の推定には標本の不偏分散を用いる。

  5. rd-5. t 検定 [PDF], [パワーポイント], [HTML]

    【概要】t検定は、2つの標本の平均値が統計的に有意に異なるかを判断する統計的検定手法である。p値は帰無仮説が真である確率を示し、p値が小さいほど統計的有意性が高いと判断できる。標本は母集団から無作為に抽出された一部であり、十分な標本サイズの確保が必要である。t検定は、母集団が正規分布に従うことを前提とする。

  6. rd-6. 相関、相関係数 [PDF], [パワーポイント], [HTML]

    【概要】相関係数は2つの変数間の線形的な関連性を-1から1の範囲で示す統計量である。1に近いほど強い正の相関(一方が増加すると他方も増加)、-1に近いほど強い負の相関(一方が増加すると他方が減少)、0に近いほど無相関を示す。

  7. rd-7. 次元削減、主成分分析 [PDF], [パワーポイント], [HTML]

    【概要】主成分分析(PCA:Principal Component Analysis)は多次元データの次元削減手法であり、データの分散が最大となる方向に主軸(主成分)を設定する。元のデータ次元数と同数の主成分を算出でき、寄与率の高い上位の主成分を選択して次元削減を行う。外れ値の影響を受けやすいという課題に対し、ロバスト主成分分析が考案されている。

  8. rd-8. クラスタリング [PDF], [パワーポイント], [HTML]

    【概要】Rシステムでクラスタリングを実行する方法として、mclust(モデルベースクラスタリング)パッケージを用いて分類を行い、その結果を散布図で可視化する手法がある。

  9. rd-9. テーブルデータ処理、並べ替え(ソート)・集計・集約 [PDF], [パワーポイント], [HTML]

    【概要】Rシステムのdplyr(データ操作)パッケージを用いて、テーブルデータの基本操作(選択、射影、結合、ソート、集約)を実行できる。パイプ演算子(%>%)により基本操作を連鎖させることで、複数の操作を組み合わせたデータ処理が可能である。

  10. rd-10. オブジェクトのセーブとロード [PDF], [パワーポイント], [HTML]

    【概要】Rシステムのワークスペース内のオブジェクトは、save関数により外部ファイルに保存し、load関数で復元できる。複数のオブジェクトの一括保存が可能であり、異なるコンピュータ間でのデータ交換や作業状態の保存に活用できる。

  11. rd-11. リレーショナルデータベースとの連携 [PDF], [パワーポイント], [HTML]

    【概要】RSQLite(SQLiteデータベース接続)パッケージにより、RシステムとSQLiteデータベースを連携できる。dbConnect関数でSQLiteデータベースに接続し、dbWriteTable/dbReadTable関数でテーブルデータの転送が可能である。これによりデータの永続的管理とSQLクエリによる操作を実現できる。

  12. rd-12. CSV ファイルのインポート、エクスポート [PDF], [パワーポイント], [HTML]

    【概要】RシステムのCSVファイル入出力機能により、write.csv関数でデータフレームをCSV形式で出力し、read.csv関数でCSVファイルからデータを読み込むことができる。

  13. rd-13. 正規分布 [PDF], [パワーポイント], [HTML]

    【概要】Rシステムのrnorm関数により、指定した母平均と母標準偏差に従う正規分布データを生成できる。生成するデータ数を増やすほど、データの分布が理論上の正規分布に近づく。この収束過程は、ggplot2パッケージのヒストグラム表示機能により視覚的に確認できる。

Windows での R システムのインストール: 別ページで説明している。

資料

動画は、全13回のうち8回分を準備

  1. rd-1. R システムと RStudio [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/ZPW1QK-2022-02-25-120228

    YouTube 動画: https://www.youtube.com/watch?v=JPeAF0TBjqg

    【概要】Rシステムは統計解析とグラフィックスのためのソフトウェアである。RStudio(統合開発環境)により、Rシステムを効率的に利用できる。Rシステムは、コマンドラインインターフェースによる操作を基本とし、オブジェクト一覧、操作履歴、プロット機能などのデータ分析機能を備えており、数千の拡張パッケージを活用できる。

  2. rd-2. ヒストグラム、散布図、折れ線グラフ、要約統計量 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/ZX4JNZ-2022-02-25-120327

    YouTube 動画: https://www.youtube.com/watch?v=QGg7JCPMZcI

    【概要】Rシステムは、データ分析の基本機能としてヒストグラム、散布図、折れ線グラフの作成、要約統計量の算出を提供する。グラフ作成には、ggplot2(可視化パッケージ)などをインストールし、データフレームの作成後にグラフ化を行う。基本操作の練習には、irisデータセット(アヤメのデータ)が有用である。

  3. rd-3. 機械学習による自動分類 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/5D2845-2022-02-25-120358

    YouTube 動画: https://www.youtube.com/watch?v=iZtPtATSnYc

    【概要】機械学習における分類のための教師あり学習では、教師データから未知のデータに適用可能なパターンや規則を抽出する。Irisデータセットを用いた学習では、3種のアヤメの外花被片(がいかひへん)と内花被片の幅と長さの計測データ、およびアヤメの種類のデータから、新しい花の種類を予測する能力を獲得する。

    プログラム1

    install.packages("ggplot2")
    install.packages("dplyr")
    install.packages("klaR")
    

    プログラム2

    library(ggplot2)
    ggplot(iris, aes(x=Sepal.Length)) +
      geom_point( aes(y=Sepal.Width, colour=Species), size=3 ) +
      theme_bw()
    

    プログラム3

    library(ggplot2)
    ggplot(iris, aes(x=Petal.Length)) +
      geom_point( aes(y=Petal.Width, colour=Species), size=3 ) +
      theme_bw()
    

    プログラム4

    library(dplyr)
    library(klaR)
    d <- tbl_df(iris[c(3,4,5)])
    partimat(Species~., data=d, method="lda")
    
  4. rd-4. 平均と分散 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/KW47Q5-2022-02-25-120436

    YouTube 動画: https://www.youtube.com/watch?v=qUdpcMUdzts

    【概要】母集団から抽出した標本から母平均を推定する際は、標本の大きさが大きいほど推定精度が向上する。母集団が正規分布に従う場合、標本平均の分布も正規分布となり、その分散は母分散を標本サイズnで割った値となる。母分散の推定には標本の不偏分散を用いる。

    プログラム1

    x <- round( rnorm(1000000, mean=100, sd=20) )
    x[floor( runif(5, 1, 1000000+1) )]
    x[floor( runif(5, 1, 1000000+1) )]
    x[floor( runif(5, 1, 1000000+1) )]
    

    プログラム2

    x <- round( rnorm(1000000, mean=100, sd=20) )
    m <- numeric(20)
    v <- numeric(20)
    for (i in 1:20) {
      s <- x[floor( runif(5, 1, 1000000+1) )]
      m[i] <- mean(s)
      v[i] <- var(s)
    }
    print(m)
    print(v)
    

    プログラム3

    x <- round( rnorm(1000000, mean=100, sd=20) )
    m <- numeric(20)
    v <- numeric(20)
    for (i in 1:20) {
      s <- x[floor( runif(5, 1, 1000000+1) )]
      m[i] <- mean(s)
      v[i] <- var(s)
    }
    for (i in 1:20) { print( mean(m[1:i]) ) }
    for (i in 1:20) { print( mean(v[1:i]) ) }
    
  5. rd-5. t 検定 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/ZR6RR5-2022-02-25-120503

    YouTube 動画: https://www.youtube.com/watch?v=YXHKjzEKjkI

    【概要】t検定は、2つの標本の平均値が統計的に有意に異なるかを判断する統計的検定手法である。p値は帰無仮説が真である確率を示し、p値が小さいほど統計的有意性が高いと判断できる。標本は母集団から無作為に抽出された一部であり、十分な標本サイズの確保が必要である。t検定は、母集団が正規分布に従うことを前提とする。

    • t 検定

      二変数ともに正規分布のときに使用

      求まった p 値の値が小さいときは「二変数の母平均は等しい」という仮説が棄却される

      求まった p 値の値が小さくないときは、棄却ができず、結論としては何も言えないと考える。

    t.test( c(128, 104, 124, 85, 120), c(100, 106, 89, 89, 105), var.equal=F )
    
    t.test( c(128, 104, 124, 85, 120), c(180, 190, 189, 131, 130, 150), var.equal=F )
    
  6. rd-6. 相関、相関係数[PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/52NPVZ-2022-02-25-120530

    YouTube 動画: https://www.youtube.com/watch?v=RQRvQN_V0pU

    【概要】相関係数は2つの変数間の線形的な関連性を-1から1の範囲で示す統計量である。1に近いほど強い正の相関(一方が増加すると他方も増加)、-1に近いほど強い負の相関(一方が増加すると他方が減少)、0に近いほど無相関を示す。

    • 相関は、2つの変数の間に関連性があるか

      (一方が変化すれば、もう一方も変化する関係)

    • 相関あり

      X が増えると、Yが増えている。X が増えると、Y が減っている。

    • 相関なし

      X と Y に関係がない

    • R システムでは cor を用いて、相関係数を算出
    x <- rnorm(100000, mean=5, sd=5)
    y <- rnorm(100000, mean=5, sd=5)
    d7 <- data.frame( xx=x[floor( runif(100, 1, 100000+1) )],
      yy=y[floor( runif(100, 1, 100000+1) )] )
    d7$yy <- d7$yy + (d7$xx - d7$yy) * 0.6
    library(ggplot2)
    ggplot(d7, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + theme_bw()
    cor(d7$xx, d7$yy)
    
    x2 <- rnorm(100000, mean=5, sd=5)
    y2 <- rnorm(100000, mean=5, sd=0.1)
    d10 <- data.frame( xx=x2[floor( runif(100, 1, 100000+1) )],
      yy=y2[floor( runif(100, 1, 100000+1) )] )
    d10$yy <- 0.1 * d10$xx + d10$yy
    library(ggplot2)
    ggplot(d10, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + xlim(-5, 15) + ylim(-5, 15) +
      theme_bw()
    cor(d10$xx, d10$yy)
    
    x2 <- rnorm(100000, mean=5, sd=5)
    y2 <- rnorm(100000, mean=5, sd=0.1)
    d11 <- data.frame( xx=x2[floor( runif(100, 1, 100000+1) )],
      yy=y2[floor( runif(100, 1, 100000+1) )] )
    d11$yy <- 0.4 * d11$xx + d11$yy
    library(ggplot2)
    ggplot(d11, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + xlim(-5, 15) + ylim(-5, 15) +
      theme_bw()
    cor(d11$xx, d11$yy)
    
  7. rd-7. 次元削減、主成分分析 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/Z8MPXZ-2022-02-25-120606

    YouTube 動画: https://www.youtube.com/watch?v=5f5QrGBePO0

    【概要】主成分分析(PCA:Principal Component Analysis)は多次元データの次元削減手法であり、データの分散が最大となる方向に主軸(主成分)を設定する。元のデータ次元数と同数の主成分を算出でき、寄与率の高い上位の主成分を選択して次元削減を行う。外れ値の影響を受けやすいという課題に対し、ロバスト主成分分析が考案されている。

    • 主成分分析

      複数の変数から得られた標本をもとに、軸を得るための方式。

      次元数が n のとき、 n 個の軸が得られる

    • 主成分分析と次元削減

      主成分分析で得られた上位の軸を残し、下位の軸を削除

    前準備
    install.packages("ggplot2")
    install.packages("pcaPP")
    
    
    主成分分析
    x <- rnorm(100000, mean=5, sd=5)
    y <- rnorm(100000, mean=5, sd=5)
    n <- floor( runif(100, 1, 100000+1) )
    d8 <- data.frame( xx=x[n],  yy=y[n] )
    d8$yy <- d8$yy - (d8$xx + d8$yy) * 0.6
    library(ggplot2)
    ggplot(d8, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + theme_bw()
    a <- prcomp(d8)
    print(a$rotation)
    
    主成分分析(データの合成の部分を変更)
    x <- rnorm(100000, mean=5, sd=5)
    y <- rnorm(100000, mean=5, sd=5)
    n <- floor( runif(100, 1, 100000+1) )
    d9 <- data.frame( xx=x[n],  yy=y[n] )
    d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8
    library(ggplot2)
    ggplot(d9, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + theme_bw()
    a <- prcomp(d9)
    print(a$rotation)
    
    主成分分析は外れ値に弱い
    x <- rnorm(100000, mean=5, sd=5)
    y <- rnorm(100000, mean=5, sd=5)
    n <- floor( runif(100, 1, 100000+1) )
    d9 <- data.frame( xx=x[n],  yy=y[n] )
    d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8
    d10 <- data.frame( xx=rnorm(10, mean=-20, sd=1),
      yy=rnorm(10, mean=5, sd = 1) )
    d11 <- rbind( d9, d10 )
    library(ggplot2)
    ggplot(d11, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + theme_bw()
    a <- prcomp(d11)
    print(a$rotation)
    
    pcaPP パッケージを用いて robust PCA23:03 2021/05/17
    x <- rnorm(100000, mean=5, sd=5)
    y <- rnorm(100000, mean=5, sd=5)
    n <- floor( runif(100, 1, 100000+1) )
    d9 <- data.frame( xx=x[n],  yy=y[n] )
    d9$yy <- d9$yy + (d9$xx - d9$yy) * 0.8
    d10 <- data.frame( xx=rnorm(10, mean=-20, sd=1),
      yy=rnorm(10, mean=5, sd = 1) )
    d11 <- rbind( d9, d10 )
    library(ggplot2)
    ggplot(d11, aes(x=xx)) +
      geom_point( aes(y=yy), size=3 ) + theme_bw()
    library(pcaPP)
    a2 <- PCAgrid(d11)
    print(a2$loadings)
    
  8. rd-8. クラスタリング [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/53EW25-2022-02-25-120630

    【概要】Rシステムでクラスタリングを実行する方法として、mclust(モデルベースクラスタリング)パッケージを用いて分類を行い、その結果を散布図で可視化する手法がある。

  9. rd-9. テーブルデータ処理、並べ替え(ソート)・集計・集約 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/ZQ9WYZ-2022-02-25-120657

    【概要】Rシステムのdplyr(データ操作)パッケージを用いて、テーブルデータの基本操作(選択、射影、結合、ソート、集約)を実行できる。パイプ演算子(%>%)により基本操作を連鎖させることで、複数の操作を組み合わせたデータ処理が可能である。

  10. rd-10. オブジェクトのセーブとロード [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/57JP7Z-2022-02-25-120733

    【概要】Rシステムのワークスペース内のオブジェクトは、save関数により外部ファイルに保存し、load関数で復元できる。複数のオブジェクトの一括保存が可能であり、異なるコンピュータ間でのデータ交換や作業状態の保存に活用できる。

  11. rd-11. リレーショナルデータベースとの連携 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/KJ8DGK-2022-02-25-120800

    【概要】RSQLite(SQLiteデータベース接続)パッケージにより、RシステムとSQLiteデータベースを連携できる。dbConnect関数でSQLiteデータベースに接続し、dbWriteTable/dbReadTable関数でテーブルデータの転送が可能である。これによりデータの永続的管理とSQLクエリによる操作を実現できる。

  12. rd-12. CSV ファイルのインポート、エクスポート [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/K4JGQ5-2022-02-25-120828

    YouTube 動画: https://www.youtube.com/watch?v=hsHkgfjAHNU

    【概要】RシステムのCSVファイル入出力機能により、write.csv関数でデータフレームをCSV形式で出力し、read.csv関数でCSVファイルからデータを読み込むことができる。

    前準備
    install.packages("dplyr")
    
    データフレームを CSV ファイルにエクスポート
    library(dplyr)
    d <- data_frame(
        name=c("apple", "rose", "rose", "tomato"),
        color=c("red", "white", "pink", "red"),
        price=c(100, 400, 200, 40) )
    write.csv(d, file="C:/hoge/hoge.csv")
    
    * 「C:/hoge」は作業用のディレクトリ。
    前もって作成しておくこと。
    
    データフレームに CSV ファイルからインポート
    library(dplyr)
    m <- read.csv(file="C:/hoge/bar.csv")
    print(m)
    
  13. rd-13. 正規分布 [PDF], [パワーポイント]

    ドクセルの URL: https://www.docswell.com/s/6674398749/ZMVDXZ-2022-02-25-120900

    【概要】Rシステムのrnorm関数により、指定した母平均と母標準偏差に従う正規分布データを生成できる。生成するデータ数を増やすほど、データの分布が理論上の正規分布に近づく。この収束過程は、ggplot2パッケージのヒストグラム表示機能により視覚的に確認できる。