[連載]フリーソフトによるデータ解析・マイニング第39回

Rコマンダー: Rcmdr (2)

1. グラフ

 Rコマンダーのグラフメニューを図1に示し、グラフ作成に用いた関数との対応関係を表1に示す。

図1 グラフメニュー

図1 グラフメニュー

表1 「グラフ」と関数の対応表
項目の名称 対応する関数 パッケージ
インデックスプロット plot() graphics
ヒストグラム Hist() Rcmdr
幹葉表示 stem.leaf() Rcmdr
箱ひげ図 boxplot() graphics
QQプロット qq.plot() car
散布図 scatterplot() car
散布図行列 scatterplot.matrix() car
折れ線グラフ matplot() graphics
平均のプロット plotMeans() Rcmdr
棒グラフ barplot() graphics
円グラフ pie() graphics
3D graph Scatter3DDialog() Rcmdr

 「インデックスプロット」は、1変数の値を縦軸、個体を横軸に並べた棒グラフ、あるいは点グラフを作成する。インデックスグラフのDBox(ダイアログボックス)を図2に示す。DBoxの項目を指定し、[OK]ボタンを押すとグラフがRのウィンドウに返される。

図2 インデックスグラフのDBox

図2 インデックスグラフのDBox


グラフ1

図3 データirisのインデックスグラフ

 「ヒストグラム」では、パッケージRcmdrの中の関数Histを用いて、引数scale = c("frequency", "percent", "density")の中の1種類のヒストグラムを作成する。引数frequencyは度数、percentは相対度数、densityは確率密度のヒストグラムを作成する。その3種類のグラフを1つの画面に作成するコマンドを次に示し、その結果を図4に示す。

par(mfrow=c(1,3),cex=1.2)
Hist(iris$Petal.Length, scale="frequency", breaks="Sturges", col="darkgray")
text(4,30,"頻度")
Hist(iris$Petal.Length, scale="percent", breaks="Sturges", col="lightblue")
text(4,30,"相対頻度・百分率")
Hist(iris$Petal.Length, scale="density", breaks="Sturges", col="darkgray")
text(4,0.4,"確率密度")

グラフ2

図4 データirisの各ヒストグラム

 「幹葉表示」では、パッケージRcmdrの中の関数stem.leafを用いて、Rcmdrの出力ウィンドウに幹葉表示を返す。
 「箱ひげ図」は、パッケージgraphicsの中の関数boxplotを用いて作図する。箱ひげ図を作成する際には、箱ひげ図における外れ値を含む個体と箱ひげ図における位置を同定するか、否かを指定することができる。同定はマウスのポインターを同定すべく位置に合わせてクリックする。同定操作の終了は、Rのメニューアイコン[STOP]をクリックする。図5にデータirisの箱ひげ図のDBox画面を示し、幾つかの個体を同定した結果を図6に示す。

図3 箱ひげ図のDBox

図5 箱ひげ図のDBox


図4 データirisの品種別の箱ひげ図

図4 データirisの品種別の箱ひげ図

図6 データirisの品種別の箱ひげ図

 「QQプロット」では、パッケージcarの中の関数qq.plotを用いて、正規分布、t分布、カイ2乗分布、F分布などのQQプロットを作成することができる。また、個体の同定操作のオプションもある。
 「散布図」は、パッケージcarの中の関数scatterplotを用いる。散布図では、最小2乗法による回帰直線と平滑化曲線の追加、変数ごとにその箱ひげ図を対応する軸の外側に加えることもできる。また、層別と個体の同定オプションもある。図7に横軸をirisのPetal.Length、縦軸をPetal.Widthにした散布図DBoxの画面を示し、その結果を図8に示す。

図5 散布図DBox画面

図7 散布図DBox画面


図7 irisの散布図行列

図8 irisの散布図

 「散布図行列」は、パッケージcarの中の関数scatterplot.matrixを用いる。散布図行列では、データを層別して示すことができ、対角線には、密度プロット(曲線)、ヒストグラム、箱ひげ図、QQプロットのいずれかを加えることができる。また、回帰直線、平滑化曲線を加えることもできる。図9にirisを層別し、対角線にヒストグラムを加えた散布図行列を示す。

図
図7 irisの散布図行列

図9 irisの散布図行列

 「折れ線グラフ」では、パッケージgraphicsの中の関数matplotを用いる。折れ線グラフは横軸を小さい値から大きい順に並べたデータを表示するのに多く用いる。Rコマンダーのスクリプトウィンドに次のコメントを入れ、「実行」ボタンを押すとネット上の小売売上高のデータがkouriの名前で読み込まれる。データに関しては次のURLに説明されている。
  http://mo161.soci.ous.ac.jp/@d/DoDStat/predicti/predicti_dataJ.xml

kouri<-read.csv("http://mo161.soci.ous.ac.jp/@d/DoDStat/predicti/predicti.csv")

出力ウィンドウ

 X軸には1つの変数、y軸には複数の変数を指定することができる。横軸にデータkouriのTIME変数を指定し、y軸に残りのデータを指定した折れ線グラフを図10に示す。

図8 irisの散布図行列
図8 irisの散布図行列

図10 縦軸を複数の変数とした折れ線グラ

 「平均のプロット」は、パッケージRcmdr の中の関数plotMeansを用いる。平均のプロットでは、エラーバーとして標準誤差、標準偏差、信頼区間の中から1つ選択して指定することができる。信頼水準は自由に指定することができる。デフォルトの値は0.95になっている。図11にデータirisのPetal.Lengthの品種別の平均に標準偏差をエラーバーとした平均プロットを示す。

図9 平均プロット
図9 平均プロット

図11 平均プロット

 「3D graph 」(3次元グラフ)では、パッケージRcmdrの中の関数Scatter3DDialogを用いて作図する。3次元グラフでは、曲面とグリッド線を層別に表示することができる。曲面とグリッド線のオプションとしては、線形最小2乗法、2次最小2乗法、スムーズ回帰、加法回帰の方法がある。作成されたグラフは、マウスで角度を自由に変えることができる。データirisのPetal. Widthを目的変数、Sepal.LengthとSepan.Widthを説明変数とした3次元散布図に線形回帰曲面とスムーズ回帰曲面を加えたグラフを図13に示す。

図10 3次元グラフの設定DBox

図12 3次元グラフの設定DBox


図11 データirisの3次元グラフ

図13 データirisの3次元グラフ

 作成したグラフは、ビットマップ形式、PDF/Postscript/EPS、png形式で保存することができる。操作はメニューの「グラフ」⇒「グラフをファイルに保存」から保存形式とグラフの種類を指定する。

2.モデル

 データをモデルへの適応は、メニューの「統計量」⇒「モデルへの適応」からモデルを指定する。リストに登録されたモデルは、線形回帰、線形モデル、一般化線形モデルなどである。
 メニューの「統計量」⇒「モデルへの適応」⇒「線形回帰」を選択し、データkouriを用いた線形回帰の行う画面コピーを図14に示す。

画面

図14 線形回帰のDBox

 図15にモデルのメニュー画面を、表2にメニューの項目と用いた関数との対応表を示す。

図12 モデルのメニュー画面

図15 モデルのメニュー画面

 「アクティブモデルを選択」は、複数のモデルを作成した際、操作対象とするモデルをアクティブ化するのに用いる。
 「モデルを要約」では、パッケージstatsの中の関数summary用いて、モデルへの適応の結果の要約を呼び出す。
 「計算結果をデータとして保存」では、作成したモデルの結果に、統計量を追加する。図16に追加オプションDBoxを示す。

図13 統計量を追加するオプションDBox

図16 統計量を追加するオプションDBox

 「信頼区間」は、パッケージRcmdrの中の関数Confintを用いて、モデルの係数について信頼係数の尤度比統計量とワルド統計量を返す。
 「仮説検定」では、分散分析表、2つのモデルの比較、線形仮説の検定を行うことが可能である。「分散分析表」は、パッケージcarの中の関数Anovaを用いて分散分析表を返す。「2つのモデルを比較」は、パッケージstatsの中の関数anovaを用いて、2つのモデルの残差の分散分析の結果を返す。「線形仮説」は、モデルの係数の帰無仮説結果を返す。

表2 「モデル」に用いる関数の対応表
項目の名称 関数 パッケージ
モデルを要約 summary() stats
計算結果をデータとして保存 influence.measures() stats
信頼区間 Confint() Rcmdr
仮説検定 Anova()
anova()
linear.hypothesis()
car
stats
car
数値による診断
分散拡大要因 vif() car
ブルーシュ・ペーガンの分散不均一性の検定 bptest() lmtest
自己相関のダービンーワトソン検定 dwtest() lmtest
非線形性のRESET検定 resettest() lmtest
ボンフェローニの外れ値検定 outlier.test() car
グラフ
基本的診断プロット plot.lm() stats
残差QQプロット qq.plot() car
偏残差プロット cr.plots() car
偏残差プロット av.plots() car
影響プロット influence.plot() car
効果プロット trellis.device() lattice

 「数値による診断」では、分散拡大要因の計算とブルーシュ・ペーガン(Breusch-Pagan)の分散不均一性の検定、自己相関のダービン・ワトソン(Durbin-Watson)検定、非線形性のRESET(Ramsey's RESET)検定、ボンフェローニ(Bonferroni)の外れ値検定を行う。
 「グラフ」では、基本的診断プロット、残差QQプロット、要素+偏残差プロット、偏回帰プロットなどを作成する。
 基本的診断プロットでは、パッケージstatsの中の関数plot.lmを用いて"Residuals vs Fitted"、"Normal Q-Q"、"Scale-Location"、 "Cook's distance"グラフを返す。
 作成したモデルの基本的診断プロットは、「モデル」⇒「グラフ」⇒「基本的診断プロット」で作成することができる。その結果を図17に示す。

図15 モデルの基本的な診断プロット

図17 モデルの基本的な診断プロット

3.分布

 メニュー「分布」には、連続分布と離散分布に分けられている。離散分布、連続分布のリスト画面を図18に示す。

図16 確率分布のメニュー(右辺は連続分布)

図18 確率分布のメニュー(右辺は連続分布)

 計算はパッケージstatsの中のNormal、TDist、Chisquare、FDist、Binomial、Poisson分布を用いる。これらの文字列は関数ではなく確率分布の分位点、確率、密度、乱数を求める関数の総称である。例えば、正規分布Normalは、確率分布の分位点関数qnorm、分布の確率関数pnorm、分布の密度関数dnorm、乱数関数rnormの総称である。
 確率分布の作図について例を示す。「正規分布を作図」をクリックすると図19に示す「正規分布」のDBoxが開かれる。図19のように平均、分散を指定し、[OK]ボタンを押すとグラフを返す。

図17 正規分布DBox

図17 正規分布DBox

図19 正規分布DBox


図18 確率分布グラフ

図20 確率分布グラフ

 メニュー「ツール」には、「パッケージのロード」と「オプション」がある。「パッケージのロード」では、RにインストールされているパッケージをRコマンダーに読み込み、「オプション」では、Rコマンダーの操作環境などを設定する。
 Rコマンダーに関しては、品質管理にポイントを置いた参考書がある[1]。

参考資料
[1] 荒木 孝治(2005): フリーソフトウェアRによる統計的品質管理入門、日科技連出版社