factor_analysis
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| factor_analysis [2022/05/05 12:43] – [eigenvalues] hkimscil | factor_analysis [2026/07/21 10:22] (current) – hkimscil | ||
|---|---|---|---|
| Line 73: | Line 73: | ||
| | 5 | 10 | 6 | 5 | | | 5 | 10 | 6 | 5 | | ||
| </ | </ | ||
| - | 학생들의 점수가 위와 같다고 하고, 이 점수는 사실은 **<fc # | + | 다섯 |
| 각 과목의 점수는 위의 가정을 받아들인다면 아래와 같은 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_{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_{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 |
| \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만큼 기여하는 것이 된다. |
| 상식을 이용해서 문제를 살펴보면, | 상식을 이용해서 문제를 살펴보면, | ||
| Line 126: | Line 126: | ||
| * fiance (혹은 다른 시험) 점수의 총 분산값은 $F1$과 $F2$의 coefficient(loading)값을 각각 제곱해서 더한 것에 | * fiance (혹은 다른 시험) 점수의 총 분산값은 $F1$과 $F2$의 coefficient(loading)값을 각각 제곱해서 더한 것에 | ||
| * 에러의 분산값을 더한 것과 같다. | * 에러의 분산값을 더한 것과 같다. | ||
| - | * 여기서 loading 제곱의 합은 regression으로 설명되는 부분이고 | + | * 여기서 loading 제곱의 합은 regression으로 설명되는 부분이고 |
| - | * 에러의 분산값은 어느 factor에도 기여를 하지 못하는 나머지 부분이다. | + | * 에러의 분산값은 어느 factor에도 기여를 하지 못하는 나머지 부분이다. |
| * 즉, fiance의 분산값은 $F1$, $F2$가 기여하는 부분과 이 둘에 포함되지 않는 나머지로 나눌 수 있다. 이는 regression에서 explained(regression) variance와 unexplained variance를 이야기 하는 것과 같은 이치이다. | * 즉, fiance의 분산값은 $F1$, $F2$가 기여하는 부분과 이 둘에 포함되지 않는 나머지로 나눌 수 있다. 이는 regression에서 explained(regression) variance와 unexplained variance를 이야기 하는 것과 같은 이치이다. | ||
| * 앞의 두 coefficient(계수 혹은 factor loading)을 **communality**라고 부른다. 이 이름이 자연스러운 것은 Y의 총분산 중 두 요인($F1$, | * 앞의 두 coefficient(계수 혹은 factor loading)을 **communality**라고 부른다. 이 이름이 자연스러운 것은 Y의 총분산 중 두 요인($F1$, | ||
| Line 153: | Line 153: | ||
| 위에서 | 위에서 | ||
| * $Cov(\beta_{i0}, | * $Cov(\beta_{i0}, | ||
| - | * (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는 |
| 이에 따라서 covariance matrix를 채워보면 아래와 같다. | 이에 따라서 covariance matrix를 채워보면 아래와 같다. | ||
| Line 185: | Line 185: | ||
| | Y3 | $S_{31}$ | | Y3 | $S_{31}$ | ||
| - | 실제 데이터에서 구한 variance covariance table은 아래와 같다. | + | 실제 데이터에서 구한 variance covariance table은 아래와 같다((편의상 여기 분산값은 n으로 (n-1이 아닌) 나눠 준 것)). |
| | Variable | | Variable | ||
| Line 197: | Line 197: | ||
| ## 예를 들어 | ## 예를 들어 | ||
| fd <- read.csv(" | fd <- read.csv(" | ||
| + | fd <- fd[, -1] # 처음 id 컬럼 지우기 | ||
| cov(fd) | cov(fd) | ||
| Line 273: | Line 274: | ||
| ====== Factor solution among many . . . ====== | ====== Factor solution among many . . . ====== | ||
| - | | Variable, \\ Y< | + | | Variable, \\ Y< |
| - | | Finance, Y< | + | | Finance, Y< |
| - | | Marketing, Y< | + | | Marketing, Y< |
| - | | Policy, Y< | + | | Policy, Y< |
| - | | total | T< | + | | total | T< |
| 각 변인의 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 | ||
| - | 각주 | + | 각주 |
| < | < | ||
| Line 457: | Line 458: | ||
| | Economics | | Economics | ||
| | Total | | Total | ||
| + | ===== Specificity ===== | ||
| + | | Variable | ||
| + | | Climate | ||
| + | | Housing | ||
| + | | Health | ||
| + | | Crime | ||
| + | | Transportation | ||
| + | | Education | ||
| + | | Arts | 0.754 | | | ||
| + | | Recreation | ||
| + | | Economics | ||
| + | | Total | ||
| ====== Methods (functions) in R ====== | ====== Methods (functions) in R ====== | ||
| Line 468: | Line 481: | ||
| < | < | ||
| - | mydata | + | my.data |
| # 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 |
| </ | </ | ||
| + | |||
| SS total <fc # | SS total <fc # | ||
| $\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)/ | > (4.50+3.19+2.97+2.55+2.31+2.16)/ | ||
| [1] 0.5525 | [1] 0.5525 | ||
| + | |||
| + | > or | ||
| + | sum(d.fa.so.loadings^2)/ | ||
| </ | </ | ||
| ===== specific variance ===== | ===== specific variance ===== | ||
| Line 1547: | Line 1564: | ||
| ====== Reference ====== | ====== Reference ====== | ||
| {{: | {{: | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | see exploratory factor analysis :: {{youtube> | ||
factor_analysis.1651754635.txt.gz · Last modified: by hkimscil
