新米教員KMの備忘録(Vol.01)

中高で英語科教員をやっております

Rの練習③散布図、相関係数、散布図マトリックス

こんばんは、KMです。

 

今回も引き続き、村井潤一郎編(2013)『はじめてのR: ごく初歩の操作から統計解析の導入まで』北大路書房を読み進めて勉強しました。

 

過去ログは以下から。

 

km-for-research.hatenablog.jp

  

km-for-research.hatenablog.jp

 

4-3-2 散布図

 

使用したデータセットはこれまでと同じです。

実は以前Rをやろうと勉強した時期が一瞬あって、そのときちょこっとやったので復讐に近い感じでした。

 

基本的にはplot()関数を用いて作図する感じでした。

 

4-5-2 相関係数

 

散布図以降を割愛し、相関係数についてまとめます。

今回は、テレビの視聴時間(テレビ)と10点満点の社交性の自己評価(社交性)という、2変数間の相関係数を求めました。

 

#データ読み込み
例題<-read.csv("sample.csv")

 

#相関係数
cor(例題$テレビ,例題$社交性)

 

また、3つ以上の変数の相関係数を一括してマトリックスで出力する方法として、データフレームを用いる方法もありました。

 

番外編-散布図マトリックス

 

3つ以上の変数について、散布図マトリックスをつくれたらかっこいいなと思って、plot()関数に4変数を入れてみました。

 

> plot(例題$テレビ,例題$社交性,例題$事前,例題$事後)
Error in plot.window(...) : 'xlim' の値が不正です

 

どうやらplot()関数は、2変数しか扱えない関数のようでした。

なのでいろいろ調べ、以下のコードにたどり着きました。

 

#以下のようにすればOK
plot(例題[,c(5,6,7,8)])
plot(data.frame(例題$テレビ,例題$社交性,例題$事前,例題$事後))

 

出力はうまくいきましたが、すべての変数名の 最初に「例題」って書いてあるのがダサいのが気になります。

そこで各変数の名前の「格納庫」を用意し、そこにそれぞれの値を入れてあげればいいのでは?という仮説がひらめきました。

 

#以下の方法の方が変数名の出力がきれい
テレビ<-例題$テレビ
社交性<-例題$社交性
事前<-例題$事前
事後<-例題$事後
plot(例題[,c(5,6,7,8)])
plot(data.frame(テレビ,社交性,事前,事後))

 

これで出力されたのが以下の散布図マトリックスです。

 

f:id:km_for_research:20180130233059p:plain

 

形から入る人間にとって、見た目の良いグラフが書けるようになるのは最高のモチベーションになりますね。

今日はここまで。

 

Rの練習②続・ヒストグラムでデータを可視化してみる

こんばんは、KMです。

 

以前、Rの投稿をしてから1か月以上経ってしまいました。

 

km-for-research.hatenablog.jp

 

 

前回参考にした、村井潤一郎編(2013)『はじめてのR: ごく初歩の操作から統計解析の導入まで』北大路書房を購入したので、この続きをやっていきたいと思います。

 

4-3-1 ヒストグラム

 

使用したデータセットは前回と同じです。

今回は進んで女性(f)と男性(m)、つまり性別ごとにグラフを作成しました。

 

#データ読み込み
例題<-read.csv("sample.csv")

#画面を2x2に分割
par(mfrow=c(2,2))

 

#ヒストグラム作成
#xlim()とで目盛りを指定
hist(例題$事前[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10))
hist(例題$事後[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10))
hist(例題$事前[例題$性別=="m"],xlim=c(40,90),ylim=c(0,10))
hist(例題$事後[例題$性別=="m"],xlim=c(40,90),ylim=c(0,10))

 

出力された図のうち、

hist(例題$事前[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10))

だけヒストグラムの横幅が狭いため、以下に書き換えます。

 

#データ読み込み
例題<-read.csv("sample.csv")

#画面を2x2に分割
par(mfrow=c(2,2))

 

