Rzパッケージ・チュートリアル
移転しました。 http://m884.jp/Rz_Ja.html
* 更新履歴
Rzパッケージの更新履歴
- 2012-02-06 0.3-8 クイックエディタビュー,値ラベル編集機能,キーボードショートカット追加
- 2012-02-01 0.3-6 大幅更新
- 2011-04-04 0.2-1 初版
なお,開発版を次のリンクで公開しています(Windows用バイナリ,ソース)。CRANポリシーによりCRANへのアップロードは月に1回程度に制限されていますので,いち早く最新版を使いたい方はこちらをご利用ください(タイミングによってはCRANに上がっているものと同じバージョンかもしれません)。
このチュートリアルの更新履歴
- 2012-02-07 0.3-8対応
- 2012-02-02 0.3-6対応の初版
動作環境
主にWindowsとLinuxで動作確認をしています。Macは英語のみ,かつ公式GUI以外(ターミナル,ESS,RStudio)の環境で一応の動作確認ができています。公式GUIでは英数字であっても文字化けを起こします。その他の言語については確認できていませんが,少なくとも日本語は表示・入力ともにできません(おそらく中国語,朝鮮語も)。日本語のMacでも,Rを英語設定で立ち上げれば,公式GUI以外で使うことができます。ホームフォルダの.Renvironに LANGUAGE=En を書き足すと,Rを英語設定にすることができます。
また,バージョン2.12以降のRが必要です。バージョン2.12よりも古いRを使っている場合は,こちらから新しいバージョンをダウンロードしてインストールして下さい。
概要
GUIをRに
RzパッケージはSPSSと互換性を保ちつつそれを超えるようなデータ管理環境を目指して開発を行っています。
Rは非常に強力な統計解析環境ですが,グラフィカルユーザーインターフェース(GUI)に関してはいまのところ貧弱と言わざるをえません。GUIなど必要ない,慣れればスクリプトを書いた方が早い,という意見も多く,確かに多くの場面ではそれは真実なのですが,一方でGUIが優位性を持つ場面もやはり存在します。
Rzの主機能であるデータ管理も,そのうちの1つです。例えば社会調査データの場合,1つのデータセットが数十から数百を超える変数を持ちます。このぐらいの数の変数をコンソールで管理するのは,大変な煩わしさが伴います。全ての変数名を正確に覚えきるのは現実的ではありません。また,これだけ変数があると,ある変数がどのような変数だったか確かめるだけでも大変な労力です。短い変数名(あるいは”Q1”のような形式的な変数名)では内容が分かりませんし,かといって長い変数名をつけると分析の際に不便です。結局,対処としては変数情報を一覧できる他のソフト(ExcelやSPSS)をRと並行して立ち上げる,というような方法になってしまいます。
このような煩わしさを解消することが,Rzの開発目的の1つです。
memiscパッケージを取り込んだRzのデータ管理機能
Rzは,しかし,単なる変数閲覧パッケージではありません。Rzの本質は,memiscパッケージの機能の組み込みにあります。memiscパッケージは,変数ラベル,値ラベル,尺度の管理,ユーザー欠損値といった,SPSS等の持つデータ管理機能をRでも使えるようにする強力なパッケージです。つまり,memicのフロントエンドとしてのGUIを構築することで,SPSS等のグラフィカルな統計解析パッケージと同等以上の機能をRにもたらすのが,Rzパッケージです*1。SPSSはよくRと比較され,どちらがより優れているのか様々な意見が交わされていますが,もしSPSSのバックエンドが完全にRになったとしたら,それはすばらしいソフトだと思いませんか?
初心者向け?
Rzはこのような成り立ちのソフトであるため,GUIを提供するといっても,必ずしもRの初心者向けとして作られたわけではありません。例えば,SPSS等のような統計解析のインターフェースはありません。統計解析は,スクリプトを書いてコンソールベースで行った方が効率的だと考えるからです。つまり,コンソールが優位な場面ではコンソールを,GUIが優位な場面ではGUIを使う,というのがRzの設計思想です。
とはいえ,例えばSPSS等から乗り換える際に,Rzを使えばmemiscのSPSS互換機能によって多くの障害が取り除かれるのは確かですし,それも開発目的の1つではあります。しかし,それにとどまらず,むしろ中級者以上のRユーザーのデータ分析の効率を高めることが,Rzの主たる開発目的です。
このような目的であることから,Rzはクリックしていくだけでなんでもできるわけではなく,利用者はRの基本的な使い方を学んでおく必要があります。そしてその次のステップとしてmemiscパッケージの使い方を学ぶことで,柔軟かつ効率的にデータを管理し,分析により多くの力を注ぐことができるようになるでしょう。
memiscパッケージの使い方については,ビネットや,私が過去に作った資料(PDF)があります。また,Rパッケージガイドブックにより詳しい解説を書いています。
プロット機能
さらにRzは,実用的なプロット機能を搭載しています。Rでグラフを作成するとき,作りたいグラフは完璧に頭の中にあるのに,それがうまく作れずに頭を悩ませた経験はありませんか? Rのプロット機能は多彩で強力ですが,そのぶん複雑で,作成するグラフごとに異なる様々なオプションを把握するのは楽ではありません。
Rzはggplot2をバックエンドに使い,美しいグラフを簡単な操作で作成することを可能にしています。
インストール
Rzパッケージと,依存パッケージをインストールします。
install.packages("Rz")
依存パッケージとしてRGtk2パッケージがインストールされます。RGtk2パッケージは,別途GTK+をダウンロードする必要があります。以降,GTK+のダウンロード手順を説明します。
まず,RGtk2パッケージを読み込むと,以下のようなエラーが出ます。
> library(RGtk2) Error in inDL(x, as.logical(local), as.logical(now), ...) : 共有ライブラリ 'C:/home/masahiro/R_library/RGtk2/libs/i386/RGtk2.dll' を読み込めません: LoadLibrary failure: 指定されたモジュールが見つかりません。
さらに,ダイアログでGTK+のインストールを促されます。そのままOKを押し,GTK+をダウンロードして下さい。
ダウンロードが始まります。
URL 'http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.22/gtk+-bundle_2.22.1-20101227_win32.zip' を試しています Content type 'application/zip' length 24516284 bytes (23.4 Mb) 開かれた URL downloaded 23.4 Mb
ダウンロードが終了すると,以下のようなメッセージが出ますので,Rを再起動して下さい。
Learn more about GTK+ at http://www.gtk.org If the package still does not load, please ensure that GTK+ is installed and that it is on your PATH environment variable IN ANY CASE, RESTART R BEFORE TRYING TO LOAD THE PACKAGE AGAIN 警告メッセージ: Failed to load RGtk2 dynamic library, attempting to install it.
再起動後,以下のスクリプトを実行し,何もないウィンドウが出れば,インストールは完了です。
library(RGtk2) gtkWindowNew()
起動
インストール後,起動は以下のようにするだけです。
library(Rz) Rz()
または,メニューバーからも起動できます。
起動すると,以下のようなウィンドウが立ち上がります。
データの読み込み
作業環境からのデータの読み込み
「大局的環境からインポート」では,すでに作業環境にあるデータをRzに読み込むことができます。読み込めるデータは,data.frameかdata.setです。
試しに,irisを読み込んでみて下さい。まず,次のスクリプトを実行すると,組み込みデータのirisが大局的環境にロードされます。
data(iris)
メニューバーのファイルかツールバーの「大局的環境からインポート」を選び,ドロップダウンメニューからirisを選択してください。
コンソールで以下のスクリプトを実行すると,dataset1という名前の,irisと全く同じ中身のdata.frameができていることが分かります。これはRzに読み込んだirisが,dataset1という名前で大局的環境に出力されたものです。Rz上でのデータの変更は即座に大局的環境に反映されるので,Rz上でデータ管理を行い,出力されたデータを分析に用いる,というのがRzの基本的な使い方です。
> ls() [1] "dataset1" "iris" > summary(dataset1) Sepal.Length Sepal.Width Petal.Length Petal.Width Species Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100 setosa :50 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300 versicolor:50 Median :5.800 Median :3.000 Median :4.350 Median :1.300 virginica :50 Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800 Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500 > all.equal(iris, dataset1) [1] TRUE
ファイルからのデータの読み込み
メニューバーのファイルかツールバーの「開く」を選ぶと,ファイルからデータを読み込むことができます。
現在の対応形式は,独自形式のRz Dataファイル(*.rzd),SPSSシステムファイル(*.sav),SPSSポータブルファイル(*.por),Stataファイル(*.dta)コンマ区切りテキスト(*.csv),タブ区切りテキストです。
ファイルの文字コードがRの文字コードと異なる場合は,エンコーディングからファイルの文字コードを選択して下さい。
コンマ区切りテキスト,タブ区切りテキストを読み込むときは,ヘッダの有無(一行目が変数名かどうか),欠損値(NA)に割り当てている文字を設定して下さい。
大きなデータは読み込みに時間がかかります。また,文字コードを変換する場合は読み込みに数分かかる場合があります。
データの管理
Rzのデータ管理の基本
読み込んだデータは,ツールバーの下のドロップダウンリストで切り替えることができます。リスト内の左側がデータセット名,右側が読み込んだファイルの名前です。
Rzは大局的環境とは別の場所(パッケージの環境)で独自にデータを管理していることに注意して下さい。Rzの管理しているデータは,データセット名を変数名として,常に大局的環境と同期されますが,同期は基本的に一方向です。つまり,Rz上でのデータの編集は大局的環境に反映されますが,大局的環境でのデータの編集はRz上に反映されません。
大局的環境からリロード
大局的環境で加えた編集をRz上に反映させたい場合,2つの方法があります。1つめは,「大局的環境からリロード」を使う方法です。この機能は単純ですが,非常に強力です。非定型のデータ整形ならばRzで行い,定型のデータ整形ならばスクリプトによって一気に行ってからRzにリロードすることで,GUIとコンソールを効率的に使い分け,生産性を上げることができます。このようなGUIとコンソールの連携が,Rzの大きな特長の1つです。
この機能を使うためには,「memiscパッケージのdata.setとして同期」を有効にしておく必要があります。無効の場合,同期はdata.frameで行われます。data.frameは変数ラベルやユーザー欠損値などの情報を持たないため,Rz上のデータに反映させるとそれらの情報が欠落してしまいます。そのため,データを編集する際には,この設定を有効にしておくことを推奨します。
一方で,data.setは場合によっては分析に用いるのに適しません。data.setは透過的にdata.frameと同じように扱えるようになっていますが,やや処理が遅く,また関数によっては用いることができない場合があります。そのため,分析の際にはこの設定を無効にすることを推奨します。
2つめは,「大局的環境からインポート」を使って別データとして読み込む方法です。こちらはdata.setでもdata.frameでも読み込むことができますが,上記と同様の理由で,data.setから読み込むことを推奨します。
データの操作
変数が並んでいるシートを,変数ビューと呼びます。変数ビューの列は,左から順に,インデックス,変数名,変数ラベル,尺度,値ラベル,ユーザー欠損値です。
変数名は,data.frameの変数名と同じもので,変数にアクセスする際に使います。変数ラベルには,変数のより詳しい説明を記入することができます。
尺度は,nominal,ordinal,interval,ratioから選ぶことができます。分析に用いる際には,nominalはfactor,ordinalはorderd,intervalとratioはnumericに変換されます。
値ラベルは,変数の値にラベルをつけるものです。Rではfactorをカテゴリ変数,numericを量的変数として用いますが,factorにインデックスとして数値を割り当てたり,numericにラベルをつけたりすることはできません。Rzでは,SPSSやStataのようなラベル管理を可能にしています。
ユーザー欠損値は,変数の値を,情報を失わずに欠損値に指定する機能です。Rは通常いったんNAを割り当ててしまうと,元の値を復元することはできません。Rzでは,ユーザー欠損値の機能によって,値を柔軟に欠損値にしたり戻したりすることができます。
データの編集 New!
値ラベル以外は,行を一度選択してから,次に各セルをクリックすると編集できます。尺度は,行を選択後,尺度のセルをクリックし続けると,ドロップダウンリストが現われ,尺度を選択できます。連打するとフリーズするので気をつけて下さい。値ラベルを変更する場合は,変数を右クリックし,値ラベルの変更画面から変更してください。「+」の行に値とラベルを入力することで新しい値ラベルを追加することができ,「-」のセルをダブルクリックすることで値ラベルの削除ができます。
ユーザー欠損値の設定
ユーザー欠損値は,値指定と範囲指定の2種類の方法で設定することができます。
値指定は,ユーザー欠損値に指定したい数値をコンマで区切って入力します。
1, 2, 3, 4, 5
このように指定すれば,1と2と3と4と5がユーザー欠損値に指定されます。また,以下のように指定することもできます。
1:5
これは,1つめの指定方法と同じ結果になります。基本的に,c関数に渡したときに数値ベクトルが返り値となる記述であれば,入力することができます。よって,以下のように交ぜて入力することも可能です。
1:5, 9, 10, 12:15
範囲指定は,以下のように記述します。
range=c(5, 10)
この場合,5以上10以下の値がユーザー欠損値となります。値指定とちがい,6.4や9.8などの小数を含む,範囲内の全ての実数が欠損値となります。
Infを指定することで,無限大の範囲を設定することもできます。
range=c(5, Inf) range=c(-Inf, 3)
範囲指定は,1つの変数につき1つの範囲しか設定することができません。また,値指定と混在させることはできません。
リコード
変数の行で右クリックしてリコードを選択すると,リコードのダイアログが表示されます。
一番上がその変数に存在している値です。その下の左側が変数の値とラベルの対応関係です。ラベルは存在していない値にも付けることができ,反対に値は存在するがラベルはついていない場合があるので,この欄で確認して下さい。
ラベルの欄の右側は,一番上がいまリコードしている変数の名前,その下がリコード結果を保存する変数の名前です。リコード先にリコード元と同じ名前,またはデータセット中に存在する変数名を入力すると,上書きされます。データセット中に存在しない変数名を入力すると,新変数としてデータセットの最後尾に付け加えられます。その下が,変数に設定する変数ラベルです。
その下の「テンプレートの生成」ボタンを押すと,リコードのテンプレートが生成されます。このまま実行すると,全く同じ変数が生成されます。これを書き換えてリコードすることで,素早いリコードが可能です。下の画像が実例です。
この例では,1は1のまま,2と3を2に統合して「中」というラベルを付ける,4と5を3に統合して「下」というラベルを付ける,その他の値はそのまま,となっています。
otherwiseはこの例では意味がありませんが,リコードを指定していない「その他の値」についての処理を記述します。例えば一行目の1の値については,otherwise="copy"を指定しているので,今回の場合消してしまっても同じ結果になります。otherwise=NAにすれば「その他の値」は欠損値になりますし,otherwise=3とすれば「その他の値」はすべて3になります。
量的変数をカテゴリ変数にリコードしたい場合,range記法が便利です。
"低"=1 <- range(min , 40), "中"=2 <- range(40.01, 60), "高"=3 <- range(60.01, max)
このように書くと,最小値から40までが1でラベル「低」,40.01から60までが2でラベル「中」,60.01から最大値までが3でラベル「高」というふうにリコードされます。値を重複させるとエラーになるので気をつけてください。
基本的な書き方はmemiscパッケージのrecode関数と同じです。詳細はhelp(recode)を参照してください。
クイックエディタビュー(クイックエディタ) New!
クイックエディタビューを開くと,以下の画像のような画面が現れます。
上半分には変数ビューでチェックされた変数が一覧されており,下半分が簡易エディタになっています。試しに,irisデータのSepal.Length〜Petal.Widthの4変数にチェックを入れ,エディタに,
print(summary(df.orig)) cor(df)
と入力して「実行」ボタンを押すかキーボードでControl+Rを押してみてください。
コンソールに,下の画像のような出力がされます。
クイックエディタでは,もとのデータにdf.origという名前で,選択した変数のみに変数をしぼったデータ(今回でいえばiris[1:4]というデータ)にdfという名前でアクセスすることができます。クイックエディタを使えば,定型の出力を変数を入れ替えながら探索的に見る,というような作業の効率が大幅にアップします。
注意点として,クイックエディタで得られる出力は基本的に最後の関数の出力のみです。それ以外の出力を得たい場合は,能動的にprint関数などを使う必要があります。また,関数の戻り値を保存したい場合は,「<-」の代わりに「<<-」という代入記号を使えば,大局的環境に戻り値を保存することができます。
クイックエディタビュー(クイック変数エディタ) New!
クイックエディタビューのもう1つの機能,クイック変数エディタでは,チェックした変数に定型の加工を施し,データに反映させることができます。
変数の加工について,いくつかのテンプレートも用意してあります。まずは,クイックエディタのときと同じように4変数にチェックを入れ,テンプレートから「尺度を変更する」を選んでみてください。エディタに,
measurement(var) <- "ratio"
と入力されます。「実行」ボタンを押すかキーボードでControl+Rを押してみてください。
変数ビューを見ると,チェックを入れた4変数の尺度が「ratio」に変わっているはずです。
クイック変数エディタの仕組みは単純で,チェックされた変数は順番にvarという変数に代入され,処理を加えられたのちに元の変数に上書きされる,というものです。この処理にはmemiscパッケージのforeachという関数を使っています。
クイック変数エディタの注意点として,memiscの関数を使わない処理では多くの場合,変数ラベル・値ラベル・ユーザー欠損値などの情報が欠落してしまいます。やや面倒ですが,例えば下の画像のように処理を加える前にいったん変数ラベルなどを変数に保存しておくことで,欠落を防ぐことができます。
データの閲覧
行にカーソルを合わせると,変数のsummaryがポップアップします。行をダブルクリックすると,より詳しい要約がコンソールに表示されます。これはmemiscパッケージのcodebookという関数を使っています。
ポップアップは設定で無効にすることもできます。
データビュー
データビューを選択すると,生データを見ることができます。今のところ,見ることしかできません。
データの保存
「別名で保存」を選択すると,データを保存することができます。
独自形式の「Rz Dataファイル」で保存すると,全ての情報を保ったまま保存し,再度読み込むことができます。「SPSSシンタックスとCSV」で保存すると,CSVと,CSVを読み込むためのSPSSシンタックスが出力されます。「Stata DoファイルとCSV」で保存すると,CSVと,CSVを読み込むためのDoファイルが出力されます。「Stataファイル」で保存すると,Stataのdta形式のファイルで保存されます。コンマ区切りテキスト,タブ区切りテキストで保存すると,それぞれコンマ区切り,タブ区切りのCSVで保存されます。ファイルを開くときと同様,ヘッダの有無(一行目が変数名かどうか),欠損値(NA)に割り当てる文字を設定して下さい。
プロットビュー
プロットビューでは,ggplot2パッケージを用いた柔軟で美麗なグラフを出力することができます。
プロットビューを有効にすると,ggplot2の様々なオプションを設定する領域が現れます。ggplot2の多くの機能の中から,主要なものを使いやすくまとめてあります。軸や凡例のラベルには,データセット内の変数の変数名や変数ラベルを簡単に設定することができます。変数名を入力する際には,オートコンプリ−ションが働き,入力ミスを防ぎつつ素早く変数名を入力することができます。
まずは,なにもオプションを設定せずに,変数のインデックスをダブルクリックしてみてください。カテゴリ変数であれば棒グラフ,量的変数であればヒストグラムが出力されます。プロットビューでは,変数のインデックスをダブルクリックすることでプロットを出力します。これは変数の詳しい要約をコンソールに出力するときと同じ操作です。
もし,プロットビューを開いているときには要約を出力してほしくないのであれば,設定を変えることができます。
プロットビューの使い方
プロットビューの機能のほとんどはggplot2に基づいていますが,ggplot2はとても高機能なパッケージであるため,その解説は Rzパッケージのチュートリアルの範囲を超えます。とはいえ,ggplot2の基本的な使い方さえ覚えれば,プロットビューを使うのはとても簡単です。逆に,とりあえずプロットビューをいじって感じをつかんでから,本格的にggplot2を勉強する,というのも有効だと思います。
ggplot2は,公式サイトが非常に充実しています。また,作者による書籍およびその訳書も販売されています(ただし,シュプリンガー・ジャパンの撤退にともない,訳書は現在品薄になっています。そのうち事業譲渡先の丸善から発売されると思いますが,いつになるか分からないので,書店で発見したときは迷わず買いましょう)。また,ウェブページ,ブログ記事,勉強会の資料などもとてもたくさんあるので,検索してみてください。
例えば下の画像のような美しいグラフを,変数の指定とマウスクリックだけで出力することができます。
プロットビューでは,出力した画像を簡単に保存することができます。また,保存のフォーマットも豊富です。
その他の設定
テーマセレクタ
好みのテーマをダウンロードし,適用することができます。まず,テーマを入れるフォルダを好きなところに作り,設定画面でテーマフォルダを設定して下さい。次に,Gtk+2テーマをダウンロードしてきます。テーマはGNOME-LOOK.ORGからダウンロードできます。Gtk+3テーマとして配布されているものの中にも,Gtk+2テーマを含んでいるものがあります。ダウンロードしたテーマを,以下のような階層になるように,テーマフォルダに格納します。
"テーマフォルダ/テーマ名のフォルダ/gtk-2.0/gtkrc"
再び設定画面を開くと,テーマを選択できるようになっています。テーマの変更は,R本体を再起動するまで適用されません。
注意点として,pixmap以外のテーマエンジンを使っているテーマは,ほとんどが正しく表示されません。問題なく表示されるテーマをいくつかピックアップしたので,参考にして下さい。
Aero-clone |
Azel |
Candido |
Detour E17-GTK2 |
ElegantBrit gtk3 |
kde4.2-oxygen (modified) |
Mac4Lin |
MacOS-X Aqua Theme |
Orta |
SlicknesS |
埋め込みグラフィックスデバイス
埋め込みグラフィックスデバイスを使うと,ウィンドウ内部にプロットを埋め込むことができます。ただし,Windowsでは一部プロットが正常に表示されません(facetが正しく描画されないことを確認しています)。おそらく埋め込みに使用しているcairoDeviceパッケージのバグだと思われます。
この設定の変更は,Rzをいったん閉じ,再度Rz()を実行するまで反映されません。
フォントの設定
Rzでは画面表示やプロットに用いるフォントを指定することができます。特にプロットのフォント指定は通常は煩雑な手続きが必要ですので,利便性を大きく高める機能の1つだといえるでしょう。PDFのフォントとPostScriptのフォントについては,プロットをそれぞれの形式で保存するときにのみ用いられます。
今後の予定
順不同です。優先順位が高くないものも含まれています。要望をいただければ優先順位を上げます。
- ログ機能
- スクリプトでRzを操作できるようにする
- ラベル等をファイルから読み込み
- 簡易レポート作成機能
- plot履歴
- エラーバーなどの実装
- 変数の計算
- ポップアップ改善
- 変数にタグ
- クロス集計表
- ワーディング管理
- ケースの選択
- 最近使ったファイル
情報求む!
バグ報告・要望・質問・感想・批判等
全て大歓迎です。機能追加の要望があれば,内容によりますが可能なかぎり優先的に実装します。
twitter(@phosphor_m)かメール(rinm884@gmail.com)かコメントでよろしくお願いします。
*1:実際,Rzパッケージの開発初期はmemiscGUIという名前でした。