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 [2018/07/21 00:57] – [Example] hkimscilfactor_analysis [2019/09/14 17:27] – [e.g. secu com finance 2007 example] hkimscil
Line 74: Line 74:
 \end{equation}  \end{equation} 
  
-위 식 [1]에서 e는 error term을 말하고, F1, F2 는 각각 잠재적인 요인이다. finance, marketing, policy 점수는 F1과 F2의 기여로 만들어지는 점수이다. F1과 F2가 observation에 기초한 변인이 아니므로 데이터를 이용한 regression을 구하는 방법은 적당치 다. 따라서 다른 방법으로 이를 해결해야 한다. +위 식 [1]에서 e는 error term을 말하고, F1, F2 는 각각 잠재적인 요인이다. finance, marketing, policy 점수는 F1과 F2의 기여로 만들어지는 점수이다. F1과 F2가 observation에 기초한 변인이 아니므로 데이터를 이용한 regression을 구하는 방법은 적당치 다. 따라서 다른 방법으로 이를 해결해야 한다. 
  
 한편, $\beta_{ij}$ 는 표준화된 correlation coefficient 값을 말한다 (regression에서 beta값) -- factor analysis에서는 흔히 factor loading이라고 부른다. beta를 해석하는 방법과 마찬가지로 factor loading 값은 F1이나 F2의 인자가 finance (혹은 다른 변인 점수) 점수에 얼마나 기여하는지를 나타내 주는 지표라고 하겠다.  한편, $\beta_{ij}$ 는 표준화된 correlation coefficient 값을 말한다 (regression에서 beta값) -- factor analysis에서는 흔히 factor loading이라고 부른다. beta를 해석하는 방법과 마찬가지로 factor loading 값은 F1이나 F2의 인자가 finance (혹은 다른 변인 점수) 점수에 얼마나 기여하는지를 나타내 주는 지표라고 하겠다. 
Line 91: Line 91:
 위의 요인이 포함된 regression공식이 갖는 가정은 다음과 같다. 위의 요인이 포함된 regression공식이 갖는 가정은 다음과 같다.
   - $E(e_{i}) = 0, \quad Var(e_{i}) = \sigma^2_{i}$   - $E(e_{i}) = 0, \quad Var(e_{i}) = \sigma^2_{i}$
 +    * error의 분포에 관한 내용이다. 
     * expected value = mean of error terms = 0, with standard deviation = $\sigma_{i}$      * expected value = mean of error terms = 0, with standard deviation = $\sigma_{i}$ 
     * 에러는 평균 0을 중심으로 무작위로 펼쳐져 있는 상태가 가정되므로 위와 같은 성격을 갖는다.     * 에러는 평균 0을 중심으로 무작위로 펼쳐져 있는 상태가 가정되므로 위와 같은 성격을 갖는다.
   - $E(F_{j}) = 0, \quad Var(F_{j}) = 1 $   - $E(F_{j}) = 0, \quad Var(F_{j}) = 1 $
 +    * F는 표준화된 coefficient로  크기가 나타내지는 가상의 인자이다 (factor).
     * Factors are standardized with mean =0, standard deviation = 1. Hence, Var(F) = 1.     * Factors are standardized with mean =0, standard deviation = 1. Hence, Var(F) = 1.
     * factors의 계수를 내기 전의 data는 표준점수 처리가 된 것을 가정한다. 따라서, F의 mean과 standard deviation값은 각각 0과 1이어야 하고, 따라서 F의 variance값 또한 1이 된다.      * factors의 계수를 내기 전의 data는 표준점수 처리가 된 것을 가정한다. 따라서, F의 mean과 standard deviation값은 각각 0과 1이어야 하고, 따라서 F의 variance값 또한 1이 된다. 
Line 239: Line 241:
 등을 통해서 구한 matrix는 위의 theoretical variance covariance 매트릭스와 동일한 내용을 같는다.  등을 통해서 구한 matrix는 위의 theoretical variance covariance 매트릭스와 동일한 내용을 같는다. 
  
