R言語 / RStudioの基礎

## このページについて
タイトルの通りです。
統計を少しいじりたかったので、
R言語とRStudioを少し触ってみました。

## RとRStudioのインストール
↓この記事を参考にさせて頂きました。
https://qiita.com/hujuu/items/ddd66ae8e6f3f989f2c0

## Hello World!
1). RStudioを起動する
2). R Scriptを新規で作成する<br>
    <img width="312" alt="スクリーンショット 2017-10-28 22.17.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/150348/7114bb26-6338-408f-db18-d314f3921ed6.png">
3). 作成されたエディタに入力する<br>

```r
print('Hello World')
```
4). command + returnで実行できる

```:console
> print('Hello World')
[1] "Hello World"
```

## 変数への代入
R言語では"<-"の記号を利用して変数に値を代入する。
この変数に代入する値のことをオブジェクトと呼ぶ。
下の例では、100というオブジェクトをxという変数に代入、
5というオブジェクトをという変数に代入している。

```r
x <- 100
y <- 5
x * y
# [1] 500
```

## ベクトル
R言語の中で同じ種類のデータをまとめて取り扱うためのデータの型。
cという関数で取り扱う。

例1

```r
x <- c(2,3,5,7,11)
sqrt(x)
# それぞれの平方根を計算する
# [1] 1.414214 1.732051 2.236068 2.645751 3.316625
mean(x)
# 平均値を取得する
# [1] 5.6
```
例2

```r
# 国語の点数
kokugo  <- c(50,60,70,80,90)
# 数学のの点数
suugaku <- c(10,20,30,40,50)

# 個々の平均点の取得
heikin  <- (kokugo + suugaku) / 2
heikin
# 全体の平均点を取得
mean(heikin)

```

## データの読み込み
CSVデータを読み込むことができる。
読み込まれたデータはデータフレーム(data.frame)という形式で読み込まれる。

ここでは例として以下のようなCSVファイルを読み込んでみる

```
id,kokugo,suugaku,rika,syakai,english,total
1,97,66,65,9,23,260
2,31,73,33,7,10,154
3,72,47,28,27,97,271
4,48,60,54,70,12,244
5,54,69,30,77,2,232
6,96,52,25,92,58,323
7,28,67,4,74,46,219
8,9,24,85,51,66,235
9,11,60,57,63,66,257
10,14,23,78,33,71,219
11,10,71,56,26,63,226
12,29,31,12,5,96,173
13,36,32,57,24,11,160
14,17,86,58,67,38,266
15,44,90,54,61,49,298
16,70,34,99,11,7,221
17,39,52,59,70,78,298
18,62,62,39,43,50,256
19,2,49,72,40,50,213
20,24,27,6,77,88,222
```

1). CSVの取り込み
<img width="376" alt="スクリーンショット 2017-10-29 0.02.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/150348/1233e301-9ce7-9930-522e-adb6cf702417.png">

2). 読み込みの設定
<img width="366" alt="スクリーンショット 2017-10-29 0.03.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/150348/bf20bc35-a5b1-bfab-50a9-1b107eb82fe9.png">
ここで、
データの名前や行/列の見出し設定などができる。
Headingの設定をYesにすると最初の行が見出しとして認識される。
Row namesをUse first columnに設定すると最初の列が見出しとして認識される。

3). 読み込み成功
<img width="673" alt="スクリーンショット 2017-10-29 0.06.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/150348/3358718c-61be-c210-2806-3d600a5fc7de.png">

## 読み込んだデータを使用してみる
### 読み込みデータの概要をみる

```r
summary(test) #ここでtestとは読み込んだdata名のこと
```

```:結果
     kokugo         suugaku           rika      
 Min.   : 2.00   Min.   :23.00   Min.   : 4.00  
 1st Qu.:16.25   1st Qu.:33.50   1st Qu.:29.50  
 Median :33.50   Median :56.00   Median :55.00  
 Mean   :39.65   Mean   :53.75   Mean   :48.55  
 3rd Qu.:56.00   3rd Qu.:67.50   3rd Qu.:60.50  
 Max.   :97.00   Max.   :90.00   Max.   :99.00  
     syakai         english          total      
 Min.   : 5.00   Min.   : 2.00   Min.   :154.0  
 1st Qu.:25.50   1st Qu.:20.25   1st Qu.:219.0  
 Median :47.00   Median :50.00   Median :233.5  
 Mean   :46.35   Mean   :49.05   Mean   :237.3  
 3rd Qu.:70.00   3rd Qu.:67.25   3rd Qu.:261.5  
 Max.   :92.00   Max.   :97.00   Max.   :323.0  
```
読み込んだデータの最小値 / 第1四分位 / 中央値 / 第3四分位 / 最大値 とか出してくれる。
すげぇ、面白い。

