滋賀大学 奥村太一 先生
の上越教育大学での教授資料を学んだ記録です。この場を借りて御礼申し上げます。(先生の滋賀大学へのご転勤にともない、現在、この内容は公開されていません)
データ
data01 <- read.csv("factor.csv",header=T,
row.names=1)
#data01 <- factor
head(data01)
4 |
4 |
4 |
4 |
3 |
5 |
4 |
4 |
4 |
4 |
5 |
5 |
3 |
3 |
4 |
4 |
4 |
4 |
3 |
3 |
3 |
3 |
3 |
2 |
3 |
3 |
2 |
2 |
3 |
2 |
3 |
3 |
2 |
3 |
2 |
2 |
str(data01)
## 'data.frame': 200 obs. of 6 variables:
## $ 国語: int 4 4 3 3 3 3 4 3 4 3 ...
## $ 英語: int 4 4 3 3 3 3 3 4 3 3 ...
## $ 社会: int 4 4 4 3 2 2 4 3 4 3 ...
## $ 数学: int 4 4 4 3 2 3 3 2 4 5 ...
## $ 理科: int 3 5 4 3 3 2 3 3 4 3 ...
## $ 技術: int 5 5 4 2 2 2 3 3 4 4 ...
cor01 <- cor(data01); cor01
## 国語 英語 社会 数学 理科 技術
## 国語 1.0000000 0.4158982 0.4836725 0.2505441 0.2907936 0.2225323
## 英語 0.4158982 1.0000000 0.4980821 0.2649821 0.2946882 0.3051505
## 社会 0.4836725 0.4980821 1.0000000 0.2945884 0.4020571 0.3465945
## 数学 0.2505441 0.2649821 0.2945884 1.0000000 0.5766291 0.5583059
## 理科 0.2907936 0.2946882 0.4020571 0.5766291 1.0000000 0.5253087
## 技術 0.2225323 0.3051505 0.3465945 0.5583059 0.5253087 1.0000000
eigen(cor01)
## eigen() decomposition
## $values
## [1] 2.9199728 1.1337679 0.5975924 0.5004401 0.4595162 0.3887106
##
## $vectors
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -0.3590916 -0.4837731 0.6680046 0.37069260 0.1663058 -0.1603623
## [2,] -0.3799172 -0.4216254 -0.6656819 0.36200826 -0.2978789 -0.1223958
## [3,] -0.4219678 -0.3725137 -0.0501626 -0.70076040 0.1594348 0.4051862
## [4,] -0.4192907 0.4426995 0.1286752 0.33581647 -0.2436834 0.6629486
## [5,] -0.4421990 0.3233837 0.1840456 -0.34618027 -0.5034363 -0.5410373
## [6,] -0.4210875 0.3858358 -0.2401897 0.08864763 0.7384859 -0.2508091
eigen01 <- eigen(cor01)$values; eigen01
## [1] 2.9199728 1.1337679 0.5975924 0.5004401 0.4595162 0.3887106
eigen(cor01)$vectors[,1]#第1固有ベクトル
## [1] -0.3590916 -0.3799172 -0.4219678 -0.4192907 -0.4421990 -0.4210875
cor01 %*% eigen(cor01)$vectors#固有ベクトルが固有値倍に変換される 行列の掛け算
## [,1] [,2] [,3] [,4] [,5] [,6]
## 国語 -1.048538 -0.5484864 0.39919446 0.18550943 0.07642021 -0.06233454
## 英語 -1.109348 -0.4780253 -0.39780648 0.18116344 -0.13688017 -0.04757655
## 社会 -1.232135 -0.4223441 -0.02997679 -0.35068859 0.07326286 0.15750017
## 数学 -1.224318 0.5019185 0.07689531 0.16805602 -0.11197649 0.25769515
## 理科 -1.291209 0.3666421 0.10998423 -0.17324248 -0.23133716 -0.21030694
## 技術 -1.229564 0.4374482 -0.14353556 0.04436283 0.33934622 -0.09749215
cor01 %*% eigen(cor01)$vectors[,1]#固有ベクトルを変換すると固有値倍になる
## [,1]
## 国語 -1.048538
## 英語 -1.109348
## 社会 -1.232135
## 数学 -1.224318
## 理科 -1.291209
## 技術 -1.229564
2.9199*eigen(cor01)$vectors#固有ベクトルの固有値倍
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] -1.048512 -1.4125692 1.9505065 1.0823853 0.4855963 -0.4682419
## [2,] -1.109320 -1.2311040 -1.9437247 1.0570279 -0.8697765 -0.3573835
## [3,] -1.232104 -1.0877027 -0.1464698 -2.0461503 0.4655335 1.1831031
## [4,] -1.224287 1.2926383 0.3757186 0.9805505 -0.7115313 1.9357435
## [5,] -1.291177 0.9442481 0.5373946 -1.0108118 -1.4699838 -1.5797748
## [6,] -1.229533 1.1266019 -0.7013300 0.2588422 2.1563048 -0.7323374
plot(eigen01, type="b", main="Scree Plot",xlab="Number", ylab="Eigenvalue")
fit00 <- factanal(x=data01, factors=2, rotation="none")#因子分析の初期解
print(fit00, cutoff=0)
##
## Call:
## factanal(x = data01, factors = 2, rotation = "none")
##
## Uniquenesses:
## 国語 英語 社会 数学 理科 技術
## 0.609 0.584 0.393 0.372 0.449 0.494
##
## Loadings:
## Factor1 Factor2
## 国語 0.510 0.362
## 英語 0.545 0.344
## 社会 0.656 0.420
## 数学 0.704 -0.363
## 理科 0.715 -0.199
## 技術 0.670 -0.238
##
## Factor1 Factor2
## SS loadings 2.445 0.653
## Proportion Var 0.408 0.109
## Cumulative Var 0.408 0.516
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 2.81 on 4 degrees of freedom.
## The p-value is 0.59
print(fit00, cutoff=0.3)
##
## Call:
## factanal(x = data01, factors = 2, rotation = "none")
##
## Uniquenesses:
## 国語 英語 社会 数学 理科 技術
## 0.609 0.584 0.393 0.372 0.449 0.494
##
## Loadings:
## Factor1 Factor2
## 国語 0.510 0.362
## 英語 0.545 0.344
## 社会 0.656 0.420
## 数学 0.704 -0.363
## 理科 0.715
## 技術 0.670
##
## Factor1 Factor2
## SS loadings 2.445 0.653
## Proportion Var 0.408 0.109
## Cumulative Var 0.408 0.516
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 2.81 on 4 degrees of freedom.
## The p-value is 0.59
psych::alpha(data01)
##
## Reliability analysis
## Call: psych::alpha(x = data01)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.78 0.79 0.78 0.38 3.7 0.024 3 0.5 0.35
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.73 0.78 0.83
## Duhachek 0.73 0.78 0.83
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## 国語 0.77 0.77 0.76 0.41 3.4 0.025 0.015 0.37
## 英語 0.76 0.77 0.75 0.40 3.3 0.027 0.018 0.37
## 社会 0.74 0.75 0.73 0.37 2.9 0.029 0.019 0.30
## 数学 0.74 0.75 0.73 0.38 3.0 0.028 0.010 0.37
## 理科 0.73 0.74 0.73 0.36 2.9 0.030 0.014 0.33
## 技術 0.74 0.75 0.74 0.38 3.0 0.029 0.013 0.35
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## 国語 200 0.66 0.64 0.53 0.45 3 0.83
## 英語 200 0.63 0.67 0.56 0.50 3 0.54
## 社会 200 0.73 0.72 0.65 0.57 3 0.75
## 数学 200 0.71 0.70 0.64 0.55 3 0.77
## 理科 200 0.73 0.74 0.68 0.60 3 0.66
## 技術 200 0.71 0.71 0.64 0.55 3 0.73
##
## Non missing response frequency for each item
## 1 2 3 4 5 miss
## 国語 0.03 0.26 0.44 0.27 0.01 0
## 英語 0.00 0.14 0.72 0.14 0.00 0
## 社会 0.02 0.24 0.50 0.24 0.00 0
## 数学 0.02 0.22 0.54 0.20 0.03 0
## 理科 0.00 0.20 0.60 0.17 0.01 0
## 技術 0.00 0.26 0.51 0.22 0.01 0
#biplot(fit00)
#fa.diagram( fit00 )
fit01 <- factanal(x=data01, factors=2, rotation="varimax")#バリマックス回転
print(fit01, cutoff=0)
##
## Call:
## factanal(x = data01, factors = 2, rotation = "varimax")
##
## Uniquenesses:
## 国語 英語 社会 数学 理科 技術
## 0.609 0.584 0.393 0.372 0.449 0.494
##
## Loadings:
## Factor1 Factor2
## 国語 0.163 0.604
## 英語 0.202 0.612
## 社会 0.238 0.742
## 数学 0.774 0.169
## 理科 0.678 0.302
## 技術 0.668 0.244
##
## Factor1 Factor2
## SS loadings 1.629 1.469
## Proportion Var 0.272 0.245
## Cumulative Var 0.272 0.516
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 2.81 on 4 degrees of freedom.
## The p-value is 0.59
print(fit01, cutoff=0.3)
##
## Call:
## factanal(x = data01, factors = 2, rotation = "varimax")
##
## Uniquenesses:
## 国語 英語 社会 数学 理科 技術
## 0.609 0.584 0.393 0.372 0.449 0.494
##
## Loadings:
## Factor1 Factor2
## 国語 0.604
## 英語 0.612
## 社会 0.742
## 数学 0.774
## 理科 0.678 0.302
## 技術 0.668
##
## Factor1 Factor2
## SS loadings 1.629 1.469
## Proportion Var 0.272 0.245
## Cumulative Var 0.272 0.516
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 2.81 on 4 degrees of freedom.
## The p-value is 0.59
fit02 <- factanal(x=data01, factors=2, rotation="promax")#プロマックス回転
print(fit02, cutoff=0)
##
## Call:
## factanal(x = data01, factors = 2, rotation = "promax")
##
## Uniquenesses:
## 国語 英語 社会 数学 理科 技術
## 0.609 0.584 0.393 0.372 0.449 0.494
##
## Loadings:
## Factor1 Factor2
## 国語 -0.035 0.645
## 英語 0.007 0.641
## 社会 0.001 0.778
## 数学 0.836 -0.081
## 理科 0.675 0.109
## 技術 0.685 0.044
##
## Factor1 Factor2
## SS loadings 1.624 1.452
## Proportion Var 0.271 0.242
## Cumulative Var 0.271 0.513
##
## Factor Correlations:
## Factor1 Factor2
## Factor1 1.000 0.571
## Factor2 0.571 1.000
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 2.81 on 4 degrees of freedom.
## The p-value is 0.59
print(fit02, cutoff=0.3)
##
## Call:
## factanal(x = data01, factors = 2, rotation = "promax")
##
## Uniquenesses:
## 国語 英語 社会 数学 理科 技術
## 0.609 0.584 0.393 0.372 0.449 0.494
##
## Loadings:
## Factor1 Factor2
## 国語 0.645
## 英語 0.641
## 社会 0.778
## 数学 0.836
## 理科 0.675
## 技術 0.685
##
## Factor1 Factor2
## SS loadings 1.624 1.452
## Proportion Var 0.271 0.242
## Cumulative Var 0.271 0.513
##
## Factor Correlations:
## Factor1 Factor2
## Factor1 1.000 0.571
## Factor2 0.571 1.000
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 2.81 on 4 degrees of freedom.
## The p-value is 0.59
par(family = "HiraKakuProN-W3") #日本語フォントの指定
library(semPlot)#パス図を描く
semPaths(fit00,whatLabels="stand",layout="circle",style="lisrel")
semPaths(fit02,whatLabels="stand",layout="circle",style="lisrel")
semPaths(fit01,whatLabels="stand",layout="circle",style="lisrel")
パス解析
data02 <- read.csv("regpath.csv",header=T,fileEncoding="CP932")
head(data02)
1 |
38 |
6 |
14 |
3 |
2 |
75 |
16 |
17 |
14 |
3 |
44 |
9 |
14 |
11 |
4 |
59 |
8 |
13 |
7 |
5 |
50 |
13 |
17 |
3 |
6 |
75 |
14 |
11 |
16 |
data02 <- data02[,2:5]
#data02
par(family = "HiraKakuProN-W3") #日本語フォントの指定
mcov02 <- cov(data02);mcov02#標準化されていない(因子分析とは異なる)
## 学力 意欲 適応 自尊
## 学力 457.00000 51.950000 39.0333333 55.1500000
## 意欲 51.95000 17.026667 6.2933333 6.2950000
## 適応 39.03333 6.293333 14.2266667 0.2033333
## 自尊 55.15000 6.295000 0.2033333 28.6566667
cor(data02)
## 学力 意欲 適応 自尊
## 学力 1.0000000 0.5889286 0.48408983 0.48191959
## 意欲 0.5889286 1.0000000 0.40435642 0.28498243
## 適応 0.4840898 0.4043564 1.00000000 0.01007034
## 自尊 0.4819196 0.2849824 0.01007034 1.00000000
library("sem")
library("semPlot")
fit02 <- factanal(x=data02,factors=1,rotation="none")
#因子分析の初期解
#print(fit02, cutoff=0)
print(fit02, cutoff=0.3)
##
## Call:
## factanal(x = data02, factors = 1, rotation = "none")
##
## Uniquenesses:
## 学力 意欲 適応 自尊
## 0.005 0.651 0.765 0.767
##
## Loadings:
## Factor1
## 学力 0.997
## 意欲 0.591
## 適応 0.485
## 自尊 0.482
##
## Factor1
## SS loadings 1.812
## Proportion Var 0.453
##
## Test of the hypothesis that 1 factor is sufficient.
## The chi square statistic is 2.55 on 2 degrees of freedom.
## The p-value is 0.279
psych::alpha(data02)
## Number of categories should be increased in order to count frequencies.
##
## Reliability analysis
## Call: psych::alpha(x = data02)
##
## raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
## 0.51 0.71 0.71 0.38 2.4 0.062 23 7.2 0.44
##
## 95% confidence boundaries
## lower alpha upper
## Feldt 0.09 0.51 0.76
## Duhachek 0.39 0.51 0.63
##
## Reliability if an item is dropped:
## raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
## 学力 0.45 0.48 0.43 0.23 0.91 0.192 0.0409 0.28
## 意欲 0.41 0.59 0.61 0.33 1.45 0.071 0.0746 0.48
## 適応 0.47 0.71 0.66 0.45 2.47 0.075 0.0238 0.48
## 自尊 0.43 0.74 0.67 0.49 2.91 0.073 0.0086 0.48
##
## Item statistics
## n raw.r std.r r.cor r.drop mean sd
## 学力 25 0.98 0.88 0.86 0.74 56 21.4
## 意欲 25 0.68 0.78 0.67 0.60 12 4.1
## 適応 25 0.55 0.65 0.50 0.45 11 3.8
## 自尊 25 0.58 0.61 0.44 0.44 11 5.4
par(family = "HiraKakuProN-W3") #日本語フォントの指定
semPaths(fit02,whatLabels="stand",layout="circle",style="lisrel")