RはRStudio内から操作されるので陽に意識する必要はない
5+3 # 加算
## [1] 8
5^3 # べき乗
## [1] 125
5%%3 # 剰余
## [1] 2
sqrt(5) # 平方根
## [1] 2.236068
【補足】以後、資料中の、灰色の囲みエリアは、Sourceペインでの利用者の入力画面を示し、白い囲みエリアはConsoleペインのシステムからの計算結果画面を示す。 また「#」(半角)マークより右側は利用者への説明のためのコメントであり、計算には影響しない。
任意の「式を入力」後、「Ctrl+Enter」で実行する。
データを格納するために、変数やベクトル、行列の取り扱いを理解しよう。
値を保持させるものとして、英数字で変数を定義できる。 左矢印(に見えるかな?)で値を代入している(定義している)ことを示している。 その際、英字の大文字と小文字は別のものとして取り扱われることに注意せよ。
[操作] Sourceペイン(左上)に1行入力するごとに、「Ctrl+Enter」で実行する。 計算結果はConsoleペイン(左下)に表示される。以下では、薄い灰色部分が Sourceペインの入力を示している。このテキストからコピーペーストすれば手入力の手間を省くことができる。また、複数行を選択(ハイライト)後、 「Ctrl+Enter」をすると、複数行を一気に実行することができる。
なお、新たに定義された変数は、Environmentペイン(右上)に表示される。 また、シャープ記号(#)の後ろは「コメント」であり、Rの実行には無関係である。読者への説明用に記入してある。
皆さんのアンケートの中から、任意の5人を抽出して、 この5人のデータに対する処理方法を紹介する。
Xvec<-c(156,162,166,174,178) # 要素数5のベクトルの定義(方法2)
Xvec # 定義したベクトルを表示させてみる
## [1] 156 162 166 174 178
mean(Xvec) # ベクトルの要素の平均値を求める
## [1] 167.2
Yvec<-c(50,65,57,82,67) # 方法2
Yvec
## [1] 50 65 57 82 67
mean(Yvec)
## [1] 64.2
Xvec[1] # 1番目の要素の値は 156 =1人目の身長
## [1] 156
Yvec[4] # 4番目の要素の値は 82 =4人目の体重
## [1] 82
統計では、縦方向にサンプル(1人目、2人目、…)を、 横方向に変量(身長、体重等)を2次元的に配置して分析に供することが一般的である。
ベクトルを横方向に連結して行列を作る。ここでは取り上げないが、 新たなサンプルが採取できたような場合(サンプルの追加)は、縦方向に連結する(行結合する)ことになる。
XYmatrix<-cbind(Xvec,Yvec)
XYmatrix
## Xvec Yvec
## [1,] 156 50
## [2,] 162 65
## [3,] 166 57
## [4,] 174 82
## [5,] 178 67
特定の要素の値を参照するには角括弧で要素番号を指定する。
XYmatrix[1,1] # (1,1)の要素の値は179 =1人目の身長
## Xvec
## 156
XYmatrix[4,2] # (4,2)の要素の値は61 =4人目の体重
## Yvec
## 82
XYmatrix[,1] # 2次元目が1の要素を順に表示(=身長を全部表示)
## [1] 156 162 166 174 178
XYmatrix[3,] # 1次元目が3の要素を順に表示(3人目の要素を全部(身長と体重)表示)
## Xvec Yvec
## 166 57
mean(XYmatrix)
## [1] 115.7
mean(XYmatrix[,1]) # 身長の平均値を求める
## [1] 167.2
mean(XYmatrix[,2]) # 体重の平均値を求める
## [1] 64.2
# 方法1
sum((XYmatrix[,1]-mean(XYmatrix[,1]))^2)/(length(XYmatrix[,1])-1) # 一発で書くと
# 方法2: 方法1の各項を変数に代入して逐次的に値を確認してみる
XHensa<-XYmatrix[,1]-mean(XYmatrix[,1]) # 平均との偏差
XHensaSq<-XHensa^2 # 偏差の2乗
XHensaSqSum<-sum(XHensaSq) # 偏差の2乗和
Xlen<-length(XYmatrix[,1]) # データの個数
XVar<-XHensaSqSum/(Xlen-1) # 分散
XHensa # 平均との偏差
XHensaSq # 偏差の2乗
XHensaSqSum # 偏差の2乗和
Xlen # データの個数
XVar # 分散
# 方法3
var(XYmatrix[,1]) # 身長の分散を求める
# 方法1
## [1] 79.2
# 方法2
## [1] -11.2 -5.2 -1.2 6.8 10.8
## [1] 125.44 27.04 1.44 46.24 116.64
## [1] 316.8
## [1] 5
## [1] 79.2
# 方法3
## [1] 79.2
今後利用することになる関数のいち部を紹介しておく。 単体では「ありがたみ」が判らないかもしれないが、 グラフの軸ラベル等に使ったりする。
seq(1:10) # 1から10まで10個の要素のベクトルを生成(1つずつ順に))
## [1] 1 2 3 4 5 6 7 8 9 10
seq(10,100,10) # 10から100まで10飛ばしで10個の要素のベクトルを生成
## [1] 10 20 30 40 50 60 70 80 90 100
rep(3,8) # 3を8回繰り返す
## [1] 3 3 3 3 3 3 3 3
3:7 # 3から7までを順に表示
## [1] 3 4 5 6 7
rep(3:7,3) # {3,4,5,6,7}のベクトルを3回繰り返す
## [1] 3 4 5 6 7 3 4 5 6 7 3 4 5 6 7
このページで取り扱ったプログラムだけを抜き出して以下に列挙しておく。
## 2. 【再掲】画面構成とそれぞれのペインの役割
5+3 # 加算
5^3 # べき乗
5%%3 # 剰余
sqrt(5) # 平方根
## 3. Rでプログラムが書けるようになろう
## 3.1. 変数とベクトルを理解する
Xvec<-c(156,162,166,174,178) # 要素数5のベクトルの定義(方法2)
Xvec # 定義したベクトルを表示させてみる
mean(Xvec) # ベクトルの要素の平均値を求める
# [演習3.1-1]
Yvec<-c(50,65,57,82,67) # 方法2
Yvec
mean(Yvec)
Xvec[1] # 1番目の要素の値は 156 =1人目の身長
Yvec[4] # 4番目の要素の値は 82 =4人目の体重
## 3.2. 行列への拡張
XYmatrix<-cbind(Xvec,Yvec)
XYmatrix
XYmatrix[1,1] # (1,1)の要素の値は156 =1人目の身長
XYmatrix[4,2] # (4,2)の要素の値は82 =4人目の体重
XYmatrix[,1] # 2次元目が1の要素を順に表示(=身長を全部表示)
XYmatrix[3,] # 1次元目が3の要素を順に表示(3人目の要素を全部(身長と体重)表示)
# [演習3.2-1]
mean(XYmatrix)
# [演習3.2-2]
mean(XYmatrix[,1]) # 身長の平均値を求める
mean(XYmatrix[,2]) # 体重の平均値を求める
# [演習3.2-3: 発展]
# 方法1
sum((XYmatrix[,1]-mean(XYmatrix[,1]))^2)/(length(XYmatrix[,1])-1) # 一発で書くと
# 方法2: 方法1の各項を変数に代入して逐次的に値を確認してみる
XHensa<-XYmatrix[,1]-mean(XYmatrix[,1]) # 平均との偏差
XHensaSq<-XHensa^2 # 偏差の2乗
XHensaSqSum<-sum(XHensaSq) # 偏差の2乗和
Xlen<-length(XYmatrix[,1]) # データの個数
XVar<-XHensaSqSum/(Xlen-1) # 分散
XHensa # 平均との偏差
XHensaSq # 偏差の2乗
XHensaSqSum # 偏差の2乗和
Xlen # データの個数
XVar # 分散
# 方法3
var(XYmatrix[,1]) # 身長の分散を求める
## 3.3. 便利な関数: seq(), rep()
seq(1:10) # 1から10まで10個の要素のベクトルを生成(1つずつ順に))
seq(10,100,10) # 10から100まで10飛ばしで10個の要素のベクトルを生成
rep(3,8) # 3を8回繰り返す
3:7 # 3から7までを順に表示
rep(3:7,3) # {3,4,5,6,7}のベクトルを3回繰り返す