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
factor_analysis [2022/05/05 12:43] – [eigenvalues] hkimscilfactor_analysis [2026/07/21 10:22] (current) hkimscil
Line 73: Line 73:
 |  5  |  10  |  6  |  5  |       |  5  |  10  |  6  |  5  |      
 </table> </table>
-학생들의 점수가 위와 같다고 하고, 이 점수는 사실은 **<fc #ff0000>두 가지 잠재적인 요인</fc>에 의해서 결정되는 것이라고 하자**. 이 두 가지 잠재적 요인은 수적능력과 (quantitative) 언어적능력이다 (verbal).+다섯 학생들의 점수가 위와 같다고 하고, 이 점수는 사실 **<fc #ff0000>두 가지 잠재적인 요인</fc>에 의해서 결정되는 것이라고 하자**. 이 두 가지 잠재적 요인은 수적능력과 (quantitative) 언어적능력이다 (verbal).
  
 각 과목의 점수는 위의 가정을 받아들인다면 아래와 같은 regression으로 정리할 수 있다.  각 과목의 점수는 위의 가정을 받아들인다면 아래와 같은 regression으로 정리할 수 있다. 
Line 79: Line 79:
 \begin{equation} \label{eq1} \begin{equation} \label{eq1}
 \begin{split} \begin{split}
-Y_{1} &= \beta_{10} + \beta_{11}F_{1} + \beta_{12}F_{2} + e_{1} \\ +Y_{1} &= \beta_{10} + \beta_{11}F_{1} + \beta_{12}F_{2} + e_{1} \;\;\;\;\; \text{where  } Y_{1} = \text{finance score} \\ 
-Y_{2} &= \beta_{20} + \beta_{21}F_{1} + \beta_{22}F_{2} + e_{2} \\ +Y_{2} &= \beta_{20} + \beta_{21}F_{1} + \beta_{22}F_{2} + e_{2} \;\;\;\;\; \text{where  } Y_{2} = \text{marketing score} \\ 
-Y_{3} &= \beta_{30} + \beta_{31}F_{1} + \beta_{32}F_{2} + e_{3}  +Y_{3} &= \beta_{30} + \beta_{31}F_{1} + \beta_{32}F_{2} + e_{3} \;\;\;\;\; \text{where  } Y_{3} = \text{policy score}  
 \end{split} \end{split}
 \end{equation}  \end{equation} 
Line 87: Line 87:
 위 식 $(1)$에서 $e_{i}$는 error term을 말하고, $F1$, $F2$ 는 각각 잠재적인 요인이다. finance $(Y_{1})$, marketing $(Y_{2})$, policy $(Y_{3})$ 점수는 $F1$과 $F2$의 기여로 만들어지는 점수이다. $F1$과 $F2$가 observation에 기초한 변인이 아니므로 데이터를 이용한 regression을 구하는 방법은 적당치 않다. 따라서 다른 방법으로 이를 해결해야 한다.  위 식 $(1)$에서 $e_{i}$는 error term을 말하고, $F1$, $F2$ 는 각각 잠재적인 요인이다. finance $(Y_{1})$, marketing $(Y_{2})$, policy $(Y_{3})$ 점수는 $F1$과 $F2$의 기여로 만들어지는 점수이다. $F1$과 $F2$가 observation에 기초한 변인이 아니므로 데이터를 이용한 regression을 구하는 방법은 적당치 않다. 따라서 다른 방법으로 이를 해결해야 한다. 
  
