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 での作業ができないので注意してください.

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 を使いましょう.これはグラフのところで紹介します.

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(下限,上限,階級の幅)で指定するとそれに従ったヒストグラムを書いてくれます.

これらの分布を知るグラフを利用することはデータ分析の基本ですね.使いこなしましょう.

変数の[[]] と [] には違いがあります

変数名のあとに [[○]] とか [○] をつけて,値を他の変数に渡すことが可能ですが,[[○]] だと各数値をそれぞれ,[○] だと列ごとを渡します.データセットの列名だとしづらい場合に,改めて,変数に値を渡すときには [[○]] で渡した方がよいでしょう.もっと良い方法がありそうなので,また探してみます.

テキストファイルに書かれたデータを読み込もう

カンマ区切りやタブ区切りといったテキストファイルに書かれたデータを読み込むことができればかなり分析のバリエーションが広がるでしょう.今回はこれを紹介します.

まずはカンマ区切りやタブ区切りといったテキストファイルを準備します.また一行目には変数名を書いてあることを前提にします.変数名はなくてもできますが,データを目的によって分析するためにもあることがわかりやすいためです.また,このファイルを作業ディレクトリに置きます.作業ディレクトリは getwd() 関数で表示することができます.ちなみに Windows 版 R だと,「ファイル」メニューの「作業ディレクトリの変更」でディレクトリ(フォルダ)を変更することも可能です.もちろん作業ディレクトリを意識せずにファイルを指定すれば読むこともできますが,日本語や空白入力になることもあるためここでは,作業ディレクトリにあることを前提とします.

作業ディレクトリにデータのテキストファイルを置くことができたら,R のコマンドで,sample<-read.table("ファイル名",header=T,sep=",")のように入力します(最初の sample はデータセット名になります.適当な名前を付けてください).header オプションは一行目に変数名があることを示します.0 だと一行目からデータとして読み込まれます.sep は区切り文字を指定します.タブ区切りの場合は,"\t" を入力しましょう.他にもコマンド等を避けるために何行目から読む込むことを指示する skip もある.

ただ完全に一行目の変数名等になっていたら,カンマ区切りは read.csv("ファイル名"),タブ区切りはread.delim("ファイル名") でも読み込み可能です.

データの計算するときは,mean(sample) などと入力すると使えます.mean(sample[1]) とすると 1 列目の平均値を出力します.mean(sampledata[2:3]) とすると 2, 3 列目を出力します.ちなみに変数名も同時に出力してくれるので,わかりやすいと思います.ちなみに変数名は表示されますが,オブジェクトとしては認識されていませんので(データセット全体として認識されています),変数を別途に認識させるか,データセット名[1] のように使います.ひょっとしたら良い方法があるかもしれないので,探してみます.

2008/06/15

データの入力と単純計算

Rでデータを入力するのは以下のようにしていけば可能です.もちろんこれ以外に行列で入力やファイルで読み込みなどいろいろできます.ここでは一番単純なことを紹介します.

c(○,○,○,…,○)とするとベクトルでデータ(1 変数のデータ)を表現できます.これを常に入力していけば平均値等も求められます.例えば,平均値だと mean 関数を使いますが, mean(c(154,167,183,143)) となります.これでもよいのですが,統計は基本的に測定に対して数値(データ)が得られますので,変数の値として入力することがお勧めです.変数は適当な名前をつけて,それにこのベクトルでのデータを渡しましょう.渡し方は「変数名<-c(○,○,○,…,○)」となります(日本語も同様に使えます).「身長<-c(154,167,183,143)」とすると「身長」という変数に数値(データ)が渡されます.ここで「身長」と入力するとその数値が表示されます.

もちろん計算するときはこの変数名を使えます.平均値を求める場合は,mean 関数を使って mean(身長),中央値は median 関数を使って,median(身長),その他にも基本統計量では,最大値 max,最小値 min,総和 sum,不偏分散 var,その標準偏差 sd,四分位偏差 IQR,五点要約値(最小値,下側ヒンジ,中央値,上側側ヒンジ,最大値)fivenum,ヒンジを 25%,75% に変えた quantile も使える.Excel は quantile と同じ値.またデータの個数(正確には標本の大きさ)length などを使います.これらの関数を使うと,範囲(レンジ)も max-min をして(単に range で求めると最大値と最小値を出力),また四分位範囲は IQR*2 と求めることが可能です(ただし,四分位点の取り方によって計算が一致しない).ちなみに summary を使うと五点要約(quatile を使ったときの値)と平均値をざっと出してくれます.またパッケージ e1071 を使うと skewness(),kurtosis() で,歪度と尖度も求められます.なお,Windows で,パッケージを読む込むには,[パッケージ] メニューから [パッケージの読み込み] を選び,該当するパッケージを選びます.なお,ave 関数を使うと変数の標本の大きさの平均値が求められる.これで偏差は変数名-ave(変数名) を使い,変数で求められる.

