- 数量化3類
- 現在のワークフォルダーを確認するために,
「スクリプトウィンドウ」
に "getwd()" と入力し,「実行」ボタンを押す.出力ウィンドウに現在の
ワークフォルダーが表示されるので確認する.もし,対象のデータファイルが
保存されているフォルダーが,現在のワークフォルダーと異なる時は,
現在のワークフォルダーを
対象のデータが入っているフォルダー(例."c:/home/abc") に変更する.
そのために,
"setwd("c:/home/abc")" と入力し,「実行」ボタンを押す.
最後に,現在のワークフォルダーが対象のデータファイルの入っている
フォルダーに変更されたか確認する.
- 対象のデータファイル("hys3-1.csv")を分割表として読み込み,tb というオブジェクトに格納するために,
「スクリプトウィンドウ」
に "tb<-read.table("hys3-1.csv",sep=",",header=T,row.names=1)" と入力し,「実行」ボタンを押す.さらに,tb の中身を確かめるために,"tb" と入力する.
入力されたデータは,出席番号1から10までの小学生の好きな科目を
調査した結果である.1が好きな科目を表す.
- 数量化3類により,小学生一人ひとりと科目に数値を与えるため,
「スクリプトウィンドウ」
に "library(MASS)" と入力し,MASS ライブラリーを読み込む.さらに,
"tb.ca<-corresp(tb,nf=6)" と入力し,オブジェクト tb.ca に数量化の結果を
保存すし,その結果を表示するために,"tb.ca" と入力する.
nf=6 は数量化する成分の個数を表す.この場合,第2固有値から第7固有値の6つの
固有値に対応する数量化を行うことになる.
- オブジェクト tb.ca の構造を確認するため,"str(tb.ca)" と入力すると,
cor, rscore, cscore, Freq の4つの変数があることがわかる.
それぞれ,相関係数,
行成分の数量化得点,列成分の数量化得点,分割表(元のデータ)を意味し,
それらを取り出す時は,tb.ca$cor などとすればよい.
- 寄与率は相関係数の2乗の比率なので,"eigen.v<-tb.ca$cor^2" と入力して,
相関係数の2乗をオブジェクト eigen.v に格納し,
"round(100*eigen.v/sum(eigen.v),2)" と入力して,
その合計に対する割合を求める.ここで,round(x,2) は実数x を
小数第2位まで求めるように,四捨五入する関数.
第1成分(第2固有値に対応する)の寄与率は43%,第2成分(第3固有値に対応する)の
寄与率は 21% であることなどがわかる.
- 各変数を,第1成分を横座標,第2成分を縦座標にして,点で描いてみる.
"biplot(tb.ca)" と入力する.
この結果,小学生の科目の好き嫌いによるグループ分けや,
科目のグループ分けが可能となる.
- 小学生ひとりひとり(行変数)の数量化得点をデータフレームという形式に変換するために,"rs<-as.data.frame(tb.ca$rscore)" と入力する.同様に,
科目(列変数)の数量化得点をデータフレームにするため,
"cs<-as.data.frame(tb.ca$cscore)" と入力する.
- データフレームにした小学生ひとりひとり(行変数)の数量化得点 (rs) を
アクティブにするために,メニュー下のデータセット:の右の
「アクティブデータセットなし」をクリックして,表示されたリストから
「rs」を選び,「OK」を押す.
"rs<-as.data.frame(tb.ca$rscore)" と入力する.
- アクティブにしたデータフレーム rs を
表示して,確認する.
変数名 V1 から V6 に6つの成分の数量化得点が入っている.V1 が第1番目の数量化得点で,最も寄与率が高い.確認したら,データフレームの表のウィンドウを閉じておこう.
- 数量化得点をもとに,小学生をクラスター分析する.
- 同様に,科目を数量化得点をもとに,クラスター分析する.
上のバイプロットしたグラフにおける科目間の近さと比較すると,
異なった結果になっていると考えられるが,
ここでのクラスター分析には,第1成分 V1 から 第4成分 V4 を使っている
のが原因と考えられる.