-한편, $\beta_{ij}$ 는 표준화된 correlation coefficient 값을 말한다 (regression에서 beta값) -- factor analysis에서는 흔히 factor loading이라고 부른다. beta를 해석하는 방법과 마찬가지로 factor loading 값은 F1이나 F2의 인자가 finance (혹은 다른 변인 점수, $Y_{i}$) 점수에 얼마나 기여하는지를 나타내 주는 지표라고 하겠다. +한편, $\beta_{ij}$ 는 표준화된 correlation coefficient 값을 말한다 (regression에서 beta값) -- factor analysis에서는 흔히 factor loading이라고 부른다. beta를 해석하는 방법과 마찬가지로 factor loading 값은 F1이나 F2의 인자가 finance (혹은 다른 변인 점수, $Y_{i}$) 점수에 얼마나 기여하는지를 나타내 주는 지표라고 하겠다. 예를 들면, F1인자가 숫적인 능력이라고 하면 이 수적인 능력이 finance 점수에 beta만큼 기여하는 것이 된다.
  
 상식을 이용해서 문제를 살펴보면, finance 시험은 숫적능력과 관련이 있으므로 $F1$ 앞에 (이름을 붙이면 숫적능력) 붙는 $\beta_{ij}$값이 (factor loading 값이) 커야하는 것이 이치라고 하겠고, 반대로 Marketing과 Policy시험은 언어능력의 요인($F2$)의 loading값이 커야 하겠다 (아래 표 참조). 상식을 이용해서 문제를 살펴보면, finance 시험은 숫적능력과 관련이 있으므로 $F1$ 앞에 (이름을 붙이면 숫적능력) 붙는 $\beta_{ij}$값이 (factor loading 값이) 커야하는 것이 이치라고 하겠고, 반대로 Marketing과 Policy시험은 언어능력의 요인($F2$)의 loading값이 커야 하겠다 (아래 표 참조).
Line 126: Line 126:
     * fiance (혹은 다른 시험) 점수의 총 분산값은 $F1$과 $F2$의 coefficient(loading)값을 각각 제곱해서 더한 것에     * fiance (혹은 다른 시험) 점수의 총 분산값은 $F1$과 $F2$의 coefficient(loading)값을 각각 제곱해서 더한 것에
     * 에러의 분산값을 더한 것과 같다.      * 에러의 분산값을 더한 것과 같다. 
-  * 여기서 loading 제곱의 합은 regression으로 설명되는 부분이고 +  * 여기서 loading 제곱의 합은 regression으로 설명되는 부분이고 (regression analysis에서 regression part (ss.reg)) 
-  * 에러의 분산값은 어느 factor에도 기여를 하지 못하는 나머지 부분이다.+  * 에러의 분산값은 어느 factor에도 기여를 하지 못하는 나머지 부분이다. (residual part (ss.res))
   * 즉, fiance의 분산값은 $F1$, $F2$가 기여하는 부분과 이 둘에 포함되지 않는 나머지로 나눌 수 있다. 이는 regression에서 explained(regression) variance와 unexplained variance를 이야기 하는 것과 같은 이치이다.    * 즉, fiance의 분산값은 $F1$, $F2$가 기여하는 부분과 이 둘에 포함되지 않는 나머지로 나눌 수 있다. 이는 regression에서 explained(regression) variance와 unexplained variance를 이야기 하는 것과 같은 이치이다. 
   * 앞의 두 coefficient(계수 혹은 factor loading)을 **communality**라고 부른다. 이 이름이 자연스러운 것은 Y의 총분산 중 두 요인($F1$, $F2$)이 __공통적으로__ 기여하는 부분의 분산이기 때문이다.    * 앞의 두 coefficient(계수 혹은 factor loading)을 **communality**라고 부른다. 이 이름이 자연스러운 것은 Y의 총분산 중 두 요인($F1$, $F2$)이 __공통적으로__ 기여하는 부분의 분산이기 때문이다. 
Line 153: Line 153:
 위에서  위에서 
   * $Cov(\beta_{i0}, \beta_{j0}) = 0 $ 둘 다 상수이므로   * $Cov(\beta_{i0}, \beta_{j0}) = 0 $ 둘 다 상수이므로