個々に出力することも可能

```r
summary(test$kokugo)
```

```:結果
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00   16.25   33.50   39.65   56.00   97.00 
```

### 色々なグラフを作成してみる
#### ヒストグラム

```r
hist(test$kokugo)
```
![Rplot.png](https://qiita-image-store.s3.amazonaws.com/0/150348/be9049b0-a877-f1a1-50d6-7b7fdb945c27.png)

#### プロット

```r
plot(test)
```
![Rplot01.png](https://qiita-image-store.s3.amazonaws.com/0/150348/81ea5582-7fc4-5b17-3451-cccb0f8771f9.png)

各変数間のプロットを一覧で表示可能。
もちろん個々に出すことも可能

```r
plot(test$rika, test$syakai)
```
![Rplot02.png](https://qiita-image-store.s3.amazonaws.com/0/150348/5dab4c43-a77a-4b6c-66a3-fbe02bd40466.png)

### 相関係数の出力
相関係数も簡単に出力できます。

```r
cor(test)
```

```
             kokugo    suugaku        rika      syakai
kokugo   1.00000000  0.1185810 -0.12174162 -0.03417909
suugaku  0.11858102  1.0000000 -0.14901840  0.22006013
rika    -0.12174162 -0.1490184  1.00000000 -0.29257771
syakai  -0.03417909  0.2200601 -0.29257771  1.00000000
english -0.25161833 -0.3534143 -0.28899252  0.08971483
total    0.42703578  0.3397150  0.06350883  0.58819087
            english      total
kokugo  -0.25161833 0.42703578
suugaku -0.35341429 0.33971503
rika    -0.28899252 0.06350883
syakai   0.08971483 0.58819087
english  1.00000000 0.24823716
total    0.24823716 1.00000000
```
いや〜、便利ですね。
ただ改行が微妙な感じですが。
どっかで設定できるのかはわかりません...

## 回帰分析
### 単回帰分析

```r
lm(total~kokugo, test)
```

```:結果
Call:
lm(formula = total ~ kokugo, data = test)

Coefficients:
(Intercept)       kokugo  
   210.8110       0.6693  
```
この結果をそのまま飲み込むと、
total = 210.8110 + 0.6693 * kokugo となります。
ちなみに、今回のデータは適当な数字なので、相関はないと思います。

詳細の出力は以下のようにすることで出力可能です。

```r
result <- lm(total~kokugo, test)
summary(result)
```

```:結果
Call:
lm(formula = total ~ kokugo, data = test)

Residuals:
    Min      1Q  Median      3Q     Max 
-77.560 -15.150   0.956  23.330  61.085 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 210.8110    16.1041  13.091 1.23e-10 ***
kokugo        0.6693     0.3341   2.004   0.0604 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 40.96 on 18 degrees of freedom
Multiple R-squared:  0.1824,	Adjusted R-squared:  0.1369 
F-statistic: 4.015 on 1 and 18 DF,  p-value: 0.0604
```

### 重回帰分析
重回帰分析も単回帰分析と同じようにできるみたいです。

```r
result <- lm(total~kokugo+suugaku, test)
summary(result)
```

```
Call:
lm(formula = total ~ kokugo + suugaku, data = test)

Residuals:
    Min      1Q  Median      3Q     Max 
-90.372 -20.935   0.732  24.741  62.171 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 178.5155    27.8683   6.406 6.52e-06 ***
kokugo        0.6148     0.3278   1.876   0.0779 .  
suugaku       0.6410     0.4572   1.402   0.1789    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 39.91 on 17 degrees of freedom
Multiple R-squared:  0.2671,	Adjusted R-squared:  0.1809 
F-statistic: 3.098 on 2 and 17 DF,  p-value: 0.07125
```

## 感想
これは本当に便利ですね。
色々できるのでデータ見ているだけで面白いです。
私は統計自体素人に毛が生えた程度なので、
改めて統計を勉強していきたいと思います。

## 勉強に使わせて頂いたサイト
https://www.slideshare.net/m884/japan-r-15432969