#ヒストグラム作成、breaks()は40-90の範囲で5ずつ区切るコード
hist(例題$事前[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10),
breaks=seq(40,90,5))
hist(例題$事後[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10))
hist(例題$事前[例題$性別=="m"],xlim=c(40,90),ylim=c(0,10))
hist(例題$事後[例題$性別=="m"],xlim=c(40,90),ylim=c(0,10))

 

これで他の図と見た目が同じになりました。

最終的に各図にタイトル名と横軸名を指定したのがこちら。

 

#データ読み込み
例題<-read.csv("sample.csv")

 

#画面を2x2に分割
par(mfrow=c(2,2))

 

#main()でタイトル名を指定
#xlab()で横軸名を指定
hist(例題$事前[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10),
breaks=seq(40,90,5),main="plot 1",xlab="事前f")
hist(例題$事後[例題$性別=="f"],xlim=c(40,90),ylim=c(0,10),
,main="plot 2",xlab="事後f")
hist(例題$事前[例題$性別=="m"],xlim=c(40,90),ylim=c(0,10),
,main="plot 3",xlab="事前t")
hist(例題$事後[例題$性別=="m"],xlim=c(40,90),ylim=c(0,10),
,main="plot 4",xlab="事後t")

 

f:id:km_for_research:20180127000731p:plain

 

タイトルつけつだけで、それっぽい見た目になりました。

 今日はここまで。

 

補記

今回はRstudioで上記作業をしたのですが、PCのユーザーネームが日本語だったため、当初はうまく処理できずエラーが発生するアクシデントに見舞われていました。

エラーコードでググったら、こんな知恵袋が。

 

統計用言語R(RStudio)のグラフ作成エラーについて... - Yahoo!知恵袋

 

ベストアンサーにあるように、英文字のユーザーを作成してからRstudioを起動したらエラーが起きなくなりました。めでたし。

 

 

3学期最初の授業に使ってみたいもの

 

こんばんは、KMです。

 

新年一発目の授業、何しよう

今回は、担当している中学3年生の授業について。

 

休み明けテストの返却や席替えなんかやってたら、

初回の授業で教科書に入るのもなんだかな、なんて考えたりです。

 

 そんな中、先日いいものを見つけました。

 

おみくじ

初詣に行ったときに引いた、おみくじです。

 

最近のものは観光客も楽しめるように配慮されているのか、

英語でも書かれているものがあります。

 

自分がひいたものだと、

 

f:id:km_for_research:20180106233946j:plain

 

って書いてあったり、

 

f:id:km_for_research:20180106234043j:plain

 

ってあったりします。

これを使わない手はないですね。

 

いわゆるauthenticな英語なんて言われますが、

こんな形で英語って使われてるんだよっていう

いい勉強になるんじゃないでしょうか。

 

ただ教材として落とし込むためには、

もうひと捻り、なにか考えないといけないですね。

 

 教材化できたら、そのとき追記します。

 

Rの練習①ヒストグラムでデータを可視化してみる

はじめまして。

中高で英語科教員をしているKMと申します。

2学期の成績処理等も終わり、主に日々の備忘録としてブログを開設しようと思い立ったので、さっそく始めてみました。

Rを使いたい

突然ですが、統計とか情報処理とかにも興味があります。日々のテスト分析とか成績処理とかに活かしたいと思い、それで手を出したのがRです。

今回は、図書館で借りた村井潤一郎編(2013)『はじめてのR: ごく初歩の操作から統計解析の導入まで』北大路書房を片手にRを動かした備忘録です。

 

はじめてのR: ごく初歩の操作から統計解析の導入まで

はじめてのR: ごく初歩の操作から統計解析の導入まで

 

第4章:記述統計

第3章まではRのしようについてなので、割愛。

仮想データを手入力し、例題のヒストグラムに挑戦。

例題<-read.csv("sample.csv")
par(mfrow=c(1,2))
hist(例題$事前)
hist(例題$事後)

 出力されたのがこちら。

f:id:km_for_research:20171215022505j:plain

個人的には、出力画面を2分割するpar()という関数に感動。

この本の購入を決意したところで、今日はおわり。