KMOとMSAの確認 サンプリングの適切性を検討する
kmo <- function(x)
{
x <- subset(x, complete.cases(x))
r <- cor(x)
r2 <- r^2
i <- solve(r)
d <- diag(i)
p2 <- (-i/sqrt(outer(d, d)))^2
diag(r2) <- diag(p2) <- 0
KMO <- sum(r2)/(sum(r2)+sum(p2))
MSA <- colSums(r2)/(colSums(r2)+colSums(p2))
return(list(KMO=KMO, MSA=MSA))
}
kmo(dat)
因子数の検討
平行分析(通常版/ポリコリック相関行列版)
fa.parallel(dat)
fa.parallel.poly(dat)
スクリープロット
cor01=cor(dat)
eigen01=eigen(cor01)$values
plot(eigen01, type="b", main="Scree Plot",xlab="Number", ylab="Eigenvalue")
cor=cor(dat)
eigen=eigen(cor)
探索的因子分析
因子数1の検討(通常版/ポリコリック相関行列版)
fit1 <- factanal(x=dat2, factors=1, fm="ml", rotation="promax")
print(fit1, cutoff=0.35)
fit2 <- fa.poly(x=dat, nfactors=1, fm="ml",rotate = "promax")
print(fit2, cutoff=0.35)
信頼性係数の算出(アルファとオメガ)
library(GPArotation)
alpha(dat2)
omega(nfactors = 1,dat)
確認的因子分析
library(lavaan)
model="
F1=~Q1+Q2+Q3+Q4+Q6+Q7+Q8+Q9+Q10+Q11+Q12+Q13+Q14+Q15
"
fit1=cfa(model,data=dat2,ordered=colnames(data))
summary(fit1,standardized=T,fit.measures=T)
modificationIndices(fit1, minimum.value = 100)
library(semPlot)
semPaths(fit1, "std", rotation = 2, edge.label.cex = 1.8, style="lisrel",fade=F,theme='gray',label.cex=2.5)
因子得点(平均)の作成
SNFC_1$SNFC=rowMeans(dat2[,1:14])
cor(SNFC_1[,23:29],use="complete.obs")