Rとは行列計算、統計解析などに利用できるプログラム言語。
簡単なプログラム方法をマスターすれば、難しい数式を覚えることなく簡単に統計分析を行うことができる。
下の方のx <- rnorm(100) # 100 random numbers from a normal(0,1) distributionからhist(result$residuals) # histogram of the residuals from the regressionの部分を窓にペーストしてsubmitを押すと、とりあえず何かしてくれます。
使える手法の例(括弧内は各分析を行うRのプロシジャ名(太字は講義で紹介するプロシジャ)。
library(mva)として多変量解析のライブラリをロードしておくと下記が使える。
注)簡単に計算してくれます が、その結果を解釈してはくれません。解釈するのは自分自身なのです。
1)ためしにつかってみる
2)ちょっと高等なことを
次のように入力
x<-rnorm(100) x hist(x) |
これは正規分布に従う乱数を100個発生させて x というデータセットに入れる。
そのデータを画面に出力。
そのヒストグラムを書いてみたもの。
練習)個数を1000、1000にするとどうなるか?
3)バッチファイルの実行
実行したいコマンドをエディタで入力、テキストファイルに作成しておく。
RでFileメニューの source file メニュー で、そのファイルを指定すると実行してくれる。
をクリック。適当な場所に保存して実行してみる。
4)エラーメッセージ
x<-dorm(100)
と入力、リターン。
dormという関数はないのでエラーになって当然。
エラーが起きるとメッセージが出る。
変数名は英数字。変数名の先頭の文字は英字(大文字、小文字は区別されない)。
C言語のように変数を宣言しておく必要はない。
型宣言も不要。
(unix版ではファイル名は区別する?)。
#ではじまる行はコメント文。実行されない。 オプションの指定方法
1)演習用データ
変数名1 |
変数名2 |
変数名3 |
.... |
|
|
|
|
|
|
1番目のサンプル |
|
|
|
|
|
|
|
|
|
2番目のサンプル |
|
|
|
|
|
|
|
|
|
3番目のサンプル |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2)データの読み込み
ossdata
ossdata$id
とすると、ossdataの中の変数$idが出力される。
mean(ossdata$nofdl)
とすると変数nofdlの平均を計算。
#箱ひげ図
boxplot(ossdata$nofdl)
boxplot(ossdata$nfrmsggr)
boxplot(ossdata$nfrcommented)
boxplot(ossdata$nfrreplied)
par(mfrow=c(1,1))
boxplot(ossdata$nofdl)
boxplot(ossdata$nfrmsggr)
boxplot(ossdata$nfrcommented)
boxplot(ossdata$nfrreplied)
library(mva)として多変量解析のライブラリをロードしておくと下記が使える。
2)処理対象サンプルの部分指定
|
条件式は下記のように指定
>
<
== 等しい(==が二つ重なることに注意)
例
#idが10よりも大きいオブザベーションについて、変数nofdlの
値を書き出す ossdata$nofdl[ossdata$id>10] #idが10よりも大きいオブザベーションだけを取り出して別のデータセットに。 pardat<-ossdata[ossdata$id>10,] pardat #1番目から10番目と、20から30番目のオブザベーションを取り出す ossdata[c(1:10,20:30),] #データセットに含まれる変数すべてについて、欠損値がないサンプルであるかを判定 (結果はT,F) #欠損値がないかを判定 #complete.cases(データセット名) ossdata$d<-complete.cases(ossdata) ossdata$d #欠損値がないサンプルだけを取り出す ossdata[ossdata$d==T,] |
応用練習 1)変数 2) 3) |
#edit(データセット名) edit(ossdata) |
・並べ替え
#並べ替え sort()
指定したベクトルを並べ替える==>並べ替えられたベクトルが返ってくる。 sort(ossdata$nofdl) #デフォルトでは小さい順に並べ替える。(文字列はASCIIコード順) ?sort #逆順に並べ替えたいときは decreasing = T オプションを指定 sort(ossdata$nofdl,decreasing = T) #rank() 指定したベクトルを並べ替えたときに何番目にランクされるかを算出。>もともと のベクトルの要素ではなく、順位=数字を要素として持つベクトルが返ってくる。 rank(ossdata$nofdl) #rankとsortの関係を確認 data.frame(ossdata$nofdl,sort(ossdata$nofdl),rank(ossdata$nofdl)) #rankを利用して、nofdlの小さい順にオブザベーションを並べ替える sdat<-ossdata[rank(ossdata$nofdl),] #エディタでみてみる edit(sdat) |
4)Tips
#コマンドの使い方など、わからないことがあったら ?コマンド名 ?plot #もしくは help.search("plot") help.search("ttest") #実行例をみる example(コマンド名) #すべてのコマンドについて実行例があるわけではない example(plot) example(hist) #データセットを指定するのが面倒な場合 #apply(データセット名) 関数 :データセットをサーチパスに加える #こうすると、変数名だけを指定すればよくなる。 id #applyしていないのでデータセット名を指定しなければエラーになる apply(ossdata) id #applyしたのでデータセット名を指定しなくてもok |