R では,自作関数を用いて分析することも可能です.
プログラムといっても,すごく高度なものもできるようですが,とりあえず初歩の初歩として,関数の形を見ると次のようになります.
> xsum<-function(x,y){
+ z=x+y;
+ print(z);
+ }
> xsum(2,3)
[1] 5
>
詳しくはまた別の回に報告しますが,ようは「function」で宣言し,改行に「;」を使って,それぞれの文を書いていきます.また,どちらかというと手続き型ではなく,関数形で,戻り値があるという感じです.少しずつ覚えていきます.
とりあえず.
2008/09/12
ファイルメニューのディレクトリ変更(Windows)
ファイルメニューの "ディレクトリの変更" で,作業フォルダを指定できる.これにより読む込むファイルや出力先をディレクトリパスを書かずにファイルを指定できる(デフォルトのフォルダを設定の意味)ができる.特にディレクトリパスに抵抗がなければ変更の必要はありません.ちなみに ".RData" 等のファイルの置き場所に関係するので,分からない場合は,触らない方がお勧めです.
データの入力と編集
データの入力の方法(他のソフトからのデータの受け渡し)もいろいろできます.
少ないデータであれば,c(データ) や matrix で入力もできますが,わりと大きめなデータであれば,Excel 等で入力することが楽です.Excel で入力してあとに,形式をカンマ区切り(CSV)形式でファイルにデータを保存します.R Console で,"sampledata<-read.csv("sampleset.csv",header=T)" とすると一行目を列名として取り込み,残りをデータとして R にデータセット名 "sampledata" として取り込めます.
すでに入力済みのデータ(ここではこのデータ名を『sampledata』とします)を編集する場合,"fix(sampledata)" ト入力すると「データエディタ」画面が表示され,表計算ソフトと同様にデータを編集することが可能です.データの編集が終わったら,右上の「×」ボタンをクリックしてデータエディタを閉じます.また"sampledataNew<-edit(sampledata)" と入力するとsampledata と別の名前のデータセット(ここでは sampledataNew)に編集後のデータをコピーできます.ちなみに編集するデータセットと同じ名前(ここでは sampledata)にすると上書きにデータセットのデータを変更することが可能で,fix と同じ使い方ができます.
データエディタが出ている間は R Console での作業ができないので注意してください.
少ないデータであれば,c(データ) や matrix で入力もできますが,わりと大きめなデータであれば,Excel 等で入力することが楽です.Excel で入力してあとに,形式をカンマ区切り(CSV)形式でファイルにデータを保存します.R Console で,"sampledata<-read.csv("sampleset.csv",header=T)" とすると一行目を列名として取り込み,残りをデータとして R にデータセット名 "sampledata" として取り込めます.
すでに入力済みのデータ(ここではこのデータ名を『sampledata』とします)を編集する場合,"fix(sampledata)" ト入力すると「データエディタ」画面が表示され,表計算ソフトと同様にデータを編集することが可能です.データの編集が終わったら,右上の「×」ボタンをクリックしてデータエディタを閉じます.また"sampledataNew<-edit(sampledata)" と入力するとsampledata と別の名前のデータセット(ここでは sampledataNew)に編集後のデータをコピーできます.ちなみに編集するデータセットと同じ名前(ここでは sampledata)にすると上書きにデータセットのデータを変更することが可能で,fix と同じ使い方ができます.
データエディタが出ている間は R Console での作業ができないので注意してください.
2008/09/08
R での統計グラフ

R でも他の統計ソフトと同様に様々な統計グラフを用いることができます.以下で紹介する以外にも表示する方法があるので参考までにしてください.
まずは,縦棒・横棒グラフ(barplot).height のデータを単に「barplot(height)」と入力したら図のようになります.引数に names.arg=c("a","b","c","d","e") などとを指定すると棒グラフのラベルが付きます.horiz=0 で縦棒,horiz=1 で横棒,beside は複数の属性の棒を立てるときに使うみたいです.行列でデータを渡し,beside を f にすると帯グラフになりそう(今度試してみます).xlab で x 軸のラベル,ylab で y 軸のラベル.axes で縦軸(または横軸)の表示の有無を設定できます.
他の図も随時紹介していきましょう.とりあえず主なグラフとして折れ線グラフ(matplot),円グラフ(pei),帯グラフ(barplot),散布図(plot),散布図行列(pairs),ヒストグラム(hist),箱ひげ図(boxplot)~data(condition),ドットチャート,また箱ひげ図と散布図の組み合わせた scatterplot もあります.
今回は時間がなかったので,紹介のみです.help で調べると英語のマニュアルが読めますので,オプション等は参考できます.
2008/06/21
データを集計しよう
データを集計するのときは,table 関数を使います.
table(変数名) で一変数のデータの度数分布表を作成します.また table(変数名,変数名) で,クロス集計をしてくれます.ちなみに 1 番目の変数が表側,2 番目が表頭にきます.
連続データの場合は,cut(変数名,breaks=seq(150,180,10)) を用いると可能です.たとえば, table(sex,cut(height,breaks=seq(150,180,10))) と書くと階級に分けながらクロス集計もできます.ちなみにこの場合 (○,△] と書かれていますが,これは右端を含んで,左端を含まないことになります.
ヒストグラムだけが必要な場合は,hist を使いましょう.これはグラフのところで紹介します.
table(変数名) で一変数のデータの度数分布表を作成します.また table(変数名,変数名) で,クロス集計をしてくれます.ちなみに 1 番目の変数が表側,2 番目が表頭にきます.
連続データの場合は,cut(変数名,breaks=seq(150,180,10)) を用いると可能です.たとえば, table(sex,cut(height,breaks=seq(150,180,10))) と書くと階級に分けながらクロス集計もできます.ちなみにこの場合 (○,△] と書かれていますが,これは右端を含んで,左端を含まないことになります.
ヒストグラムだけが必要な場合は,hist を使いましょう.これはグラフのところで紹介します.
R でデータの分布を表す散布図や箱ひげ図,ヒストグラムを書こう
R には多数のグラフ機能がありますが,とりあえず 2 変量のデータの分布を確認する際に利用する散布図を書いてみましょう.
この前のデータセットを利用してもできるのですが,軸に変数名の表示をしたいこともありますので,とりあえず height<-sampledata[[2]] などと列の値を改めて変数に入れておきます(もっと楽な方法を探しています)※この意味だとデータセットの前に変数の概念を紹介したほうが良いか….
これにより,height と weight の変数を作ります.これで plot(height,weight) とすると散布図が表示されます.ちなみに plot 関数で引数を一つだけにすると横軸(x 軸)に対象番号(index),縦軸(y 軸)にその変数の値で散布図を書きます.xlim=c(下限,上限)で,横軸(x 軸)の表示範囲を指定できます.同様に ylim で縦軸(y 軸)の表示範囲を指定できます.
また,1 変量のデータの分布を確認するボックスプロット(箱ひげ図)は boxplot 関数で利用できます.boxplot(変数名) で表示できます.ちなみにオプションで,horizontal=F とすると縦向き,T なら横向きに箱を表示します.なお,引数にデータ名を続けて書くと,複数のボックスを書くことになります.ちなみに所属グループの列が対応して入力していたら,変数名~属性変数名とすることで,属性ごとの箱を同時作図してくれます.外れ値の設定などもできるようです.
hist 関数を使うとヒストグラムも書けます.単純に hist(変数名) とすると変数の度数によるヒストグラムを作成してくれます.このとき breaks = seq(下限,上限,階級の幅)で指定するとそれに従ったヒストグラムを書いてくれます.
これらの分布を知るグラフを利用することはデータ分析の基本ですね.使いこなしましょう.
この前のデータセットを利用してもできるのですが,軸に変数名の表示をしたいこともありますので,とりあえず height<-sampledata[[2]] などと列の値を改めて変数に入れておきます(もっと楽な方法を探しています)※この意味だとデータセットの前に変数の概念を紹介したほうが良いか….
これにより,height と weight の変数を作ります.これで plot(height,weight) とすると散布図が表示されます.ちなみに plot 関数で引数を一つだけにすると横軸(x 軸)に対象番号(index),縦軸(y 軸)にその変数の値で散布図を書きます.xlim=c(下限,上限)で,横軸(x 軸)の表示範囲を指定できます.同様に ylim で縦軸(y 軸)の表示範囲を指定できます.
また,1 変量のデータの分布を確認するボックスプロット(箱ひげ図)は boxplot 関数で利用できます.boxplot(変数名) で表示できます.ちなみにオプションで,horizontal=F とすると縦向き,T なら横向きに箱を表示します.なお,引数にデータ名を続けて書くと,複数のボックスを書くことになります.ちなみに所属グループの列が対応して入力していたら,変数名~属性変数名とすることで,属性ごとの箱を同時作図してくれます.外れ値の設定などもできるようです.
hist 関数を使うとヒストグラムも書けます.単純に hist(変数名) とすると変数の度数によるヒストグラムを作成してくれます.このとき breaks = seq(下限,上限,階級の幅)で指定するとそれに従ったヒストグラムを書いてくれます.
これらの分布を知るグラフを利用することはデータ分析の基本ですね.使いこなしましょう.
変数の[[]] と [] には違いがあります
変数名のあとに [[○]] とか [○] をつけて,値を他の変数に渡すことが可能ですが,[[○]] だと各数値をそれぞれ,[○] だと列ごとを渡します.データセットの列名だとしづらい場合に,改めて,変数に値を渡すときには [[○]] で渡した方がよいでしょう.もっと良い方法がありそうなので,また探してみます.
登録:
投稿 (Atom)