3 年生 数理実習 A(統計手法) 補足資料 TA 村井義孝 ここでは,資料 14 ページ問 6 の進め方について補足する. 準備(実行済みのものは飛ばしてよい) ・データの読み込み.例えば,データのファイル名が sample.txt であれば,R のメニュー から「ファイル」→「ディレクトリの変更...」として, データファイルのあるディレクト リに移動し, その後 ------------> X <- read.table("sample.txt") ------------を実行. ・パッケージの読み込み.以下を実行. ------------> library(ggm) ------------・関数の生成.資料 7 ページ問 2 の「偏相関行列を計算する関数 I」(またはⅡ)と 12 ペ ージ問 5 の「グラフの辺のうち, 偏相関の絶対値が最小となる辺を求める」を実行. ・変数等の定義.資料 11 ページ「関数 fitConGraph の使い方, AIC の計算法」の第 3 行 から第 7 行(以下)を実行. ------------> n <- nrow(X); p <- ncol(X) > R <- cor(X) > amat <- matrix(1,p,p)-diag(p) > dimnames(amat) <- dimnames(R) ------------- ここから,資料 12 ページ「共分散選択アルゴリズム」の実行手順. 1. M に R を代入.以下を実行する. ------------> M <- R ------------2. 偏相関行列 P の計算.以下を実行する. ------------> P <- cor2par(M) ------------1 3. 偏相関の絶対値が最小となる(i,j)を計算するため, ------------> select.ij(P,amat) ------------を実行する.出力された枝をグラフから除く.例えば、実行結果が「[1] 4 1」であれば、 ------------> amat[1,4] <- amat[4,1] <- 0 ------------を実行すればよい. 4. 相関行列 M と AIC の計算.以下を実行する. ------------> f <- fitConGraph(amat,R,n) > M <- f$Shat > aic <- f$dev - 2*f$df ------------5. ------------> aic ------------を実行して計算された AIC を出力する.AIC が以前より減少したら 2.へ戻る(最初の反復で は 0 より小さくなっていれば 2.へ戻る).増大していたら、最後に除去した枝を復元して からグラフを出力.例えば最後に除去した枝が 4,1 であれば, ------------> amat[1,4] <- amat[4,1] <- 1 > drawGraph(amat,adjust=FALSE) ------------を実行する. 以上を1つのプログラムにまとめて記述する場合のヒント: ・反復には while 文を利用するのが簡単. ・後で辺が除去された順番を確認するためにも,3.における select.ij の実行結果を配列 に記憶するのがよい. 単純な方法として,反復回数を表す変数 k を導入し, ------------> ij[(2*k-1):(2*k)] <- select.ij(P,amat) ------------とすると,select.ij の実行結果が ij[2*k-1],ij[2*k]に記憶される. ・AIC も同様に配列に記憶するのがよい. 2
© Copyright 2024 ExpyDoc