また rank 関数を使うと昇順(小さい順)のそれぞれの順位を表示することが可能です.またタイデータ(同値データの扱いも 5 種類から設定できます).

R を使うと簡単にデータの要約値が求まるので,便利です.

Rで基本計算

Rで単純計算は簡単です.今回は計算をしてみましょう.


Rを起動して,あとはプロンプト(っていうのかな?行頭の「>」のことです)のあとで,計算式を入力します.四則演算はそれぞれたし算「+」,ひき算「-」,かけ算「*」,わり算「/」です.また演算順を制御する丸カッコ「()」やべき乗の「^」も使えます.もちろん小数や負の数の計算も基本的に問題なくできます.

また簡単なコマンドで数値を求めることもももちろんできます.たとえば,平方根は sqrt 関数を使います.sqrt(2) と入力すると 1.414…と表示されます.また,pi と入力すると現在の設定での表示桁数で円周率(標準では,3.141593)と表示されます.また三角関数 sin,cos,tan も使えます.ただしラジアンでの表記のため引数には注意してください.たとえば,30°の正弦の値を求めるときは,sin(pi/6) と入力します(結果は 0.5).また自然対数の底の累乗は exp 関数を使います.exp(1)=2.718282 となります.

対数関数も同様に log 関数で使えます.第 1 引数で真数を,第 2 引数で底を指定します.具体的には log(2,4) と入力すると 0.5 が表示されます.底の指定は base= とする場合もあります.底を指定しない場合は,自然対数となります.またそれぞれ底が 2 のときの log2(例:log2(4)=2),常用対数の log10 関数(例:log10(100)=2)もあります.

組み合わせ関係は現在のバージョンでは使えそうです.choose 関数で組み合わせ総数(例:choose(10,2)=45.階乗計算は factorial 関数を使います(例:factorial(3)=6).順列や累乗根の関数はまだ標準ではないようです.

関数を使う場合に悩んだらヘルプを使ってみましょう.ヘルプの使い方もいくつか方法がありますが,関数名がわかっていたら help(関数名)と入力するとその項目が表示されます.たとえば,help(log) で log 関数のヘルプが出ます(Windows ではそうですが,他の OS ではわかりません).また関数名がわからない場合は,help.search を使うとヘルプをキーワードで検索することが可能です.たとえば組み合わせの関数を探したい場合は, help.search("combination") と入力すると別ウィンドーで結果が表示されます(コンソールを全画面表示にしている場合は,画面の切り替えに注意).Windows の場合は,ヘルプウィンドーを使う方が使いやすい場合もありますので,使いやすい方を使いましょう.

2008/06/14

R で共分散構造分析

要因分析をするために回帰分析は使えない(回帰モデルでは変数間の関係が適切とは言えない場合があるので)のでモデルをいろいろ考えられる共分散構造分析が要因分析にはあっています.でも具体的に利用するには SPSS & AMOS などちょっとコストが必要です.なかなか文系大学だと購入は厳しいといえます.

そんなときには R を利用しましょう.この sem パッケージを使うと R で共分散構造分析が使えるようです.AMOS ほど簡単ではないかもしれませんが,今度使ってみたいと思います.

2008/04/03

文系学部で R を利用したい

文系ではとにかく数理的な分野が苦手意識を持たれているのか,統計も好かれているとは身の回りでは思えないなと思います.でも心理,経済,社会,法学,それ以外にも文化や言語などいろいろなところでデータを使った分析や検証は行われています.そのため,大学でも Excel や SPSS などを使った実践的な授業が行われています.

しかし Excel だとデータ分析の醍醐味の多変量解析はやりづらいとか信頼性がないとか言われ,SPSS のような市販の統計ソフトだと卒業後使えないとか文系だとそこまで高度な解析を要求されませんので,必要な機能に対するコストの面でなかなか難しいといえそうです.

そんなときに話に上がるのはフリーソフトの「R」です.R はフリーの統計ソフトで,Windows はもちろん Macintosh や Unix などマルチプラットフォームです.弱点(?)はインターフェースが CUI といわれる文字を入力して利用するところです.Excel や SPSS でのメニューから選ぶ GUI が装備されているソフトと比べると容易とは言い難いですが,それを上回る便利さや機能の高さが評価できます.また Rcmdr(R コマンダー)など GUI のインターフェースも使われ始めていますので,今後ますます発展すると思われます.

文系学部学科としてもこのようにコストを気にせずにデータ分析にチャレンジしてもらい,より「賢い社会人」になって欲しいと関係者として思います.

本ブログでは,上記の状況で文系学部で R を利用したいと思い対応を考えましたが,そうはいってもなかなかのところもあるので,私の覚書も含めて,R の使い方を紹介していきたいと思っています.ただ時間もあまりないため,あくまで不定期のお知らせページとして公開していきます.なお,R に関するサイトや書籍はかなり出始めていますので,詳しくはそちらを参照していただき,こちらは「まぁ参考程度」に思っていただけたらと思います.