Rではpolycorパッケージで計算ができる。
Stataでも現在は標準で計算機能が実装されている。 ides.hatenablog.com
ポリコリック相関係数などは以前のエントリーを参照のこと。
lavCor
下記のものは、パッケージのマニュアルに例として挙がっているものである。
library(lavaan) # Holzinger and Swineford (1939) example HS9 <- HolzingerSwineford1939[,c("x1","x2","x3","x4","x5", "x6","x7","x8","x9")]
ピアソンの相関係数
lavCor(HS9)
結果。
x1 x2 x3 x4 x5 x6 x7 x8 x9 x1 1.000 x2 0.297 1.000 x3 0.441 0.340 1.000 x4 0.373 0.153 0.159 1.000 x5 0.293 0.139 0.077 0.733 1.000 x6 0.357 0.193 0.198 0.704 0.720 1.000 x7 0.067 -0.076 0.072 0.174 0.102 0.121 1.000 x8 0.224 0.092 0.186 0.107 0.139 0.150 0.487 1.000 x9 0.390 0.206 0.329 0.208 0.227 0.214 0.341 0.449 1.000
順序尺度の作成、3カテゴリ
HS9ord <- as.data.frame( lapply(HS9, cut, 3, labels = FALSE) )
ポリコリック相関係数、2段階推定
lavCor(HS9ord, ordered=names(HS9ord))
結果。
x1 x2 x3 x4 x5 x6 x7 x8 x9 x1 1.000 x2 0.317 1.000 x3 0.508 0.304 1.000 x4 0.373 0.273 0.136 1.000 x5 0.308 0.226 0.125 0.801 1.000 x6 0.319 0.274 0.215 0.683 0.783 1.000 x7 0.113 -0.097 0.058 0.169 0.136 0.071 1.000 x8 0.147 0.094 0.091 0.112 0.160 0.185 0.552 1.000 x9 0.459 0.204 0.286 0.258 0.265 0.255 0.365 0.454 1.000
閾値のみ
lavCor(HS9ord, ordered=names(HS9ord), output = "th")
結果。
x1|t1 x1|t2 x2|t1 x2|t2 x3|t1 x3|t2 x4|t1 x4|t2 x5|t1 x5|t2 x6|t1 x6|t2 x7|t1 x7|t2 x8|t1 x8|t2 x9|t1 x9|t2 -1.363 0.844 -1.556 0.741 -0.353 0.626 -0.797 0.956 -0.820 0.527 0.188 1.529 -0.820 1.024 -0.129 1.882 -0.425 1.835
ポリコリック相関、標準誤差つき
lavCor(HS9ord, ordered=names(HS9ord), se = "standard", output = "est")
結果。
lhs op rhs est.std se z pvalue ci.lower ci.upper 1 x1 ~~ x1 1.000 0.000 NA NA 1.000 1.000 2 x2 ~~ x2 1.000 0.000 NA NA 1.000 1.000 3 x3 ~~ x3 1.000 0.000 NA NA 1.000 1.000 4 x4 ~~ x4 1.000 0.000 NA NA 1.000 1.000 5 x5 ~~ x5 1.000 0.000 NA NA 1.000 1.000 6 x6 ~~ x6 1.000 0.000 NA NA 1.000 1.000 7 x7 ~~ x7 1.000 0.000 NA NA 1.000 1.000 8 x8 ~~ x8 1.000 0.000 NA NA 1.000 1.000 9 x9 ~~ x9 1.000 0.000 NA NA 1.000 1.000 10 x1 ~~ x2 0.317 0.070 4.534 0.000 0.180 0.455 11 x1 ~~ x3 0.508 0.060 8.484 0.000 0.391 0.625 12 x1 ~~ x4 0.373 0.060 6.181 0.000 0.255 0.491 13 x1 ~~ x5 0.308 0.068 4.549 0.000 0.175 0.441
ポリコリック相関、すべての結果
fit.un <- lavCor(HS9ord, ordered=names(HS9ord), se = "standard", output = "fit") summary(fit.un)