-그런데, 모델 B는 로테이션 방법을 모델 A의 loading값에 적용해서 구한 것이다. 이는 아래의 그림에서 설명이 된다. 이 그림에서 첫 번째 것은 모델 A의 loading값(coefficient값)을 좌표에 옮긴 것이다. 만약에 좌표(0.3, 0.3)을 관통하는 선을 그은 후, 이 선을 왼 쪽으로 (혹은 오른 쪽으로 돌려도 마찬가지이다) 돌려서 (rotatation이란 말은 여기서 나온 것이다) y축에 일치 시키면, y축에 일치하는 좌표의 coordinate는 이제 ($0, 0.3\sqrt2$)이 될 것이다. 같은 방법으로 다른 점들 또한 회전을 시키면 그림의 d가 보여주는 coordinate를 갖게 될 것이다. 이는 물론, 모델 B의 loading 값들이다. 즉, 모델 A와 모델 B는 동일한 threoretical covariance 테이블을 공유한다는 것이다. +그런데, 모델 B는 모델 A의 loading값에 "**로테이션 방법**"을 적용해서 구한 것이다. 이는 아래의 그림에서 설명이 된다. 이 그림에서 첫 번째 것은 모델 A의 loading값(coefficient값)을 좌표에 옮긴 것이다. 만약에 좌표(0.3, 0.3)을 관통하는 선을 그은 후, 이 선을 왼 쪽으로 (혹은 오른 쪽으로 돌려도 마찬가지이다) 돌려서 (rotatation이란 말은 여기서 나온 것이다) y축에 일치 시키면, y축에 일치하는 좌표의 coordinate는 이제 ($0, 0.3\sqrt2$)이 될 것이다. 같은 방법으로 다른 점들 또한 회전을 시키면 그림의 d가 보여주는 coordinate를 갖게 될 것이다. 이는 물론, 모델 B의 loading 값들이다. 즉, 모델 A와 모델 B는 동일한 threoretical covariance 테이블을 공유한다는 것이다. 
  
 이 방법은 이제 해석에서 진가를 발휘한다. 즉, 모델 B의 loading값들은 이제 F1 혹은 F2의 영향력만이 표현이 된 것이이다. 따라서, Y1은 이제 F1만의 영향을 받는다고 이야기할 수 있다 ($\beta$ 값인 $(\sqrt2/2)$ 만큼). Y2 또한 F1의 영향력만을 갖는다고 볼 수 있으며, Y3는 F1이 아닌 F2의 영향력을 받는다고 할 수 있다. 이를 토대로 이제 우리는 Y 변인들 (1,2,3)은 F1과 F2의 잠재적인 요인들로 나뉘어 질 수 있다고 주장할 수 있다.  이 방법은 이제 해석에서 진가를 발휘한다. 즉, 모델 B의 loading값들은 이제 F1 혹은 F2의 영향력만이 표현이 된 것이이다. 따라서, Y1은 이제 F1만의 영향을 받는다고 이야기할 수 있다 ($\beta$ 값인 $(\sqrt2/2)$ 만큼). Y2 또한 F1의 영향력만을 갖는다고 볼 수 있으며, Y3는 F1이 아닌 F2의 영향력을 받는다고 할 수 있다. 이를 토대로 이제 우리는 Y 변인들 (1,2,3)은 F1과 F2의 잠재적인 요인들로 나뉘어 질 수 있다고 주장할 수 있다. 
Line 253: Line 255:
 | 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을 사용하여 구함. 
 +
 +<code>
 +> fd <- read.csv("http://commres.net/wiki/_media/r/fa_explanation.csv")
 +> attach(fd)
 +> m.fin <- mean(finance)
 +> m.mar <- mean(marketing)
 +> m.pol <- mean(policy)
 +> fin <- finance
 +> mar <- marketing
 +> pol <- policy
 +> n.fin <- length(fin)
 +> n.mar <- length(mar)
 +> n.pol <- length(pol)
 +
 +> sum((fin-m.fin)^2)/(n.fin) # variance of finance 
 +[1] 9.84
 +> sum((mar-m.mar)^2)/(n.mar) # variance of marketing
 +[1] 5.04
 +> sum((pol-m.pol)^2)/(n.pol) # variance of policy
 +[1] 3.04
 +
 +</code>
  
 |  Variable, \\ Y<sub>i</sub>  |  Observed \\ variance, S<sup>2</sup><sub>i</sub>    Loadings on  || Communality, \\ $b^2_{i1} + b^2_{i2} $  |  Percent \\ explained  |  spec. \\ variance  | |  Variable, \\ Y<sub>i</sub>  |  Observed \\ variance, S<sup>2</sup><sub>i</sub>    Loadings on  || Communality, \\ $b^2_{i1} + b^2_{i2} $  |  Percent \\ explained  |  spec. \\ variance  |
 |  (1)  |  (2)  |  $F_{1}, b_{i1}$ \\ (3)  |  $F_{2}, b_{i2}$ \\ (4)  |  (5)  |  (6) = 100 x (5)/(2)  |    | |  (1)  |  (2)  |  $F_{1}, b_{i1}$ \\ (3)  |  $F_{2}, b_{i2}$ \\ (4)  |  (5)  |  (6) = 100 x (5)/(2)  |    |
