[1] 2
2023年度 社会調査法
2023/10/09
Rは,統計分析に強みを持つコンピュータ言語です(統計ソフトと呼ぶこともあるけど,厳密な違いはよくわかりません)。
覚えさえすればエクセルよりもはるかに簡単
エクセルでできる分析は限られていますが,Rではそれよりもはるかに高度なことができます
エクセルはそもそも表計算ソフトです。
フリーです。
機械学習との絡みでPythonが流行ってきています。
ただ,統計分析に関してはRに一日の長があるという印象です。
コンピュータ言語のとっかかりはRでも,Rを使えるようになったらPythonもそこまで負担なく覚えられるでしょう。
Posit社の提供する統合開発環境(IDE)。RはそれだけだとWindowsのconsoleとか,Macのterminalみたいな,コマンドだけの画面
これで使えないわけでもなけれど,もっと使いやすい方が良い。Rをもっと使いやすい状態にしてくれるアプリがRstudioです。
Rstudioを使うと,分析結果レポートを文書やプレゼン用スライドに直接書き出すこともできます。
文献リストの挿入などの機能も実装できるので,その気になればデータ分析から論文執筆まで全てRstudioでできます。
Google colabなど,他の開発環境もありますが,インストールさえしてしまえば,Rstudioの方が便利だと思います。
Download R for Windows
Download R for macOS
R-X.X.X-arm64.pkg
,R-X.X.X.pkg
X.X.X という部分はバージョン番号です。
Rなどの統計ソフトを使う利点の一つは,再現性
例えばエクセルでは,どんな順番にどんな処理をしたのかは記録されません。
Rなどのプログラミングソフトを使うと,操作した内容と順番をコードの形で記録しておけます。
コードを記録したファイルを「スクリプトファイル」と言います。
スクリプトファイルは,画面左上にある緑の「+」アイコンを押して,「R Script」を選択することで新規作成できます。
スクリプトファイルを作成すると(初期状態では)画面の左上に白紙のファイルが出てきます。ここにコマンドを打ち込んでいきます。
例えば以下のコマンドを打って実行すると,画面の左下にあるRの画面に実行結果が出ます。
実行の仕方は,実行したい行を選択→Ctrl + Enter
(Macでは⌘ + Enter
)
左下の画面(console)に直接 1+1
と打ち込んでも同じ結果が出ますが,後で記録に残らないので,コードはスクリプト画面に書く,左下は結果の表示だけ,と使い分けた方が良いです。
Rスクリプトに以下の内容を打ち込んでください。スクリプト右上のRunボタンを押すか,Control + Enter
(Macの場合は⌘+Enter
)で実行してください。
ノート
このパートは森知晴先生(立命館大学総合心理学部)のサイト (卒業論文のためのR入門) 及び今井耕介先生(Harvard University / 東京大学)の著書 (社会科学のためのデータ分析入門)等を参考にしています。
簡単な計算は,以下の通り
Rでは情報を自分で名前をつけたオブジェクトとして保存できます。Rstudioでは,保存されたオブジェクトは右上のEnvironmentと言うところに表示されます。
「<-
」(不等号<とマイナス- )の左はオブジェクト,右はその中身を表します。なので,「xという名前のオブジェクトに3を入れる」という指示をしています。これを実行すると画面右上にxというオブジェクトが表示されるはずです。xの中身を確認するには,そのオブジェクトの名前(今回の場合z
)を打つと良いです。
文字列でもオブジェクトになります(その場合” “で囲みます)
複数の数値の並び(ベクトル)をオブジェクトとすることもできます。
ベクトルごと足し算とか掛け算とかもできます
縦×横の行列も作れます。matrixという名前です。
1mat <- matrix(c(435,165,265,135), ncol=2, byrow=TRUE)
mat
ncol=2
は列の数, byrow=TRUE
は,横に並べるということ。
[,1] [,2]
[1,] 435 165
[2,] 265 135
例えばbyrow=FALSE
にすると縦に並ぶ
縦横の名前をつけると
1rownames(mat) <- c("行1", "行2")
colnames(mat)<- c("列1", "列2")
mat
rownames
はrow(行)の名前,colnames
はcolumn(列)の名前
列1 列2
行1 435 165
行2 265 135
オブジェクトの中で重要な形式として,データフレームがあります。これは,縦方向に観測値を、横方向に変数を並べたデータを言います。
1age <- c(18, 21, 22, 23, 34)
2gender <- c("female", "male", "male", "female", "female")
3dframe <- data.frame(age, gender)
dframe
dframe
という名前のデータフレームにエクセル等のデータを読み込んで分析する場合は,このデータフレーム形式です。
データフレームの中の特定の列を指定する場合は,「データフレーム名$列名
」
Rを使う上で最も重要。何がしかの命令をすると,何かの結果が返ってくる。
[1] 23.6
[1] 18
[1] 22
上にあるように,Rのコマンドは基本的には,やること(実行する対象)
という構造になっている。
mean(dframe$age)
は,
やることが平均(mean
)
対象がデータフレームdframe
のなかのage
の列 (dframe$age
)
Rではかっこ()やコンマ(,)の後など,コードの切れ目で開業しても動作します。特に()何重にもなる場合,改行したほうが見やすいかもしれません。例えば,上でやった行列の作成コマンド
は,以下のように書いても全く同じように動作します。
あまり改行しすぎるのもかえって読みにくいかもしれません。自分が見やすいように程よく改行してください。
より高度なことをしたり,同じことをより簡単にしたりするために追加の機能を足すことができます。
ノート
RがスマートフォンのOSのようなもので,パッケージはアプリのようなもの。
Rのプログラムを格段にわかりやすくするパッケージであるtidyverseを使う準備をしてみます。パッケージは,最初に使う時にはインストールする必要があります(これは1回だけ。App Storeでアプリをとるような感じ)。
パッケージを使う時には,分析ファイルを実行する最初の段階で以下のコマンドを使います(スマートフォンにすでに入っているアプリを開くイメージ)。
後で使うので,以下のパッケージも読み込んでおきます(みなさんは先にインストールしてください)。
次に,Rが作業する場所(wd)を設定します。これは次で読み込むデータが保存されていたり,プログラムの中で生成したデータが保存されたりする場所です。
パソコン上の場所をうまく指定できるのであれば,以下のようにコマンドを打てば良いです(下はMacでデスクトップをwdにした例)
場所の指定がうまくできない場合,Rstudio右下の箱の Files
タブから指定したいフォルダを選び,⚙マークから「Set As Working Directory」を選ぶことで,コマンドを実行してくれます (その後実行されたコマンドを自分のプログラムファイルにコピーしておくと次回以降便利)
前回はデータを下記のように手打ちしました。
しかし,アンケートデータや,企業の会計データ等をこのように手打ちするのは現実的ではありません。エクセル等で集計されたデータを読み込むのが一般的です。
以下では,エクセルファイルを読み込む方法についてまとめています。
エクセルで列が変数,行が観測となるようにデータを作られていることを想定します。まず,これを表計算ソフト上でcsv形式でwdに保存します1。
wdに入れたファイルを読み込むには,csv形式なら,read_csv("ファイル名")
もしくはread.csv("ファイル名")
を使います1。ここでは,tests.csvと言う名前のデータを,testsと言う名前で読み込んでいます。
読み込んだデータを見てみます。最初のいくつかだけが表示されるhead(データ名)
コマンドが便利です。
データをグループで共有するときなどに便利です。
https://drive.google.com/file/d/*********/view?usp=sharing
)の********の部分がidなので,その部分をメモしておく。
google driveと基本的に同じ
dl=0
をdl=1
に変えて,read_csv
(もしくは read.csv
)コマンドで読み込めます分析に入る前に必要そうな処理を紹介します。
現在のデータにはない,4教科の合計点が欲しい。新しい変数はmutate()
で作る。ただし,mutateだけだと,変数を作ってどこにも保存してくれないので,保存場所を指定する必要があります。今回は元のデータに付け足す形で作ります。
tests に testsの中のデータを使って作った新しい変数を入れる。
Rのコマンドやパッケージは無数にあります。いつも使うもの以外は覚えてられません。
でも大丈夫。ネット上にはさまざまなコマンドの紹介やエラーへの対処法が落ちています。
森知晴先生(立命館大学総合心理学部)のサイト (卒業論文のためのR入門)
インストール方法から学部卒論程度の分析までの使い方を詳しく説明してくれています。
困ったらまずここ
ここに載っていない場合は,「やりたいこと + R」でググると手っ取り早い
最近ならChatGPTに聞くっていう手も案外いけるらしい…
プログラミングをやってて一番むかつき,嫌いになる要因はエラーメッセージ
できることは
「エラーが出てたら99.99%自分が悪い(パソコンは悪くない)」ということを自覚すること
tidyverse
とmagrittr
パッケージのパイプ演算子を使うことで,同じコマンドをより読みやすくできます。これからは断りなくこれらのパッケージの機能を使います。
読み込んだデータtest
の算数(math)の平均点を求めたい。普通にやると4.4 関数にあるように,データフレーム名$列名
で指定するので
パイプ演算子%$%
を使うと同じコマンドが以下のようになる
これだとあまり何がいいのかわかりませんが,複数の変数を指定したいときなど,いちいちデータフレーム名を指定しなくて良いので便利です。
以下は(1)test
データを使って,(2)数学の点数と他の点数の関係を分析(lm
)した上で,(3)その結果を表示する(summary
)もの。
日本語の順番と,コマンドの構造が反対 (結果を表示する→分析内容→データ)
全く同じことをパイプ演算子を使うと,(1) testデータで(2)分析をして(3)結果の要約を表示する,という思考の順番で書けます。
命令が複雑になる程効果が実感できます。
ちなみに%$%
は,使うデータを指定するのに使う。%>%
はコマンドの結果を次のコマンドに渡すのに使う。
2023 社会調査法