勉強 1日目
この講義ノートは,松浦が総合心理学部の授業に潜入してRによる統計分析についての個人的な学習備忘録です。 この目的は,大人数の受講生に対して統計環境Rを用いた実習形式で実証会計についての講義を行うためのノウハウを吸収することです。
この資料はすべてRmarkdown
で作成されており,使われているテーマはDistill
です。 松浦が主として利用しているのはMacであるため,RファイルやRmdファイル,csvファイルの文字コードはすべてUTF-8
です。
RとRstudioのインストール,R言語の基本操作については,関連書籍がたくさん出版されているので,各自で学習しておく必要がある。 とりわけ浅野・中村著「はじめてのRstudio: エラーメッセージなんかこわくない」オーム社が最初の1冊としてお勧めです。
はじめてのRstudio (Amazon.co.jpへのリンク)
まずは基本関数を用いて,用意されたデータを読み込み,データの特徴を確認するために記述統計(descriptive statistics)を出力する方法を学ぶ。
主として,Rではcsvファイルとして作成されたデータを読み込むことが多い。 最初から組み込まれている基本関数read.csv()
を用いて,csvファイルを読み込む。
df <- read.csv("d1_2.csv", header = TRUE)
データの特徴を見るために,記述統計量を確認する。 ここでは基本関数summary()
を用いてデータの特徴を確認する。
summary(df)
ID age sex eduy
Min. : 1.00 Min. :27.00 Min. :1.0 Min. : 9.0
1st Qu.: 3.25 1st Qu.:33.50 1st Qu.:1.0 1st Qu.:12.0
Median : 5.50 Median :41.00 Median :1.0 Median :12.5
Mean : 5.50 Mean :41.20 Mean :1.2 Mean :13.8
3rd Qu.: 7.75 3rd Qu.:46.75 3rd Qu.:1.0 3rd Qu.:17.0
Max. :10.00 Max. :56.00 Max. :2.0 Max. :18.0
house
Min. :1.0
1st Qu.:2.0
Median :2.5
Mean :2.3
3rd Qu.:3.0
Max. :3.0
定性的な情報を示すカテゴリー変数である性別のsex
や住宅所有状況のhouse
の平均を計算しても意味が無いので,これらの変数の型を数値からfactor
に変更する。関数as.factor()
を用いる。
df$sex <- as.factor(df$sex)
df$house <- as.factor(df$house)
再度,記述統計を表示する。
summary(df)
ID age sex eduy house
Min. : 1.00 Min. :27.00 1:8 Min. : 9.0 1:2
1st Qu.: 3.25 1st Qu.:33.50 2:2 1st Qu.:12.0 2:3
Median : 5.50 Median :41.00 Median :12.5 3:5
Mean : 5.50 Mean :41.20 Mean :13.8
3rd Qu.: 7.75 3rd Qu.:46.75 3rd Qu.:17.0
Max. :10.00 Max. :56.00 Max. :18.0
変数sex
とhouse
はカテゴリーごとの度数が示されるようになり,適切な記述統計量が計算できている。
最近流行のパッケージ群tidyverseを使って上記の分析を再現する。 tidyverseは整然データ(tidy data)を統一した記述方法でソースコードを書けるように作られた,モダンなデータハンドリング・ビジュアライゼーションのためのパッケージ群である。
tidyverseパッケージとskimrパッケージを使い,情報量の多い記述統計量の表を作成する。 まずはパッケージのインストールと読み出しを行う。
# install.packages("tidyverse") # first-time only
# install.packages("skimr") # first-time only
library(tidyverse)
library(skimr)
tidyverseのreadr::read_csv()
を用いてcsvファイルを読み込む。 オプションのcol_types
を用いて,変数のタイプを指定できる。 i
が整数,f
ファクターである。
df <- readr::read_csv("d1_2.csv", col_types="iffii")
skim
パッケージの関数skim()
を用いてデータの概要を出力する。
df %>% skim()
Skim summary statistics
n obs: 10
n variables: 5
─ Variable type:factor ───────────────────────────
variable missing complete n n_unique top_counts
age 0 10 10 9 46: 2, 55: 1, 33: 1, 36: 1
sex 0 10 10 2 1: 8, 2: 2, NA: 0
ordered
FALSE
FALSE
─ Variable type:integer ───────────────────────────
variable missing complete n mean sd p0 p25 p50 p75 p100
eduy 0 10 10 13.8 3.16 9 12 12.5 17 18
house 0 10 10 2.3 0.82 1 2 2.5 3 3
ID 0 10 10 5.5 3.03 1 3.25 5.5 7.75 10
hist
▂▁▇▂▂▁▁▆
▃▁▁▅▁▁▁▇
▇▃▃▃▃▃▃▇