モモノキ&ナノネと一緒にRでグラフを描いてみよう
Rで初めてのグラフ作成、データセットcarsを使って散布図を描いてみよう。
ナノネ、今回から統計解析用のフリーソフトとして有名な『R』の使い方を練習していこう。
Pythonは使わないの?
うん。Pythonを使ったデータ解析の学習はメインで続けていくけど、今回の学習シリーズでは『R』を使ってみよう。
データ解析の方法をネットで調べるとRを使った解説が多いよね。Rも使えるようになっておけば、Pythonのデータ解析に役立つよ。コードの書き方は違うけど理屈は一緒。
『R』は有名だから名前だけは知ってるけど、使ったことない。モモノキはRに詳しいの?
使ったことない。PCにさっきインストールしたばっかり。
大丈夫?
グーグル先生がついているから、きっとなんとかなるよ。まずは手を動かしてRを使ってみよう。
Rのインストール方法はPC環境によっても違うから、詳しいサイトの解説を参考にしてね。準備が終わってRが使える状態になった前提で始めるよ。
RはJupyter Notebook上でも動かせるの?
うん。学習記録を記事に残す都合もあるから、Jupyter Notebook上でRが動くように設定しておいたよ。Pythonと同じように実行できるから便利だね。
Rは何から練習する?時系列分析とか?
まだRの使い方がよく分からないから、とりあえずグラフを描く練習からやってみよう。
OK。グラフを描いてRに慣れる。
グラフに利用するデータはR組み込みのデータセットを使うことにしよう。どんなデータがあるかな?
nrow(data()$results) # 組み込みデータセットの個数
head(data()$results[,c("Item","Title")], 10) # データセットの内容表示(先頭10個)
Pythonで時系列分析の練習に使った『AirPassengers』も入ってた!
AirPassengersはまたの機会にして、今回はcars(Speed and Stopping Distances of Cars)というデータセットを使ってみよう。車のスピードと停止距離のデータだよ。
AirPassengersはまた今度ね。carsのデータセットを読み込む方法は?
データセットを読み込むには、data(データセット名)とすればOK。
data(cars) # データセット読み込み:省略可能
carsという変数名でデータセットの内容が入るよ。でもdata()は明示的に実行しなくても、直接carsするだけでデータを利用できるみたいだよ。
違う名前の変数に代入したい場合は、『<-』を使うよ。Rでは変数の代入に『=』じゃなくて『<-』が一般的に使用されるよ(表記方法はいくつかあるけど)。
data1 <- cars # carsの内容をdata1に代入(値コピー)
# または、data1 <- data(cars)
ls() # 利用中の変数を再確認
Rでは『=』の代わりに『<-』を使うんだ。
help(cars)とすれば、ドキュメントのデータ内容が確認できるよ。ほかにもデータ件数はnrow()、内容はstr()やsummary()で、引数にデータを指定すれば確認できるよ。
# help(cars) # R Documentation(表示は省略)
nrow(data1)
str(data1)
summary(data1)
carsは50件のデータで、speed(速度)とdist(停止までの距離)の値が入ってた。
散布図でプロットするには(グーグル先生によると)、とりあえずplot(データ)でOKかな。
plot(data1) # 散布図プロット
Jupyter Notebookでインライン表示するにはグラフがデカイね。もう少し小さくならない?
グラフの描画サイズはoptions()というので調整できるみたい。軸のフォントサイズはpar(ps=○)で変更してみて。設定方法は何通りかあるみたいだから、使いながら覚えていくことにしよう。
# グラフサイズ調整(width,heightデフォルト=7)
options(repr.plot.width=4, repr.plot.height=4)
par(ps = 9) # 軸のフォントサイズ変更
plot(data1) # 散布図プロット
グラフのタイトルは、plot()のオプション引数mainで設定。軸名ラベルはxlabとylabでそれぞれ設定できるよ。
par(ps = 9) # 軸のフォントサイズ変更
# 散布図プロット
plot(data1,
main="Speed and Stopping Distances of Cars",
xlab="speed(mph)",
ylab="dist(ft)")
回帰直線とか引ける?
lm()で回帰分析した結果をabline()で描画すると、グラフに回帰直線を表示できるよ。
par(ps = 9) # 軸のフォントサイズ変更
# 散布図プロット
plot(data1,
main="Speed and Stopping Distances of Cars",
xlab="speed(mph)",
ylab="dist(ft)")
# 回帰直線を引く
result <- lm(dist ~ speed, data = data1) # 回帰分析(目的変数dist、説明変数speed)
abline(result, col="red") # 回帰直線を描画
回帰分析の結果も確認できるよ。今回のケースだと、切片が-17.579で傾きが3.932だね。
result # 回帰分析モデルの結果
グラフの細かい設定はまだよく分からないけど、なんとか出来そう。
あと、変数のタイプはclass()で確認できて、データセットを読み込んだ変数はdata.frame型になっているよ。data.frameの列名(変数名)はcolnames()で確認できるから覚えておいてね。
class(data1) # 変数タイプ -> data.frame
colnames(data1) # data.frameの変数名
data.frameの列データを個々に取得したい場合は、data.frame変数のあとに$つなぎで列名(変数名)を指定すればOKだよ。
print(data1$speed) # speedのデータ取得(data.frame変数と$でつなぐ)
print(data1$dist) # distのデータ取得(data.frame変数と$でつなぐ)
変数名にドットが入っていたり、$で連結したり、代入が矢印だったり、Pythonとは表記が違うから混乱するなぁ。
言語によって表記の作法がちょっと違うけど、少し慣れれば問題ないよ。
最後にまとめコードも兼ねて、グラフデータを個別に指定する方法を試してみよう。
data(cars) # データセット読み込み
# グラフサイズ変更(width,heightデフォルト=7)
options(repr.plot.width=4, repr.plot.height=4)
par(ps = 9) # 軸のフォントサイズ変更
x <- cars$speed
y <- cars$dist
# データプロット(散布図)
plot(x, y,
main="Speed and Stopping Distances of Cars",
xlab="speed(mph)",
ylab="dist(ft)")
# 回帰直線を引く
result <- lm(y ~ x) # 回帰分析:目的変数y(dist)、説明変数x(speed)
abline(result, col="red") # 回帰直線を描画
あとで、cars以外のデータでも試してみる。
次回もグラフ練習を続けるよ。
またね!
0 件のコメント :
コメントを投稿