心理統計法-R の使い方(12)

目次

1 はじめに

ここでは、「因子分析」を行う。

2 サンプルデータ

以下のデータを使う。
ここでは以下のデータを使う。「文章理解」、「語彙」、「作文」、「数学の応用問題」、「数学の計算問題」の5つの変数からなる 300人分 の仮想データを R を使ってデータを発生させ、そのデータを使って因子分析を行う。
 
0009.jpg

(以下、省略)

 

3 データ作成

> set.seed(111)
> n<- 300
> 因子負荷行列 <- matrix(c(0.8,0.7,0.6,0.4,0.1,0.2,0.2,0.1,0.6,0.8), nrow=5)
> 独自性分散 <- diag(sqrt(c(0.68,0.53,0.37,0.52,0.65)))
> 因子得点 <- matrix(rnorm(2*n), nrow=2)
> 独自因子 <- matrix(rnorm(5*n), nrow=5)
> 変数五 <- round(t(因子負荷行列 %*% 因子得点 + 独自性分散 %*% 独自因子)* 10+50)
> colnames(変数五) <- c("文章理解", "語彙", "作文", "応用問題", "計算問題")

上記のスクリプトを実行すると以下のデータが得られる。

4 要約統計量

> summary(Dataset)

NA. 文章理解 語彙 作文 応用問題 計算問題
[1,] : 1 Min. :17.00 Min. :18.00 Min. :22.00 Min. :22.00 Min. :21.00
[10,] : 1 1st Qu.:42.00 1st Qu.:43.00 1st Qu.:43.00 1st Qu.:42.00 1st Qu.:42.75
[100,] : 1 Median :50.00 Median :49.50 Median :50.00 Median :49.00 Median :51.00
[101,] : 1 Mean :49.57 Mean :49.45 Mean :49.34 Mean :49.47 Mean :50.19
[102,] : 1 3rd Qu.:57.00 3rd Qu.:55.25 3rd Qu.:55.00 3rd Qu.:56.00 3rd Qu.:57.00
[103,] : 1 Max. :85.00 Max. :75.00 Max. :72.00 Max. :84.00 Max. :86.00
(Other):294          

5 結果

5.1 因子負荷

> 変数五因子分析 <- factanal(変数五, factors=2, rotation="none")
> 変数五因子分析斜交 <- promax(loadings(変数五因子分析), m=4)
> print(変数五因子分析斜交$loadings, digit=2, cutoff=0, sort=TRUE)

Loadings:

  Factor1 Factor2
文章理解 0.83 -0.12
語彙 0.51 0.21
作文 0.75 -0.09
計算問題 -0.19 0.84
応用問題 0.31 0.48
  Factor1 Factor2
SS loadings 1.65 1.00
Proportion Var 0.33 0.20
Cumulative Var 0.33 0.53

factanal は因子分析を行う関数。因子数=2とし、因子回転をなし として設定した。
 
Loadings  :因子負荷
 
SS loadings:因子負荷の平方和
 
Proportion Var:因子負荷の平方和を項目数で割った値
 
Cumulative Var:Proportion Var をFactal から順に累積した値

5.2 共通性 

> 共通性 <- 1-変数五因子分析$uniquenesses
> 共通性

文章理解 語彙 作文 応用問題 計算問題
0.5904545 0.4261542 0.4959088 0.4983486 0.5529001

 
以上の結果から、Factor1 の「文章理解」、「語彙」、「作文」に高い負荷をもつことが解った。
これらの項目の背後に仮定できる潜在的な因子を検討してみる必要がある。具体的には、「言語的能力」のようなものが潜在因子となっていると考えられる。
Factor2 では、「計算問題」に高い負荷をもつことが解ったので、「数学的能力」のようなものが潜在因子となっていると考えられる。

5.3 因子間相関

> 因子間相関 <- solve(t(変数五因子分析斜交$rotmat)%*% 変数五因子分析斜交$rotmat)
> 因子間相関

  [,1] [,2]
[1,] 1.0000000 0.5769477
[2,] 0.5769477 1.0000000

上記の結果より、「言語的能力」と「数学的能力」の間には、0.5769477 の相関があることが解った。

5.4 因子構造

> 因子構造 <- 変数五因子分析斜交$loadings %*% 因子間相関
> 因子構造

  [,1] [,2]
文章理解 0.7624839 0.3621148
語彙 0.6308682 0.5010404
作文 0.7002635 0.3432214
応用問題 0.5849560 0.6602723
計算問題 0.2954724 0.7277993

 

5.5 準拠構造

> D <- diag((diag(t(変数五因子分析斜交$rotmat) %*% 変数五因子分析斜交$rotmat))(-1/2))
> 準拠構造 <- 変数五因子分析斜交 $loadings %*%D
> 準拠構造

  [,1] [,2]
文章理解 0.6777368 -0.09525017
語彙 0.4184648 0.16780805
作文 0.6149049 -0.07443120
応用問題 0.2497773 0.39518949
計算問題 -0.1523416 0.68234588

5.6 因子寄与 

この結果から、因子寄与の値を求める。斜交の場合、因子構造に基づいた「他の因子の影響を無視した因子寄与」と準拠構造に基づいた「他の因子の影響を取り除いた因子寄与」の2種類の因子寄与が定義される。

> 因子寄与1 <- colSums(因子構造2)
> 因子寄与1
(1) 1.899223 1.465621

> 因子寄与2 <- colSums(準拠構造2)
> 因子寄与2
(1) 1.0981448 0.6645428
 
ここまでで、因子負荷、共通性、因子寄与など必要な情報がすべて得られた。

5.7 相関行列

> 相関行列 <- cor(変数五)
> 相関行列

  文章理解 語彙 作文 応用問題 計算問題
文章理解 1.0000000 0.4634173 0.5410566 0.4102464 0.1596490
語彙 0.4634173 1.0000000 0.4314247 0.4354430 0.3008167
作文 0.5410566 0.4314247 1.0000000 0.3776200 0.1570510
応用問題 0.4102464 0.4354430 0.3776200 1.0000000 0.4425098
計算問題 0.1596490 0.3008167 0.1570510 0.4425098 1.0000000

上記の相関行列の結果から eigen() により value, vectors を求める。

5.7.1 eigen

> eigen(相関行列)
$values

(1) 2.5155000 0.9932350 0.5527749 0.4914749 0.4470153

$vectors

  [,1] [,2] [,3] [,4] [,5]
[1,] -0.4737345 -0.39489639 -0.15963899 -0.1416372 0.7576851
[2,] -0.4780557 -0.04385621 0.86533663 -0.0181760 -0.1428338
[3,] -0.4583183 -0.41475980 -0.34197544 0.5228874 -0.4770327
[4,] -0.4765771 0.30789089 -0.31685281 -0.6836764 -0.3320668
[5,] -0.3314469 0.75849257 -0.09146042 0.4886551 0.2601599

5.7.2 プロマックス回転後

> local({
+ .FA <- factanal(~応用問題+計算問題+語彙+作文+文章理解, factors=2, rotation="promax", scores="none", data=Dataset)
+ print(.FA)
+ })

Call:
factanal(x = ~応用問題 + 計算問題 + 語彙 + 作文 + 文章理解, factors = 2, data = Dataset, scores = "none", rotation = "promax")

Uniquenesses:

応用問題 計算問題 語彙 作文 文章理解
0.502 0.447 0.574 0.504 0.410

Loadings:

  Factor1 Factor2
応用問題 0.306 0.484
計算問題 -0.187 0.835
語彙 0.512 0.205
作文 0.753  
文章理解 0.830 -0.117
  Factor1 Factor2
SS loadings 1.646 0.996
Proportion Var 0.329 0.199
Cumulative Var 0.329 0.528

Factor Correlations:

  Factor1 Factor2
Factor1 1.000 -0.577
Factor2 -0.577 1.000

Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 0.02 on 1 degree of freedom.
The p-value is 0.88
 
最後に散布図行列をグラフ化すると以下のようになる。
0010.jpg
 
0013.jpg

6 参考文献

山田剛史, 村井潤一郎, & 杉澤武俊. (2015). Rによる心理データ解析: ナカニシヤ出版.

著者: Satoshi Takemoto Satoshi Takemoto

Created: 2017-02-22 水 21:47

Emacs 25.1.1 (Org mode 8.3.6)

Validate