-  * (6)과 (8)에 의해서, $\beta_{i1}F1$ 와 $\beta_{j1}F1$ 간의 Covariance는 $\beta_{i1}\beta_{j1}Var(F1)$ +  * [[:Statistical Review#Rules of Covariance|Covariance]] rule의 (6)과 (8)에 의해서, $\beta_{i1}F1$ 와 $\beta_{j1}F1$ 간의 Covariance는 $\beta_{i1}\beta_{j1}Var(F1)$ 
   * 그리고 위는 Var(F1) = 1이므로 $\beta_{i1}\beta_{j1}Var(F1) = \beta_{i1}\beta_{j1}$   * 그리고 위는 Var(F1) = 1이므로 $\beta_{i1}\beta_{j1}Var(F1) = \beta_{i1}\beta_{j1}$
   * $Y_i$ 의 error 경우 $e_{i}$을 가지고 있고 $e_{j}$가 없으므로 $(1)e_{i} + (0)e_{j}$와 같이 표현   * $Y_i$ 의 error 경우 $e_{i}$을 가지고 있고 $e_{j}$가 없으므로 $(1)e_{i} + (0)e_{j}$와 같이 표현
   * $Y_j$ 의 error 경우는 $e_{j}$을 가지고 있고 $e_{i}$가 없으므로 $(0)e_{i} + (1)e_{j}$와 같이 표현    * $Y_j$ 의 error 경우는 $e_{j}$을 가지고 있고 $e_{i}$가 없으므로 $(0)e_{i} + (1)e_{j}$와 같이 표현 
-  * 이제 두 error간의 Covariance는 (6)에 의해서 상수 간의 곱셈이 0이므로 0이 되어버림+  * 이제 두 error간의 Covariance는 [[:Statistical Review#Rules of Covariance|Covariance]] rule (6)에 의해서 상수 간의 곱셈이 0이므로 0이 되어버림
  
 이에 따라서 covariance matrix를 채워보면 아래와 같다.  이에 따라서 covariance matrix를 채워보면 아래와 같다. 
Line 185: Line 185:
 | Y3  | $S_{31}$  | $S_{32}$  | $S^2_{3}$  | | Y3  | $S_{31}$  | $S_{32}$  | $S^2_{3}$  |
  
-실제 데이터에서 구한 variance covariance table은 아래와 같다. +실제 데이터에서 구한 variance covariance table은 아래와 같다((편의상 여기 분산값은 n으로 (n-1이 아닌) 나눠 준 것))
  
 | Variable  | Y1  | Y2  | Y3  | | Variable  | Y1  | Y2  | Y3  |
Line 197: Line 197:
 ## 예를 들어  ## 예를 들어 
 fd <- read.csv("http://commres.net/wiki/_media/r/fa_explanation.csv") fd <- read.csv("http://commres.net/wiki/_media/r/fa_explanation.csv")
 +fd <- fd[, -1] # 처음 id 컬럼 지우기
 cov(fd) cov(fd)
  
Line 273: Line 274:
 ====== Factor solution among many . . . ====== ====== Factor solution among many . . . ======
    
-| 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} $  |  Specificity, \\   
-| Finance, Y<sub>1</sub>  |  S<sup>2</sup><sub>1</sub>    $\beta^2_{11} +\beta^2_{12} $   | +| Finance, Y<sub>1</sub>  |  S<sup>2</sup><sub>1</sub>    $\beta^2_{11} +\beta^2_{12} $   |  $ \sigma_{i}^{2} $  
-| Marketing, Y<sub>2</sub>  |  S<sup>2</sup><sub>2</sub>  |  $\beta^2_{21} +\beta^2_{22} $  | +| Marketing, Y<sub>2</sub>  |  S<sup>2</sup><sub>2</sub>  |  $\beta^2_{21} +\beta^2_{22} $   | 
-| Policy, Y<sub>3</sub>    S<sup>2</sup><sub>3</sub>  |  $\beta^2_{31} +\beta^2_{32} $  | +| Policy, Y<sub>3</sub>    S<sup>2</sup><sub>3</sub>  |  $\beta^2_{31} +\beta^2_{32} $   | 
-| total  |  T<sub>observed</sub>  |  T<sub>total</sub>  |+| total  |  T<sub>observed</sub>  |  T<sub>total</sub>   |
  
 각 변인의 Observed Variance는 df (즉, n-1)을 사용하는 대신 n을 사용하여 구함.  각 변인의 Observed Variance는 df (즉, n-1)을 사용하는 대신 n을 사용하여 구함. 
Line 332: Line 333:
 각주 1) -> finance = 수학능력 = F1 각주 1) -> finance = 수학능력 = F1
 각주 2), 3) -> marketing, policy = 언어능력 = F2 각주 2), 3) -> marketing, policy = 언어능력 = F2
