R&統計学入門[1] Rイントロダクション


## はじめに
Rの入門記事なんてn番煎じですが、ぱぱっとRの機能(Excelに近い機能の部分)を紹介するRのイントロダクションです。
# Rとは

* Rは、多機能データ分析ツールのデファクトスタンダード(事実上の標準)
* データ分析、機械学習、統計グラフの作成に強い
* 多くのことが数行で出来る
* C++とも連携出来る
* 長い歴史による圧倒される便利なパッケージ集
* 源流はAT&T Bell研究所の統計学者によって開発されたS言語
* 使用者層が近いのもあって、PythonのツールはRでの使用も想定されているものが多い(Jupyter Notebook,Anaconda等)
* 変数は動的型付けで、Rの流儀は「1行で済ませる」

## Rの開発環境 RStudio
* RStudioは使いやすくて多機能なIDE
(そしてVisualStudio等と比べてUIが**優しい** = 直感的です)
* Rのコード開発支援のほか、グラフ表示から後述のRMarkdownの機能があるなど超便利
* Rを使う上でこだわりがないなら、Rstudioは使ってみましょう
https://rstudio.com/

# Introduction R
百聞は一見に若かず。使ってみます。

## 対話形式でR

まずはご挨拶！RStudioのコンソールにカーソルを合わせて

```{r}
print("Hello World!")
```

直接表示してもいい

```{r}
"Hello World"
```

変数の使い方はこんな感じ

```{r}
num = 100
print(num * num)
```

printつけなくてもOK

```{r}
num * num
```

代入演算子はこれでもOK

```{r}
num <- 200
num * num
```

基本的な定数は定義されてたりする

```{r}
print(pi)
```

関数のオプションは オプション名 = 引数 で指定できる。
digitsは表示する桁数を指定するオプション

```{r}
print(pi, digits = 16)
```

## Rファイルを作ってやってみる
File -> NewFile -> New RScript

実行してみる。

```{r}
a = 100
b = 200
a + b
```

### 指定行実行

実行範囲を選んで、Runボタンを押す or `Ctrl + Enter`

### 全行実行

`Ctrl + Shift + Enter`

### ベクトルを作る

Rのベクトルは、イメージは1次元配列(サイズ可変)

5から20までのベクトルを生成して代入

```{r}
x = 5:20
x
```

seq関数を使う

```{r}
x = seq(5,20)
print(x)
```

公差 = 2 で作ってみる

```{r}
x = seq(5,20,by = 2)
x
```

lengthオプションで、等分して生成

```{r}
x = seq(5,25,length = 4)
x
```

c関数で作ってみる。(combine=結合の意味)

```{r}
x = c(1.3,4.3,4.6)
x
```

### 乱数生成で作ってみる
参考:http://cse.naro.affrc.go.jp/takezawa/r-tips/r/60.html

0<=x<=1 の一様乱数を作り出すrunif関数

```{r}
x = runif(20)
x
```

正規分布に従って乱数を作り出す。

とりあえず日本人を作ってみる。

rnormは正規分布に従った乱数を生成する関数

国の統計データより、(https://www.e-stat.go.jp/dbview?sid=0003224177)

20歳男性のデータ

* 平均身長:172.3
* 標準偏差 6.9

```{r}
x = rnorm(100, mean = 172.3, sd = 6.9)
x
```

### グラフ化してみよう

hist関数で簡単にグラフを作成できる。

```{r}
hist(x)
```

もっと数を膨大にしてヒストグラムを作ると？

```{r}
x = rnorm(10000, mean = 172.3, sd = 6.9)
length(x)
hist(x)
```

### 様々なデータを取得する

まずは適当なベクトルを作って...

```{r}
x = seq(1,20,by = 3)
y = x + runif(7,-1,1) # -1から1までの乱数を足す
x
y
```
いろいろな基本的な統計量(= 基本統計量)を計算させてみる

```{r}
sum(x) # 和
mean(x) # 平均
max(x) # 最大値
min(x) # 最小値
range(x) # 範囲
sd(x) # 不変標準偏差
var(x) # 分散
cor(x,y) # 相関係数
```

### グラフを表示してみる

参考

[同志社大学のページ](https://www1.doshisha.ac.jp/~mjin/R/Chap_06/06.htm)

[明治大学のページ](https://www.isc.meiji.ac.jp/~mizutani/R/spread/basic_graphics.html)

まずはデータを表示するデータを読み込む。

Rにはデータセット(サンプルのデータみたいなもの)が用意されているので利用する。(data関数)

```{r}
data("VADeaths")
print(VADeaths)
```

このデータは、50歳から74歳までのデータを5つに分けて、その死亡率を田舎(rural)、都会(urban)と男性(male)、女性(female)で分けたもの。(バージニア州の1940年のデータらしいです)

ということで、グラフを表示してみます。
まずは棒グラフを表示するbarplot関数

```{r}
barplot(VADeaths)
```

積み重ねタイプがいやなら、

```{r}
barplot(VADeaths, beside= TRUE)
```

タイトルも設定出来る

```{r}
barplot(VADeaths, beside = FALSE)
title(main = "Deaths Rates (Virginia, 1940)", sub = "this is included by R Standard DataSet")
```

また、horiz = TRUEオプションで横棒にも出来る

```{r}
barplot(VADeaths, horiz = TRUE)
```

---
## おわりに

今回はExcelで出来そうな事をRでやる方法をご紹介しました。
この他多種多様のグラフが使え、またそのオプションも非常に豊富です。

```r
?hist
```
と入力することでヘルプを参照出来ます。

この他にもRにはまだまだ様々なグラフ表示から複雑な統計、機械学習等のメインの機能があります。

そしてそれらの多くは数行で利用出来るように作られているのです。

どうでしょう？Rを学ぶことにモチベーションが湧いてきませんか？

また余力があれば続編を投稿していきます。
ありがとうございました。

## 12/18追記

[続編](https://qiita.com/sakarush/items/65205e9da308530a4530)です、p検定について触れてみましたが、Rの内容がほとんどないです...