Rでグラフを作成

# はじめに
Rとはオープンソースで利用可能な統計やデータ解析に秀でたプログラミング言語です。
Rstudioを用いたグラフの描画を学んだので今回は忘れないようにやったことを書いていきます。
## データを読み込む
まず今回使用するパッケージをロードします。
~~~
```{r}
library(ggplot2)
library(stargazer)
```
~~~
<dl>
  <dt>ggplot2</dt>
  <dd>グラフの描画を細かく設定するためのツールです。</dd>
  <dt>stargazer</dt>
  <dd>記述統計をわかりやすく表の形にまとめるパッケージです。</dd>
</dl>

次に今回使用するデータセットを読み込みます。
~~~
```{r}
data(iris)
```
~~~

Rの中にサンプルデータとして用意されているirisデータセットを読み込みました。
読み込んだデータの中身を確認します。
~~~
```{r,comment = ""}
head(iris)
```
# 出力結果
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
~~~

<dl>
  <dt>Sepal.Length</dt>
  <dd>がく片の長さを表します。</dd>
  <dt>Sepal.Width</dt>
  <dd>がく片の幅を表します。</dd>
  <dt>Petal.Length</dt>
  <dd>花びらの長さを表します。</dd>
  <dt>Petal.Width</dt>
  <dd>花びらの幅を表します。</dd>
  <dt>Species</dt>
  <dd>品種を表し、setosa, versicolor, virginicaの三つの品種が含まれています。</dd>
</dl>

## 記述統計の表示
データの特徴を捉えやすくするために記述統計を表示します。
~~~
```{r, comment = ""}
summary(iris)
```
# 出力結果
  Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
       Species  
 setosa    :50  
 versicolor:50  
 virginica :50
~~~

<dl>
  <dt>Min.</dt>
  <dd>最小値を表します。</dd>
  <dt>1st</dt>
  <dd>第1四分位を表します。</dd>
  <dt>Median</dt>
  <dd>中央値を表します。</dd>
  <dt>Mean</dt>
  <dd>平均値を表します。</dd>
  <dt>3rd</dt>
  <dd>第3四分位を表します。</dd>
  <dt>Max.</dt>
  <dd>最大値を表します。</dd>
</dl>

## グラフの描画
ここでグラフの描画をしていきたいと思います。分かりやすいヒストグラムから作成していきます。
### ヒストグラム
~~~
```{r}
hist(iris$Sepal.Length, freq = TRUE,
    xlab = "がく片の長さ(cm)",
    ylab = "観測数(個)",
    main = "がく片の長さの分布")
```
~~~

freqがTRUEだと観測数、FALSEだと確率密度になります。labがラベルでmainがタイトルです。

![ヒストグラム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632117/e766226c-75a3-a858-8783-75d5ea443612.png)

#### ggplotを用いて表示
より細かく設定するためにggplotを使用しました！
~~~
```{r}
ggplot(iris, aes(Sepal.Length)) +
         geom_histogram(aes(y = ..density..),
                        bins = 10,
                        colour = "grey",
                        fill = "green") +
         labs(title = "身長の分布", x = "身長", y = "確率密度") +
         theme_classic()
```
~~~
`aes`が列選択で`geom_histogram`でグラフの種類の選択をしています。`..density..`は確率密度表記をするために使用するコマンドです。
![色付きヒストグラム](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632117/9e684d9e-1ba8-89b3-ea2b-aef3c095c654.png)

階級の数やヒストグラム色など自分好みにいじることができました。
### 散布図
次は散布図を作成します。`geom_point`で散布図を指定し、`stat_smooth`で回帰直線の描画を設定しています。
~~~
```{r}
ggplot(iris, aes(Sepal.Length,Petal.Length)) +
  geom_point(aes(colour = Species)) +
  stat_smooth(method = lm, se = FALSE, colour = "orange") +
  labs(x = "がく片の長さ",y = "花びらの長さ") +
  theme_classic()
```
~~~
![散布図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632117/af789d69-6d3e-c785-1361-21a84520845c.png)
`geom_point`に`aes`を含めることで品種ごとに色を変えることができました！

#### 品種ごとの回帰直線を表示
~~~
```{r}
ggplot(iris, aes(Sepal.Length,Petal.Length)) +
  geom_point(aes(colour = Species)) +
  stat_smooth(method = lm, se = FALSE, aes(colour = Species)) +
  labs(x = "がく片の長さ",y = "花びらの長さ") +
  theme_classic()
```
~~~
![品種ごとの回帰直線](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632117/ee3dc7d4-6f94-1443-a6a1-94c325dd375a.png)

こちらは`stat_smooth`にaesを含めることで各品種ごとの回帰直線を描画することができました！
かなり自由度があると感じたのでいろいろ試してみたいです。

## おまけ
### stargazerを用いた記述統計の表示

上記の記述統計をさらに見やすくするために**stargazer**で表を出力してみました。
~~~
```{r,results = "asis"}
stargazer(as.data.frame(iris),
          type = "html")
```
~~~
![記述統計](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3632117/a861e407-87a9-2564-29bf-8c4a3c555e59.png)

<dl>
  <dt>Statistic</dt>
  <dd>統計量を表します。</dd>
  <dt>N</dt>
  <dd>データの数を表します。</dd>
  <dt>Mean</dt>
  <dd>平均値を表します。</dd>
  <dt>St.Dev.</dt>
  <dd>standard deviationの略で標準偏差を表します。</dd>
  <dt>Min</dt>
  <dd>最小値を表します。</dd>
  <dt>Max</dt>
  <dd>最大値を表します。</dd>
</dl>

記述統計がかなり見やすくなりました！

# さいごに
今回はRstudioを用いてグラフを描画してみました。
二つのグラフしか作成しませんでしたが、リファレンスを見ると色々なグラフが作れそうだったのでデータの特性にあったグラフを適宜選択して作成できるようになりたいです。
ここまでご覧いただきありがとうございました！
おまけで重回帰分析を行なおうと思いましたが、なぜか品種がカテゴリカルデータだということに途中まで気づかずやめました。多分疲れてます。

# 参考文献

https://ggplot2.tidyverse.org/reference/index.html

https://data-viz-lab.com/ggplot2#21

https://www.ohmsha.co.jp/book/9784274222931/