-|  Finance, $Y_{1}$  |  9.84  \\ (7)  |  3.136773   0.023799  |  9.8399 \\ (8)  |  99.999 \\ (8) / (7) * 100 =    |  0.0001 \\ (7) - (8)  | +|  Finance, $Y_{1}$  |  9.84  \\ (7)  |  __3.136773__ ((heavy on F1 side))   0.023799  |  9.8399 \\ (8)  |  99.999 \\ (8) / (7) * 100 =    |  0.0001 \\ (7) - (8)  | 
-|  Marketing, $Y_{2}$  |  5.04  |  -0.132190  |  2.237858   5.0255  |  99.712    +|  Marketing, $Y_{2}$  |  5.04  |  -0.132190  |  __2.237858__ ((heavy on F2 side))   5.0255  |  99.712  0.0145  
-|  policy, $Y_{3}$  |  3.04  |  0.127697  |  1.731884  |  3.0157  |  99.201    |+|  policy, $Y_{3}$  |  3.04  |  0.127697  |  __1.731884__ ((heavy on F2 side)) |  3.0157  |  99.201  0.0243   |
 |  Overall \\ SS loadings  |  17.92 \\ (9)  |  9.873125((contribution of F1 over the total variance)) \\ (10)  |  8.007997 ((contribution of F2 over the total variance of Y<sub>i</sub>)) \\ (11)  |  17.8811  |  99.783  | |  Overall \\ SS loadings  |  17.92 \\ (9)  |  9.873125((contribution of F1 over the total variance)) \\ (10)  |  8.007997 ((contribution of F2 over the total variance of Y<sub>i</sub>)) \\ (11)  |  17.8811  |  99.783  |
 |    |    |  55.1%  \\ (10) / (9) =  |  44.7%  \\  (11) / (9) =  |    |    |    | |    |    |  55.1%  \\ (10) / (9) =  |  44.7%  \\  (11) / (9) =  |    |    |    |
  
 +각주 1) -> finance = 수학능력 = F1
 +각주 2), 3) -> marketing, policy = 언어능력 = F2
 +각주 4)는  아래와 같이 구함
 +<code>
 +> l.f <- 3.136773
 +> l.m <- -0.132190
 +> l.p <- 0.127697
 +> loadings.f1 <- c(l.f,l.m,l.p)
 +> sum(loadings.f1^2) # value of (10) in the above table
 +[1] 9.873126
 +> </code>
 +
 +
 +
 +<code>> fd <- data.frame(finance,marketing,policy)
 +> fd
 +  finance marketing policy
 +1                    5
 +2                    3
 +3      10              8
 +4                    7
 +5      10              5</code>
 +
 +아래는 population variance, sd를 구하기 위한 function
 +<code>> pvar <- function(x) {
 ++     sum((x - mean(x))**2) / length(x)
 ++ }
 +> psd <- function(x) {
 ++     sqrt (sum((x - mean(x))**2) / length(x))
 ++ }</code>
 +
 +<code>> fds <- stack(fd)
 +> tapply(fds$values, fds$ind, mean)
 +  finance marketing    policy 
 +      6.6       6.6       5.6 
 +> tapply(fds$values, fds$ind, pvar)
 +  finance marketing    policy 
 +     9.84      5.04      3.04 
 +> options(digits=5)
 +> tapply(fds$values, fds$ind, psd)
 +  finance marketing    policy 
 +   3.1369    2.2450    1.7436 
 +
 + </code>
  
 |  Standardized \\ Variable, \\ Y<sub>i</sub>  |  Observed \\ variance, S<sup>2</sup><sub>i</sub>    Loadings on  || Communality, \\ $b^2_{i1} + b^2_{i2} $  |  Percent \\ explained  |  spec. \\ variance  | |  Standardized \\ Variable, \\ Y<sub>i</sub>  |  Observed \\ variance, S<sup>2</sup><sub>i</sub>    Loadings on  || Communality, \\ $b^2_{i1} + b^2_{i2} $  |  Percent \\ explained  |  spec. \\ variance  |
Line 1078: Line 1148:
 ====== e.g., 5 ====== ====== e.g., 5 ======
 {{:r:EFA.csv}} {{:r:EFA.csv}}
 +====== e.g. secu com finance 2007 example  ======
 +{{:r:secu_com_finance_2007.csv}}
 +
 +<code>
 +Sys.setlocale("LC_ALL","Korean")
 +secu_com_finance_2007 <- read.csv("http://commres.net/wiki/_media/r/secu_com_finance_2007.csv")
 +secu_com_finance_2007
 +
 +# V1 : 총자본순이익율
 +# V2 : 자기자본순이익율
 +# V3 : 자기자본비율
 +# V4 : 부채비율
 +# V5 : 자기자본회전율
 +
 +</code>
 ====== etc.  ====== ====== etc.  ======
 <del>see http://geog.uoregon.edu/bartlein/courses/geog495/lec16.html</del> <del>see http://geog.uoregon.edu/bartlein/courses/geog495/lec16.html</del>
 {{:r:boxes.csv}} {{:r:boxes.csv}}
 {{:r:cities.csv}} {{:r:cities.csv}}
-{{:r:secu_com_finance_2007.csv}}+
 ====== Reference ====== ====== Reference ======
 {{:factor_analysis_lecture_note.pdf|Lecture Note}} from databaser {{:factor_analysis_lecture_note.pdf|Lecture Note}} from databaser
  
factor_analysis.txt · Last modified: 2023/11/06 02:53 by hkimscil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki