Rを使った分析(SEM)

■ 分析前にやっておくこと

(1) Rのインストール
(2) 作業ディレクトリの確認と変更をしておく
(3) 作業ディレクトリにデータを入れておく
(4) 必要なパッケージをインストールしておく

 


データの読み込み

書籍使用データ(右クリックで「別名で保存」して作業ディレクトリに入れる)

dat <- read.csv("ch14sem.csv", header=TRUE, fileEncoding="CP932")
# fileEncoding="CP932"はMacの場合入れる

もしくは,Excel を開いてデータ範囲をコピーしてから読み込む
(クリップボードからのデータ読み込み)

Macの場合

dat <- read.table(pipe("pbpaste"), header=TRUE)  
# header=TRUEで変数名を含む,FALSEにすると含まない

Windowsの場合

dat <- read.table("clipboard", header=TRUE) 
# header=TRUEで変数名を含む,FALSEにすると含まない

 

記述統計

library(psych)        # psychパッケージ使用
describe(dat)
mardia(dat)           #マルディアの多変量歪度・尖度検定
# 多変量正規性のShapiro-Wilk検定
library(mvnormtest)   # mvnormtestパッケージ使用
mshapiro.test(t(dat))

その他はこちらを参照

 

相関行列・共分散行列を作成(SEMを実行するのに必要)

r <- cor(dat)      # 相関行列
r
cov <- cov(dat)    # 共分散行列
cov

 

モデルの指定
作成するモデル

library(sem)  #semパッケージ使用

model <- specify.model() 
中間テスト得点 < 到達度,NA,1
期末テスト得点 < 到達度,path2,NA
小テスト得点 < 到達度,path3,NA
模擬試験1の得点 < 熟達度,NA,1
模擬試験2の得点 < 熟達度,path5,NA
模擬試験3の得点 < 熟達度,path6,NA
熟達度 < 到達度,path7,NA
中間テスト得点 <> 中間テスト得点, e1, NA
期末テスト得点 <> 期末テスト得点, e2, NA
小テスト得点 <> 小テスト得点, e3, NA
模擬試験1の得点 <> 模擬試験1の得点, e4, NA
模擬試験2の得点 <> 模擬試験2の得点, e5, NA
模擬試験3の得点 <> 模擬試験3の得点, e6, NA
熟達度 <> 熟達度, e7, NA
到達度 <> 到達度, delta, NA

上記を入力した後に enter を押せば,Read 15 records と表示される。

 

SEMの実行

library(sem)   # semパッケージ使用

ans1 <- sem(model, r, N=284)
summary(ans1)

# 標準化係数
std.coef(ans1)

# 非標準化係数
ans2 <- sem(model, cov, N=284)
summary(ans2)

# 修正指数
mod.indices(ans1)

 

パス図を描く

作図専用のドローソフトを使う方が簡単であるが,R では graphviz を
使ってパス図を描くことも可能(参考サイト)。

path.diagram(ans1, "ans1", ignore.double=FALSE, edge.labels="values", digits=3, standardize=TRUE, node.font=c("Osaka", 10), rank.direction="TB", same.rank="到達度, 熟達度")

上記を実行すると,作業ディレクトリにパス図が pdf で作成されている。