[連載] フリーソフトによるデータ解析・マイニング 第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

図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  図3 箱ひげ図のDBox

図5 箱ひげ図のDBox

図3 箱ひげ図のDBox

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

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

散布図DBox画面  散布図DBox画面

図7 散布図DBox画面

散布図DBox画面

図8 irisの散布図

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

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

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

  

図11 平均プロット

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

3次元グラフの設定DBox

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

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

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

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

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

2.モデル

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

線形回帰のDBox

図14 線形回帰のDBox

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

モデルのメニュー画面

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

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

統計量を追加するオプション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に示す。

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

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

3.分布

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

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

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

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

正規分布DBox

正規分布DBox

図19 正規分布DBox

確率分布グラフ

図20 確率分布グラフ

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

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