R言語 / RStudioの基礎


このページについて

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

RとRStudioのインストール

↓この記事を参考にさせて頂きました。
https://qiita.com/hujuu/items/ddd66ae8e6f3f989f2c0

Hello World!

1). RStudioを起動する
2). R Scriptを新規で作成する


3). 作成されたエディタに入力する

print('Hello World')

4). command + returnで実行できる

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

変数への代入

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

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

ベクトル

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

例1

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

# 国語の点数
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の取り込み

2). 読み込みの設定

ここで、
データの名前や行/列の見出し設定などができる。
Headingの設定をYesにすると最初の行が見出しとして認識される。
Row namesをUse first columnに設定すると最初の列が見出しとして認識される。

3). 読み込み成功

読み込んだデータを使用してみる

読み込みデータの概要をみる

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四分位 / 最大値 とか出してくれる。
すげぇ、面白い。

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

summary(test$kokugo)
結果
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   2.00   16.25   33.50   39.65   56.00   97.00 

色々なグラフを作成してみる

ヒストグラム

hist(test$kokugo)

プロット

plot(test)

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

plot(test$rika, test$syakai)

相関係数の出力

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

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

いや〜、便利ですね。
ただ改行が微妙な感じですが。
どっかで設定できるのかはわかりません...

回帰分析

単回帰分析

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

Coefficients:
(Intercept)       kokugo  
   210.8110       0.6693  

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

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

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

重回帰分析

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

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

感想

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

勉強に使わせて頂いたサイト