-각주 4)는  아래와 같이 구함 = Eigenvalue라 부른다+각주 6)는  아래와 같이 구함 = Eigenvalue라 부른다
  
 <code> <code>
Line 457: Line 458:
 | Economics        @lightgreen:0.728  | | Economics        @lightgreen:0.728  |
 | Total            5.617  | | Total            5.617  |
 +===== Specificity =====
 +| Variable  |  Communality  |  Specificity  |
 +| Climate          0.795  |  @lightgray:1-0.795  |
 +| Housing          0.518  |     |
 +| Health          |  0.722  |     |
 +| Crime            0.512  |     |
 +| Transportation  |  0.51       |
 +| Education        0.561  |     |
 +| Arts            |  0.754  |     |
 +| Recreation      |  0.517  |     |
 +| Economics        0.728  |     |
 +| Total            5.617  |     |
  
 ====== Methods (functions) in R ====== ====== Methods (functions) in R ======
Line 468: Line 481:
  
 <code> <code>
-mydata <- read.csv("http://commres.net/wiki/_media/r/dataset_exploratoryfactoranalysis.csv")+my.data <- read.csv("http://commres.net/wiki/_media/r/dataset_exploratoryfactoranalysis.csv")
 # if data as NAs, it is better to omit them: # if data as NAs, it is better to omit them:
 my.data <- na.omit(my.data) my.data <- na.omit(my.data)
Line 1118: Line 1131:
 # SS total = 각 변인들의 분산을 (variation) 1 로 보았을 때 SS loading 값을 구한 것이므로  # SS total = 각 변인들의 분산을 (variation) 1 로 보았을 때 SS loading 값을 구한 것이므로 
 # SS total 값은 각 변인들의 숫자만큼이 된다. 이 경우는 총 32개 문항이 존재하므로 32가 SS total # SS total 값은 각 변인들의 숫자만큼이 된다. 이 경우는 총 32개 문항이 존재하므로 32가 SS total
-SS total = 32+ss.tot = 32
 </code> </code>
 +
 SS total              <fc #ff0000>32</fc> (성격변인 들의 SS값을 모두 더한 값 즉, 각 변인의 SS값을 구하여 이를 더한 값) SS total              <fc #ff0000>32</fc> (성격변인 들의 SS값을 모두 더한 값 즉, 각 변인의 SS값을 구하여 이를 더한 값)
 $\frac {4.5}{32} = 0.14$ $\frac {4.5}{32} = 0.14$
Line 1142: Line 1156:
 > (4.50+3.19+2.97+2.55+2.31+2.16)/32 > (4.50+3.19+2.97+2.55+2.31+2.16)/32
 [1] 0.5525 [1] 0.5525
 +
 +> or 
 +sum(d.fa.so.loadings^2)/ss.tot
 </code> </code>
 ===== specific variance ===== ===== specific variance =====
Line 1547: Line 1564:
 ====== Reference ====== ====== Reference ======
 {{:factor_analysis_lecture_note.pdf|Lecture Note}} from databaser {{:factor_analysis_lecture_note.pdf|Lecture Note}} from databaser
 +[[https://stats.oarc.ucla.edu/spss/seminars/introduction-to-factor-analysis/a-practical-introduction-to-factor-analysis/]] 
 +[[https://advstats.psychstat.org/book/factor/efa.php]] 
 +see exploratory factor analysis :: {{youtube>Ollp2nSQCLY}}
factor_analysis.1651754635.txt.gz · Last modified: by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki