User Tools

Site Tools


factor_analysis

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
factor_analysis [2019/11/10 16:59] hkimscilfactor_analysis [2019/11/20 10:26] – [excersize] hkimscil
Line 204: Line 204:
 \end{pmatrix}  \end{pmatrix} 
 $$ $$
- 
- 
  
 실제 데이터에서 구한 variance covariance 값과 factor 분석에 기반한 이론 적인 variance covariance 테이블을 비교해 볼 수 있다. 이를 통해서 각 Factor의 $\beta_{ij}$ laoding 값을 유추해 볼 수 있을 것이다. Regression방법은 F1과 F2가 observed된 변인이 아니기에 할 수가 없었고, 위의 방법으로 Beta값들을 구한다면 각 **요인(factor)**에 대한 beta값을 바탕으로 변인들에 대한 regression공식을 완성할 수 있게 된다.  실제 데이터에서 구한 variance covariance 값과 factor 분석에 기반한 이론 적인 variance covariance 테이블을 비교해 볼 수 있다. 이를 통해서 각 Factor의 $\beta_{ij}$ laoding 값을 유추해 볼 수 있을 것이다. Regression방법은 F1과 F2가 observed된 변인이 아니기에 할 수가 없었고, 위의 방법으로 Beta값들을 구한다면 각 **요인(factor)**에 대한 beta값을 바탕으로 변인들에 대한 regression공식을 완성할 수 있게 된다. 
Line 253: Line 251:
  
 ====== Factor solution among many . . . ====== ====== Factor solution among many . . . ======
-Principal component factor analysis 
    
 | Variable, \\ Y<sub>i</sub>  |  Observed \\ variance, S<sup>2</sup><sub>i</sub>  |  Communality, \\ $\beta^2_{i1} +\beta^2_{i2} $  | | Variable, \\ Y<sub>i</sub>  |  Observed \\ variance, S<sup>2</sup><sub>i</sub>  |  Communality, \\ $\beta^2_{i1} +\beta^2_{i2} $  |
Line 314: Line 311:
 각주 1) -> finance = 수학능력 = F1 각주 1) -> finance = 수학능력 = F1
 각주 2), 3) -> marketing, policy = 언어능력 = F2 각주 2), 3) -> marketing, policy = 언어능력 = F2
-각주 4)는  아래와 같이 구함+각주 4)는  아래와 같이 구함 = Eigenvalue라 부른다
  
 <code> <code>
Line 733: Line 730:
  
 <code> <code>
-> # d read.table("http://www.stanford.edu/class/psych253/data/personality0.txt"+> # d <- read.table("http://www.stanford.edu/class/psych253/data/personality0.txt"
-> d read.table("http://commres.net/wiki/_media/r/personality0.txt")+> d <- read.table("http://commres.net/wiki/_media/r/personality0.txt")
  
 > head(d) > head(d)
Line 1045: Line 1042:
 </code> </code>
  
 +===== communality =====
 +<code>
 +> fa.sort(data.frame(d.fa.so$communality))
 +        d.fa.so.communality order
 +outgoin           0.7376260     1
 +disorgn           0.7329193    30
 +organiz           0.7136615    31
 +quiet             0.7107357     2
 +tense             0.6925168    15
 +withdrw           0.6650390     4
 +sociabl           0.6302538     5
 +talkatv           0.6221579     3
 +relaxed           0.6166856    17
 +friendl           0.6063722    24
 +worryin           0.6046637    16
 +contrar           0.5949600    26
 +anxious           0.5893186    18
 +shy               0.5859167     6
 +lazy              0.5771937    10
 +respnsi           0.5750101    12
 +hardwrk           0.5585236     9
 +carelss           0.5523099    32
 +kind              0.5251513    22
 +discipl           0.5096792     8
 +laidbck           0.4980387    19
 +harsh             0.4791709    28
 +distant           0.4785914     7
 +coopera           0.4574619    23
 +opposng           0.4572599    27
 +agreebl           0.4508557    21
 +persevr           0.4442142    11
 +givinup           0.4409678    13
 +easygon           0.4340117    20
 +criticl           0.4333566    29
 +approvn           0.3705982    25
 +lax               0.3295470    14
 +
 +</code>
 ===== eigenvalues ===== ===== eigenvalues =====
 +위의 아웃풋에서 (d.fa.so)
 +SS loadings (eigenvalue 라고 부른다)
 <code>                       MR1  MR2  MR4  MR5  MR3  MR6 <code>                       MR1  MR2  MR4  MR5  MR3  MR6
 SS loadings           4.50 3.19 2.97 2.55 2.31 2.16 SS loadings           4.50 3.19 2.97 2.55 2.31 2.16
Line 1057: Line 1094:
 </code> </code>
 SS loadings           <fc #ff0000>4.50</fc>  SS loadings           <fc #ff0000>4.50</fc> 
 +SS total              <fc #ff0000>32.14286</fc> (성격변인 들의 SS값을 모두 더한 값 즉, 각 변인의 SS값을 구하여 이를 더한 값)
 +$\frac {4.5}{32.14286} = 0.14$
 Proportion Var        <fc #ff0000>0.14</fc>  Proportion Var        <fc #ff0000>0.14</fc> 
- 
 eigenvalues for factor 1  eigenvalues for factor 1 
-<code>d.fa.s$loadings + 
-d.fa.s.loadings.f1 <- d.fa.s$loadings[,1] +| SS loadings \\ eigenvalue  | 4.50  | 3.19  | 2.97  | 2.55  | 2.31  | 2.16  | 
-ev_fa1 <- sum(data.frame(d.fa.s.loadings.f1)^2)+|                            | $\frac {4.5}{32.14286}$  | $\frac {3.19}{32.14286}$  | $\frac {2.97}{32.14286}$  | $\frac {2.55}{32.14286}$  | $\frac {2.31}{32.14286}$  | $\frac {2.16}{32.14286}$ 
 +| Proportion Var          | 0.14  | 0.10  | 0.09  | 0.08  | 0.07  | 0.07  | 
 +| Cumulative Var          | 0.14  | 0.24  | 0.33  | 0.41  | 0.48  | 0.55  |  
 + 
 +아래는 loading값 중 첫번 째 팩터의 합을 (eigenvalue)  체크하는 방법 
 +<code>d.fa.so$loadings 
 +d.fa.so.loadings.f1 <- d.fa.so$loadings[,1] 
 +ev_fa1 <- sum(data.frame(d.fa.so.loadings.f1)^2)
 # this value should be matched with SS loadings for MR1 # this value should be matched with SS loadings for MR1
 ev_fa1 ev_fa1
Line 1075: Line 1120:
 \end{eqnarray*} \end{eqnarray*}
  
-Proportion of Factor 1's contribution +<code> 
-<code>> ev_fa1/length(d.fa.s.loadings.f1+> (4.50+3.19+2.97+2.55+2.31+2.16)/32.14286 
-[1] 0.1406331 +[1] 0.5500444 
-></code> +</code>
 ===== specific variance ===== ===== specific variance =====
 1 - communality  1 - communality 
 Uniqueness  Uniqueness 
 <code> <code>
-data.frame(d.fa.s$uniquenesses) +data.frame(d.fa.so$uniquenesses) 
-        d.fa.s.uniquenesses+        d.fa.so.uniquenesses
 outgoin           0.2623740 outgoin           0.2623740
 quiet             0.2892643 quiet             0.2892643
Line 1123: Line 1167:
  
 uniqueness for variable 1 (v1) uniqueness for variable 1 (v1)
-<code>> d.fa.s.loadings.v1 <- d.fa.s$loadings[1,+<code>> d.fa.so.loadings.v1 <- d.fa.so$loadings[1,
-> d.fa.s.communality.v1 <- sum(d.fa.s.loadings.v1^2) +> d.fa.so.communality.v1 <- sum(d.fa.so.loadings.v1^2) 
-> d.fa.s.uniqeness.v1 <- 1 - d.fa.s.communality.v1 +> d.fa.so.uniqeness.v1 <- 1 - d.fa.so.communality.v1 
-> d.fa.s.communality.v1 +> d.fa.so.communality.v1 
 [1] 0.737626 [1] 0.737626
-> d.fa.s.uniqeness.v1 +> d.fa.so.uniqeness.v1 
 [1] 0.262374 [1] 0.262374
 > </code>  > </code> 
  
-> d.fa.s.communality.v1  = [1] 0.737626 = 0.74 +> d.fa.so.communality.v1  = [1] 0.737626 = 0.74 
-> d.fa.s.uniqeness.v1  = [1] 0.262374 = 0.26+> d.fa.so.uniqeness.v1  = [1] 0.262374 = 0.26
  
 ===== plotting ===== ===== plotting =====
 intronductory intronductory
 <code> <code>
-load12 <- d.fa.s$loadings[,1:2] # for factor 1 and 2+load12 <- d.fa.so$loadings[,1:2] # for factor 1 and 2
 plot(load12, type='n') plot(load12, type='n')
-text(load12, labels=names(d.fa.s.loadings.f1), cex=.7)+text(load12, labels=names(d.fa.so.loadings.f1), cex=.7)
 </code> </code>
  
 <code> <code>
-load23 <- d.fa.s$loadings[,2:3] # for factor 1 and 2+load23 <- d.fa.so$loadings[,2:3] # for factor 1 and 2
 plot(load23, type='n') plot(load23, type='n')
-text(load23, labels=names(d.fa.s.loadings.f1), cex=.7)+text(load23, labels=names(d.fa.so.loadings.f1), cex=.7)
 </code> </code>
  
  
 <code> <code>
-load123 <- d.fa.s$loadings[,1:3] # for factor 1 and 2+load123 <- d.fa.so$loadings[,1:3] # for factor 1 and 2
 plot(load123, type='n') plot(load123, type='n')
-text(load123, labels=names(d.fa.s.loadings.f1), cex=.7)+text(load123, labels=names(d.fa.so.loadings.f1), cex=.7)
 </code> </code>
 ====== E.g., 4 ====== ====== E.g., 4 ======
Line 1388: Line 1432:
 head(saq) head(saq)
 </code> </code>
 +
 +see [[:SAQ]]
 ====== e.g., 5 ====== ====== e.g., 5 ======
 {{:r:EFA.csv}} {{:r:EFA.csv}}
factor_analysis.txt · Last modified: 2023/11/06 02:53 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki