library(tidyverse)
library(readxl)
library(GPArotation)
library(psych)
library(FactoMineR)
library(cluster)
library(fpc)
library(NbClust)
library(knitr)
fa.vitamins <- read_xlsx(path = "vitamins example data.xlsx")
fa.vitamins
## # A tibble: 300 x 23
## p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 9 7 4 10 7 6 9 7 6 8 6 9 8
## 2 9 8 8 7 9 7 7 8 10 9 8 9 8
## 3 7 6 6 8 5 6 4 5 5 6 7 7 6
## 4 10 7 5 10 8 7 10 10 5 10 10 8 9
## 5 6 7 7 7 7 4 6 7 8 7 6 7 6
## 6 7 7 8 8 6 5 7 7 9 7 9 7 7
## 7 5 7 5 6 7 5 6 4 4 6 4 8 8
## 8 8 8 8 5 8 5 7 8 7 10 6 10 8
## 9 8 8 8 9 9 9 10 9 7 8 10 9 8
## 10 4 6 4 7 8 8 8 7 6 7 8 8 7
## # ... with 290 more rows, and 10 more variables: p14 <dbl>, p15 <dbl>,
## # p16 <dbl>, p17 <dbl>, p18 <dbl>, p19 <dbl>, p20 <dbl>, p21 <dbl>,
## # p22 <dbl>, p23 <dbl>
We perform Bartlett’s Test for Sphericity at 5% level of significance. And the result is as follows:
cortest.bartlett(R = cor(fa.vitamins), n = 300)
## $chisq
## [1] 4058.815
##
## $p.value
## [1] 0
##
## $df
## [1] 253
Results gives a p-value of less than 0.0001. Thus, at alpha 0.05 , we reject the null hypothesis that there is no common factor. Correlation among variables is present.
We also compute the Kaiser-Meyer-Olkin Measure of Sampling Adequacy. Results show that the KMO coefficient for all variables are close to 0.90. Thus, factor analysis are appropriate for all the data.
KMO(r = fa.vitamins)
## Kaiser-Meyer-Olkin factor adequacy
## Call: KMO(r = fa.vitamins)
## Overall MSA = 0.94
## MSA for each item =
## p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16
## 0.93 0.96 0.91 0.92 0.93 0.97 0.94 0.96 0.94 0.92 0.95 0.90 0.87 0.96 0.89 0.91
## p17 p18 p19 p20 p21 p22 p23
## 0.93 0.95 0.96 0.94 0.95 0.94 0.93
We perform PCA to determine the initial number of factors to extract for the exploratory factor analysis. Based on the results, the initial 5 factors has the eigenvalues greater than 1. Also, retaining 5 factors will give a cumulative percentage of variance of at least 69%. Retaining 6 factors will only bring a cumulative variance of at least 73%. We decide to initially consider 5 factors, considering the cumulative variance that is already close to 70% and results on eigenvalues.
pca.vitamins <- PCA(X=fa.vitamins, scale.unit=T, ncp=23)
## Warning: ggrepel: 4 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
pca.vitamins$eig
## eigenvalue percentage of variance cumulative percentage of variance
## comp 1 9.8446838 42.8029732 42.80297
## comp 2 2.0276359 8.8158081 51.61878
## comp 3 1.5505848 6.7416731 58.36045
## comp 4 1.3221803 5.7486099 64.10906
## comp 5 1.1439212 4.9735703 69.08263
## comp 6 0.9282812 4.0360053 73.11864
## comp 7 0.5449912 2.3695270 75.48817
## comp 8 0.5193455 2.2580239 77.74619
## comp 9 0.4653573 2.0232925 79.76948
## comp 10 0.4498444 1.9558452 81.72533
## comp 11 0.4256838 1.8507990 83.57613
## comp 12 0.4062776 1.7664246 85.34255
## comp 13 0.3878014 1.6860930 87.02865
## comp 14 0.3674851 1.5977614 88.62641
## comp 15 0.3473967 1.5104206 90.13683
## comp 16 0.3358201 1.4600875 91.59691
## comp 17 0.3282682 1.4272531 93.02417
## comp 18 0.3047669 1.3250735 94.34924
## comp 19 0.2885773 1.2546841 95.60393
## comp 20 0.2833016 1.2317462 96.83567
## comp 21 0.2614723 1.1368359 97.97251
## comp 22 0.2517682 1.0946444 99.06715
## comp 23 0.2145551 0.9328481 100.00000
The final solution has 4 factors and has varimax rotation. The detailed solution for obtaining the final factors for the exploratory factor analysis is in the Appendix.
The factor loadings for the final is as follows with the corresponding heat map. the heat map is produced using excel (attached).
Different parameters for the solution were adjusted to attain the final solution for the exploratory factor analysis. “Varimax” rotation were chosen since it provides a more interpretable results compared to “quartimax” and “oblimin”.
In general, it was quite difficult to get interpretations for the data involving other variables. To help give a clearer interpretation for the data, we removed some of the variables (p5, p6, p10, p12, p14, p16), the heat map and results are shown in the appendix. After removing the variables, it resulted to a much clearer table and is easier to interpret. The groupings of the values were much more visible and concise than the other one.
Let us look at our first factor. This “Energy Booster” factor of the vitamin is recommended for people who does a lot of ground work, and is often at night duty. If a person were to drink this vitamin, the vitamin can provide extra strength or energy to do things, can make one feel energized all day, relieves the fatigue and stress of the person who took the vitamin. Adding to the list of the benefits, the person drinking this vitamin will also be able to be more productive on extended hours and also fights lack of sleep. It also promotes better blood circulation throughout the body, and in line with that, also revitalizes the person’s body. In general, looking at the reasons above, we can see that this vitamin gives energy and immunity to the person who drinks it.
Moving on, our second factor contains the “Appearance Enhancing” factor of the vitamin. It is recommended for people who wants to improve and maintain their youthful and glowing appearance. If a person were to drink this vitamin, the person can expect their bones and teeth to be more solid and stronger, at the same time, it also promotes growth and increase in height. Some other benefits include having healthier, bouncier, and shiny hair, while also having immaculately clear skin.
For our third factor, we can call this the “Immunity Booster” factor of the vitamin. It is recommended for people who want to gain weight healthily while also increasing their body’s resistance to sickness and diseases. If a person were to drink this vitamin, the person would feel an increase in their appetite. In line with this, due to their new drive to appease their appetite comes with the option of gaining weight. An additional perk of this vitamin is that it also aids in increasing body resistance to illnesses.
Lastly, our fourth factor is the “Rejuvenating” factor of the vitamin. This is recommended for aging people who are adventurous and are outgoing. If a person were to drink this vitamin, it can assist in making the body strong, healthy, and ready to take on an adventure. To aid on the adventures, this vitamin also helps improve the eyesight of the person, which can add into the satisfaction of venturing outside. All in all, the vitamin helps the person feel younger, revitalize and restore their youth, and ready to conquer the world.
The following are the process done in order to determine the best number of factors. Upon checking between “varimax” and “quartimax” rotation, we decided to use “varimax” since it produces more interpretable results. In comparison with “oblimin”, “varimax” was still able to produce a more intepretable results.
p = c("increases body resistance",
"makes body strong and healthy",
"provides extra energy/strength",
"enhances/increases appetite",
"sharpens memory/enhances mental alertness",
"has no side effects",
"promotes weight gain",
"revitalizes/conditions body",
"relieves tiredness/fatigue/stress",
"has complete vitamins and minerals",
"fights lack of sleep",
"has nice packaging",
"promotes healthy hair",
"has affordable price",
"promotes growth/height",
"readily available",
"makes bones/teeth strong",
"promotes better blood circulation",
"promotes good skin",
"promotes good eyesight",
"makes one feel younger/revitalized",
"extends peak hours",
"keeps one full of energy")
variables <- data.frame(code = colnames(fa.vitamins),
variables = p)
The process starts at 8 factors for easier flow of comparison. The group started on checking from an initial 5 factors and tried adjusting the number of factors and removing variables until an interpretable and clear groupings is produced.
The following are the exploratory factor analysis for 8 factors and the corresponding heat map. Notice that only the “varimax” and “oblimin” rotation might produces better groupings for the variable.
fa8.varimax <- fa(r = fa.vitamins,
nfactors = 8,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa8.varimax.comm.kmo <- data.frame(communality = fa8.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables)
fa8.varimax.final <- as.data.frame(unclass(fa.sort(fa8.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa8.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa8.varimax.final
| variables | code | PA1 | PA3 | PA6 | PA2 | PA4 | PA5 | PA7 | PA8 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|---|---|
| readily available | p16 | 0.7464 | 0.1726 | 0.2182 | 0.1349 | -0.0195 | 0.0447 | 0.0397 | 0.0481 | 0.6590 | 0.9115 |
| extends peak hours | p22 | 0.6660 | 0.1494 | 0.1866 | 0.0253 | 0.3736 | 0.2049 | 0.0465 | -0.0045 | 0.6851 | 0.9392 |
| keeps one full of energy | p23 | 0.6337 | 0.0766 | 0.3617 | 0.0285 | 0.4022 | 0.0851 | -0.1231 | 0.0114 | 0.7234 | 0.9301 |
| fights lack of sleep | p11 | 0.5972 | 0.2863 | 0.3144 | 0.1686 | -0.0710 | 0.2504 | 0.0537 | -0.1279 | 0.6529 | 0.9521 |
| promotes good skin | p19 | 0.4513 | 0.3024 | 0.1766 | 0.4311 | 0.2190 | 0.1718 | 0.1184 | 0.2011 | 0.6441 | 0.9609 |
| enhances/increases appetite | p4 | 0.2152 | 0.7410 | 0.0664 | 0.1110 | 0.1785 | 0.0712 | -0.0241 | 0.0672 | 0.6541 | 0.9228 |
| promotes weight gain | p7 | 0.2510 | 0.6751 | 0.0769 | 0.2784 | 0.0470 | 0.1778 | 0.0798 | -0.0985 | 0.6521 | 0.9403 |
| increases body resistance | p1 | 0.1268 | 0.6089 | 0.2925 | -0.0624 | 0.2349 | 0.3638 | -0.0301 | -0.0059 | 0.6647 | 0.9284 |
| makes body strong and healthy | p2 | 0.1165 | 0.4515 | 0.3201 | 0.1172 | 0.4352 | 0.1766 | 0.0360 | 0.2093 | 0.5993 | 0.9584 |
| provides extra energy/strength | p3 | 0.2153 | 0.0574 | 0.7639 | 0.0236 | 0.2257 | 0.2053 | -0.0328 | 0.0298 | 0.7288 | 0.9139 |
| relieves tiredness/fatigue/stress | p9 | 0.2887 | 0.1889 | 0.7239 | 0.0527 | 0.1252 | 0.1582 | 0.0416 | -0.0079 | 0.6884 | 0.9430 |
| sharpens memory/enhances mental alertness | p5 | 0.2953 | 0.0380 | 0.5472 | 0.4027 | 0.2154 | 0.0344 | 0.4012 | 0.0376 | 0.7602 | 0.9307 |
| has affordable price | p14 | 0.3748 | 0.3204 | 0.4802 | 0.2195 | 0.2498 | -0.0520 | -0.0234 | 0.0464 | 0.5897 | 0.9639 |
| revitalizes/conditions body | p8 | 0.3313 | 0.4768 | 0.4795 | 0.2264 | 0.0159 | 0.2606 | -0.0594 | -0.0721 | 0.6952 | 0.9612 |
| has no side effects | p6 | 0.4156 | 0.4057 | 0.4224 | 0.2289 | 0.2001 | -0.0314 | 0.0277 | -0.0229 | 0.6105 | 0.9699 |
| promotes growth/height | p15 | 0.1418 | 0.1730 | 0.0864 | 0.7816 | 0.1370 | 0.0309 | 0.0127 | -0.1130 | 0.7011 | 0.8948 |
| promotes healthy hair | p13 | 0.0844 | 0.0435 | 0.0722 | 0.7787 | 0.0982 | 0.1303 | 0.0109 | 0.1069 | 0.6588 | 0.8737 |
| has nice packaging | p12 | -0.0432 | 0.5233 | 0.0697 | 0.5462 | 0.1164 | 0.0815 | -0.0200 | 0.0154 | 0.5997 | 0.8950 |
| promotes good eyesight | p20 | 0.2797 | 0.2047 | 0.1827 | 0.2122 | 0.6277 | 0.3364 | 0.0584 | -0.0031 | 0.7091 | 0.9421 |
| makes one feel younger/revitalized | p21 | 0.0415 | 0.2446 | 0.2559 | 0.3112 | 0.5715 | 0.1152 | 0.0214 | -0.0376 | 0.5657 | 0.9504 |
| has complete vitamins and minerals | p10 | 0.0628 | 0.2875 | 0.2042 | 0.0899 | 0.2642 | 0.6980 | 0.0292 | 0.0529 | 0.6971 | 0.9206 |
| makes bones/teeth strong | p17 | 0.3191 | 0.1461 | 0.0646 | 0.4391 | 0.0620 | 0.5345 | 0.0279 | -0.1221 | 0.6253 | 0.9346 |
| promotes better blood circulation | p18 | 0.3435 | 0.1134 | 0.2805 | 0.1810 | 0.3583 | 0.4223 | -0.2216 | 0.1521 | 0.6212 | 0.9466 |
fa8.quartimax <- fa(r = fa.vitamins,
nfactors = 8,
SMC = T,
scores = "regression",
rotate = "quartimax",
fm = "pa")
fa8.quartimax.comm.kmo <- data.frame(communality = fa8.quartimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables)
fa8.quartimax.final <- as.data.frame(unclass(fa.sort(fa8.quartimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa8.quartimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa8.quartimax.final
| variables | code | PA1 | PA2 | PA3 | PA5 | PA4 | PA6 | PA7 | PA8 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|---|---|
| keeps one full of energy | p23 | 0.7776 | -0.1017 | -0.1892 | -0.1193 | 0.0129 | 0.1751 | -0.1641 | -0.0248 | 0.7234 | 0.9301 |
| extends peak hours | p22 | 0.7397 | -0.0874 | -0.0789 | 0.0224 | -0.0619 | 0.3412 | -0.0455 | -0.0335 | 0.6851 | 0.9392 |
| relieves tiredness/fatigue/stress | p9 | 0.7355 | -0.0914 | -0.0819 | -0.0157 | -0.0194 | -0.3418 | 0.1197 | -0.0239 | 0.6884 | 0.9430 |
| revitalizes/conditions body | p8 | 0.7270 | 0.1057 | 0.2452 | 0.0804 | -0.1640 | -0.2370 | -0.0290 | -0.0709 | 0.6952 | 0.9612 |
| has no side effects | p6 | 0.7240 | 0.1019 | 0.1739 | -0.1988 | -0.0218 | -0.0507 | 0.0441 | -0.0341 | 0.6105 | 0.9699 |
| has affordable price | p14 | 0.7178 | 0.0899 | 0.0779 | -0.2168 | 0.0529 | -0.0982 | 0.0088 | 0.0284 | 0.5897 | 0.9639 |
| provides extra energy/strength | p3 | 0.7145 | -0.1155 | -0.2202 | 0.0423 | 0.1023 | -0.3759 | 0.0544 | 0.0015 | 0.7288 | 0.9139 |
| fights lack of sleep | p11 | 0.6839 | 0.0521 | 0.0795 | 0.0449 | -0.3984 | 0.0227 | 0.0259 | -0.1190 | 0.6529 | 0.9521 |
| promotes good eyesight | p20 | 0.6820 | 0.1290 | -0.0007 | 0.2354 | 0.3332 | 0.2412 | -0.0115 | -0.0501 | 0.7091 | 0.9421 |
| promotes good skin | p19 | 0.6675 | 0.3298 | 0.1114 | 0.0231 | -0.0653 | 0.1760 | 0.0677 | 0.1924 | 0.6441 | 0.9609 |
| promotes better blood circulation | p18 | 0.6622 | 0.0902 | -0.1076 | 0.2669 | 0.0897 | 0.0387 | -0.2606 | 0.1193 | 0.6212 | 0.9466 |
| sharpens memory/enhances mental alertness | p5 | 0.6577 | 0.2727 | -0.1826 | -0.0944 | 0.0371 | -0.0905 | 0.4481 | 0.0242 | 0.7602 | 0.9307 |
| readily available | p16 | 0.6510 | 0.0161 | -0.0279 | -0.1684 | -0.4038 | 0.1994 | -0.0137 | 0.0525 | 0.6590 | 0.9115 |
| makes body strong and healthy | p2 | 0.6269 | 0.0266 | 0.2526 | 0.0951 | 0.3155 | -0.0279 | 0.0291 | 0.1777 | 0.5993 | 0.9584 |
| increases body resistance | p1 | 0.6019 | -0.1419 | 0.4279 | 0.2697 | 0.1115 | -0.1071 | -0.0460 | -0.0223 | 0.6647 | 0.9284 |
| makes one feel younger/revitalized | p21 | 0.5385 | 0.2420 | 0.0759 | 0.0593 | 0.4474 | 0.0337 | 0.0197 | -0.0787 | 0.5657 | 0.9504 |
| makes bones/teeth strong | p17 | 0.4911 | 0.3848 | 0.0205 | 0.4081 | -0.2044 | 0.1072 | -0.0340 | -0.1211 | 0.6253 | 0.9346 |
| promotes healthy hair | p13 | 0.3052 | 0.7404 | -0.0344 | 0.0623 | 0.0135 | -0.0018 | 0.0163 | 0.1088 | 0.6588 | 0.8737 |
| promotes growth/height | p15 | 0.3753 | 0.7333 | 0.0804 | -0.0518 | 0.0170 | 0.0207 | 0.0197 | -0.1111 | 0.7011 | 0.8948 |
| has nice packaging | p12 | 0.3400 | 0.5110 | 0.4477 | 0.0419 | 0.1127 | -0.0874 | -0.0094 | 0.0197 | 0.5997 | 0.8950 |
| enhances/increases appetite | p4 | 0.5125 | 0.0465 | 0.6112 | -0.0120 | 0.0445 | 0.0715 | -0.0659 | 0.0641 | 0.6541 | 0.9228 |
| promotes weight gain | p7 | 0.5185 | 0.2128 | 0.5535 | 0.0786 | -0.1165 | 0.0476 | 0.0417 | -0.0886 | 0.6521 | 0.9403 |
| has complete vitamins and minerals | p10 | 0.5240 | 0.0359 | 0.1337 | 0.6233 | 0.1102 | -0.0374 | -0.0166 | 0.0312 | 0.6971 | 0.9206 |
fa8.oblimin <- fa(r = fa.vitamins,
nfactors = 8,
SMC = T,
scores = "regression",
rotate = "oblimin",
fm = "pa")
fa8.oblimin.comm.kmo <- data.frame(communality = fa8.oblimin$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables)
fa8.oblimin.final <- as.data.frame(unclass(fa.sort(fa8.oblimin$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa8.oblimin.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa8.oblimin.final
| variables | code | PA3 | PA1 | PA6 | PA2 | PA5 | PA7 | PA4 | PA8 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|---|---|
| enhances/increases appetite | p4 | 0.7632 | 0.1148 | -0.0412 | -0.0035 | -0.0136 | -0.0251 | 0.0519 | 0.0915 | 0.6541 | 0.9228 |
| promotes weight gain | p7 | 0.6464 | 0.1048 | -0.0430 | 0.1191 | 0.1325 | 0.0799 | 0.0251 | -0.1432 | 0.6521 | 0.9403 |
| increases body resistance | p1 | 0.5398 | -0.0426 | 0.2357 | -0.1834 | 0.2886 | -0.0253 | 0.1224 | 0.0411 | 0.6647 | 0.9284 |
| makes body strong and healthy | p2 | 0.3930 | -0.0486 | 0.1242 | -0.0290 | 0.0790 | 0.1619 | 0.1700 | 0.3133 | 0.5993 | 0.9584 |
| has no side effects | p6 | 0.3319 | 0.2491 | 0.2844 | 0.1113 | -0.1631 | 0.1508 | 0.1123 | -0.0105 | 0.6105 | 0.9699 |
| readily available | p16 | 0.1059 | 0.7211 | 0.0549 | 0.0296 | -0.0290 | 0.1284 | -0.1320 | -0.0024 | 0.6590 | 0.9115 |
| extends peak hours | p22 | 0.0426 | 0.6083 | -0.0462 | -0.1158 | 0.1226 | 0.1222 | 0.2829 | 0.0444 | 0.6851 | 0.9392 |
| keeps one full of energy | p23 | -0.0522 | 0.5744 | 0.2492 | -0.0003 | -0.0693 | -0.0372 | 0.3031 | 0.1068 | 0.7234 | 0.9301 |
| fights lack of sleep | p11 | 0.1665 | 0.4808 | 0.2199 | 0.0444 | 0.1912 | 0.1050 | -0.0875 | -0.2028 | 0.6529 | 0.9521 |
| promotes good skin | p19 | 0.2162 | 0.3440 | -0.0955 | 0.2590 | 0.1094 | 0.2651 | -0.0393 | 0.2151 | 0.6441 | 0.9609 |
| provides extra energy/strength | p3 | -0.1172 | -0.0016 | 0.7300 | -0.0353 | 0.0741 | 0.1413 | 0.0721 | 0.0909 | 0.7288 | 0.9139 |
| relieves tiredness/fatigue/stress | p9 | 0.0442 | 0.0623 | 0.6502 | -0.0581 | 0.0423 | 0.2141 | -0.0018 | 0.0022 | 0.6884 | 0.9430 |
| revitalizes/conditions body | p8 | 0.3471 | 0.1387 | 0.4752 | 0.1510 | 0.1479 | -0.0008 | -0.0647 | -0.0891 | 0.6952 | 0.9612 |
| has affordable price | p14 | 0.2361 | 0.2160 | 0.3639 | 0.1393 | -0.2023 | 0.1201 | 0.1129 | 0.0920 | 0.5897 | 0.9639 |
| promotes healthy hair | p13 | -0.0793 | -0.0103 | -0.0255 | 0.7545 | 0.0859 | 0.1150 | -0.0541 | 0.1232 | 0.6588 | 0.8737 |
| promotes growth/height | p15 | 0.0545 | 0.0092 | 0.0077 | 0.7470 | -0.0415 | 0.0816 | 0.1468 | -0.1118 | 0.7011 | 0.8948 |
| has nice packaging | p12 | 0.4807 | -0.1876 | 0.0208 | 0.4895 | 0.0133 | 0.0089 | 0.0284 | 0.0319 | 0.5997 | 0.8950 |
| has complete vitamins and minerals | p10 | 0.1260 | -0.0928 | 0.1051 | -0.0429 | 0.6937 | 0.0479 | 0.0912 | 0.1099 | 0.6971 | 0.9206 |
| makes bones/teeth strong | p17 | -0.0352 | 0.2137 | -0.0135 | 0.3508 | 0.5296 | 0.0256 | 0.0406 | -0.1459 | 0.6253 | 0.9346 |
| promotes better blood circulation | p18 | -0.0625 | 0.2785 | 0.2595 | 0.2074 | 0.3024 | -0.1819 | 0.1335 | 0.2790 | 0.6212 | 0.9466 |
| sharpens memory/enhances mental alertness | p5 | -0.0852 | 0.0387 | 0.1779 | 0.1099 | 0.0001 | 0.7004 | 0.0615 | 0.0006 | 0.7602 | 0.9307 |
| promotes good eyesight | p20 | 0.0608 | 0.1333 | -0.0605 | 0.0600 | 0.2562 | 0.1447 | 0.5149 | 0.1232 | 0.7091 | 0.9421 |
| makes one feel younger/revitalized | p21 | 0.1345 | -0.1404 | 0.0957 | 0.2133 | 0.0086 | 0.1206 | 0.5050 | 0.0888 | 0.5657 | 0.9504 |
If we take a look at the variable “p5”, notice that it doesn’t have any companion variables for it to be considered as a factor. Hence, we removed it from the list of variables.
fa.vitamins <- fa.vitamins %>% select(-"p5")
fa6.varimax <- fa(r = fa.vitamins,
nfactors = 6,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa6.varimax.comm.kmo <- data.frame(communality = fa6.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[-5])
fa6.varimax.final <- as.data.frame(unclass(fa.sort(fa6.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa6.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa6.varimax.final
| variables | code | PA1 | PA3 | PA6 | PA2 | PA4 | PA5 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|
| readily available | p16 | 0.7481 | 0.1635 | 0.2046 | 0.1353 | 0.0158 | 0.0446 | 0.6489 | 0.9075 |
| extends peak hours | p22 | 0.6676 | 0.1419 | 0.1605 | 0.0272 | 0.3983 | 0.1868 | 0.6859 | 0.9363 |
| keeps one full of energy | p23 | 0.6263 | 0.0605 | 0.3430 | 0.0281 | 0.4259 | 0.0680 | 0.7004 | 0.9269 |
| fights lack of sleep | p11 | 0.6091 | 0.2779 | 0.3113 | 0.1755 | -0.0573 | 0.2624 | 0.6481 | 0.9488 |
| promotes good skin | p19 | 0.4422 | 0.2891 | 0.1622 | 0.4296 | 0.2764 | 0.1471 | 0.5880 | 0.9576 |
| has no side effects | p6 | 0.4261 | 0.3895 | 0.4137 | 0.2422 | 0.2122 | -0.0448 | 0.6100 | 0.9663 |
| enhances/increases appetite | p4 | 0.2125 | 0.7347 | 0.0708 | 0.1189 | 0.2104 | 0.0568 | 0.6516 | 0.9191 |
| promotes weight gain | p7 | 0.2586 | 0.6727 | 0.0791 | 0.2903 | 0.0489 | 0.1840 | 0.6462 | 0.9395 |
| increases body resistance | p1 | 0.1250 | 0.5980 | 0.3074 | -0.0500 | 0.2739 | 0.3448 | 0.6641 | 0.9300 |
| provides extra energy/strength | p3 | 0.2256 | 0.0374 | 0.7514 | 0.0292 | 0.2703 | 0.1819 | 0.7240 | 0.9118 |
| relieves tiredness/fatigue/stress | p9 | 0.3046 | 0.1726 | 0.7109 | 0.0636 | 0.1602 | 0.1426 | 0.6780 | 0.9363 |
| revitalizes/conditions body | p8 | 0.3415 | 0.4588 | 0.4841 | 0.2340 | 0.0486 | 0.2605 | 0.6864 | 0.9587 |
| has affordable price | p14 | 0.3815 | 0.2962 | 0.4774 | 0.2340 | 0.2770 | -0.0790 | 0.5989 | 0.9603 |
| promotes growth/height | p15 | 0.1519 | 0.1586 | 0.0732 | 0.7800 | 0.1170 | 0.0401 | 0.6774 | 0.8830 |
| promotes healthy hair | p13 | 0.0876 | 0.0317 | 0.0543 | 0.7655 | 0.1300 | 0.1206 | 0.6291 | 0.8686 |
| has nice packaging | p12 | -0.0423 | 0.5064 | 0.0795 | 0.5616 | 0.1295 | 0.0715 | 0.6018 | 0.8972 |
| promotes good eyesight | p20 | 0.2756 | 0.1932 | 0.1638 | 0.2227 | 0.6397 | 0.3004 | 0.6893 | 0.9409 |
| makes one feel younger/revitalized | p21 | 0.0476 | 0.2275 | 0.2413 | 0.3244 | 0.5572 | 0.0882 | 0.5358 | 0.9466 |
| makes body strong and healthy | p2 | 0.1160 | 0.4333 | 0.3065 | 0.1279 | 0.4912 | 0.1353 | 0.5711 | 0.9578 |
| promotes better blood circulation | p18 | 0.3278 | 0.0987 | 0.2793 | 0.1744 | 0.4240 | 0.3732 | 0.5447 | 0.9590 |
| has complete vitamins and minerals | p10 | 0.0573 | 0.2787 | 0.2060 | 0.0945 | 0.3284 | 0.6732 | 0.6934 | 0.9178 |
| makes bones/teeth strong | p17 | 0.3214 | 0.1349 | 0.0653 | 0.4437 | 0.0792 | 0.5398 | 0.6203 | 0.9323 |
fa6.quartimax <- fa(r = fa.vitamins,
nfactors = 6,
SMC = T,
scores = "regression",
rotate = "quartimax",
fm = "pa")
fa6.quartimax.comm.kmo <- data.frame(communality = fa6.quartimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[-5])
fa6.quartimax.final <- as.data.frame(unclass(fa.sort(fa6.quartimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa6.quartimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa6.quartimax.final
| variables | code | PA1 | PA2 | PA4 | PA5 | PA3 | PA6 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|
| keeps one full of energy | p23 | 0.7763 | -0.0943 | -0.2139 | -0.1127 | 0.0129 | -0.1738 | 0.7004 | 0.9269 |
| extends peak hours | p22 | 0.7473 | -0.0761 | -0.1071 | 0.0089 | -0.0661 | -0.3252 | 0.6859 | 0.9363 |
| revitalizes/conditions body | p8 | 0.7275 | 0.1161 | 0.2295 | 0.0772 | -0.1701 | 0.2369 | 0.6864 | 0.9587 |
| relieves tiredness/fatigue/stress | p9 | 0.7225 | -0.0714 | -0.0905 | -0.0300 | -0.0226 | 0.3758 | 0.6780 | 0.9363 |
| has no side effects | p6 | 0.7216 | 0.1194 | 0.1544 | -0.2120 | -0.0236 | 0.0753 | 0.6100 | 0.9663 |
| has affordable price | p14 | 0.7152 | 0.1086 | 0.0537 | -0.2333 | 0.0628 | 0.1198 | 0.5989 | 0.9603 |
| provides extra energy/strength | p3 | 0.7001 | -0.1003 | -0.2287 | 0.0366 | 0.1022 | 0.3996 | 0.7240 | 0.9118 |
| promotes good eyesight | p20 | 0.6858 | 0.1470 | -0.0260 | 0.2279 | 0.3149 | -0.2134 | 0.6893 | 0.9409 |
| fights lack of sleep | p11 | 0.6849 | 0.0650 | 0.0608 | 0.0292 | -0.4126 | 0.0027 | 0.6481 | 0.9488 |
| promotes better blood circulation | p18 | 0.6640 | 0.0900 | -0.1219 | 0.2556 | 0.1022 | -0.0711 | 0.5447 | 0.9590 |
| promotes good skin | p19 | 0.6639 | 0.3397 | 0.0901 | -0.0041 | -0.0403 | -0.1485 | 0.5880 | 0.9576 |
| readily available | p16 | 0.6514 | 0.0255 | -0.0497 | -0.1904 | -0.3893 | -0.1831 | 0.6489 | 0.9075 |
| makes body strong and healthy | p2 | 0.6316 | 0.0438 | 0.2326 | 0.0824 | 0.3291 | 0.0315 | 0.5711 | 0.9578 |
| increases body resistance | p1 | 0.6199 | -0.1301 | 0.4100 | 0.2675 | 0.1094 | 0.1066 | 0.6641 | 0.9300 |
| makes one feel younger/revitalized | p21 | 0.5348 | 0.2583 | 0.0567 | 0.0633 | 0.4191 | -0.0099 | 0.5358 | 0.9466 |
| makes bones/teeth strong | p17 | 0.4937 | 0.3949 | -0.0004 | 0.4002 | -0.2264 | -0.0960 | 0.6203 | 0.9323 |
| promotes healthy hair | p13 | 0.2915 | 0.7343 | -0.0385 | 0.0538 | 0.0216 | -0.0054 | 0.6291 | 0.8686 |
| promotes growth/height | p15 | 0.3620 | 0.7342 | 0.0695 | -0.0466 | -0.0039 | -0.0122 | 0.6774 | 0.8830 |
| has nice packaging | p12 | 0.3431 | 0.5238 | 0.4344 | 0.0387 | 0.1143 | 0.0805 | 0.6018 | 0.8972 |
| enhances/increases appetite | p4 | 0.5314 | 0.0521 | 0.5956 | -0.0161 | 0.0568 | -0.0913 | 0.6516 | 0.9191 |
| promotes weight gain | p7 | 0.5293 | 0.2240 | 0.5408 | 0.0708 | -0.1299 | -0.0391 | 0.6462 | 0.9395 |
| has complete vitamins and minerals | p10 | 0.5358 | 0.0470 | 0.1181 | 0.6142 | 0.1073 | 0.0385 | 0.6934 | 0.9178 |
fa6.oblimin <- fa(r = fa.vitamins,
nfactors = 6,
SMC = T,
scores = "regression",
rotate = "oblimin",
fm = "pa")
fa6.oblimin.comm.kmo <- data.frame(communality = fa6.oblimin$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[-5])
fa6.oblimin.final <- as.data.frame(unclass(fa.sort(fa6.oblimin$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa6.oblimin.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa6.oblimin.final
| variables | code | PA1 | PA6 | PA3 | PA2 | PA5 | PA4 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|
| extends peak hours | p22 | 0.7800 | -0.0232 | 0.0594 | -0.0558 | 0.1244 | 0.0737 | 0.6859 | 0.9363 |
| keeps one full of energy | p23 | 0.6989 | 0.2257 | -0.0444 | -0.0294 | -0.0201 | 0.1345 | 0.7004 | 0.9269 |
| readily available | p16 | 0.6773 | 0.0841 | 0.0937 | 0.0611 | -0.0899 | -0.2778 | 0.6489 | 0.9075 |
| promotes good eyesight | p20 | 0.4004 | 0.0082 | 0.0774 | 0.1658 | 0.3021 | 0.3907 | 0.6893 | 0.9409 |
| fights lack of sleep | p11 | 0.3972 | 0.2386 | 0.1697 | 0.0720 | 0.1355 | -0.3681 | 0.6481 | 0.9488 |
| promotes good skin | p19 | 0.3892 | 0.0286 | 0.1882 | 0.3730 | 0.0625 | 0.0269 | 0.5880 | 0.9576 |
| provides extra energy/strength | p3 | 0.0160 | 0.8496 | -0.1422 | -0.0149 | 0.0835 | 0.0703 | 0.7240 | 0.9118 |
| relieves tiredness/fatigue/stress | p9 | 0.0445 | 0.7879 | 0.0213 | -0.0039 | 0.0175 | -0.0522 | 0.6780 | 0.9363 |
| revitalizes/conditions body | p8 | 0.0354 | 0.4750 | 0.3448 | 0.1195 | 0.1382 | -0.2007 | 0.6864 | 0.9587 |
| has affordable price | p14 | 0.2487 | 0.4511 | 0.2105 | 0.1783 | -0.2091 | 0.0916 | 0.5989 | 0.9603 |
| has no side effects | p6 | 0.2731 | 0.3608 | 0.3213 | 0.1649 | -0.1791 | 0.0080 | 0.6100 | 0.9663 |
| enhances/increases appetite | p4 | 0.1281 | -0.0700 | 0.7843 | -0.0211 | -0.0013 | 0.0668 | 0.6516 | 0.9191 |
| promotes weight gain | p7 | 0.0733 | -0.0416 | 0.6684 | 0.1607 | 0.1080 | -0.1351 | 0.6462 | 0.9395 |
| increases body resistance | p1 | -0.0162 | 0.2408 | 0.5628 | -0.2030 | 0.3153 | 0.0760 | 0.6641 | 0.9300 |
| makes body strong and healthy | p2 | 0.0921 | 0.2295 | 0.3792 | 0.0413 | 0.1022 | 0.3342 | 0.5711 | 0.9578 |
| promotes healthy hair | p13 | -0.0211 | 0.0144 | -0.1123 | 0.8111 | 0.0697 | 0.0254 | 0.6291 | 0.8686 |
| promotes growth/height | p15 | 0.0181 | 0.0174 | 0.0389 | 0.8066 | -0.0377 | 0.0052 | 0.6774 | 0.8830 |
| has nice packaging | p12 | -0.2223 | 0.0266 | 0.4681 | 0.5165 | 0.0187 | 0.0677 | 0.6018 | 0.8972 |
| has complete vitamins and minerals | p10 | -0.0251 | 0.1354 | 0.1397 | -0.0112 | 0.7085 | 0.0795 | 0.6934 | 0.9178 |
| makes bones/teeth strong | p17 | 0.1960 | -0.0366 | -0.0299 | 0.3889 | 0.5107 | -0.2028 | 0.6203 | 0.9323 |
| promotes better blood circulation | p18 | 0.3337 | 0.1879 | -0.0518 | 0.1167 | 0.3479 | 0.1527 | 0.5447 | 0.9590 |
| makes one feel younger/revitalized | p21 | 0.0838 | 0.1716 | 0.1362 | 0.3024 | 0.0711 | 0.4366 | 0.5358 | 0.9466 |
Now, if we look at the variable “p6”, it seems like it does not appear to have any factors that are strongly correlated to it. In other words, it doesn’t offer significant insights for the other factors. Hence, we removed it from the list of variables.
fa.vitamins <- fa.vitamins %>% select(-"p6")
fa6.varimax <- fa(r = fa.vitamins,
nfactors = 6,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa6.varimax.comm.kmo <- data.frame(communality = fa6.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa6.varimax.final <- as.data.frame(unclass(fa.sort(fa6.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa6.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa6.varimax.final
| variables | code | PA4 | PA3 | PA2 | PA6 | PA1 | PA5 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|
| readily available | p16 | 0.7517 | 0.1633 | 0.1382 | 0.1993 | 0.0262 | 0.0367 | 0.6525 | 0.8990 |
| extends peak hours | p22 | 0.6619 | 0.1421 | 0.0287 | 0.1573 | 0.4108 | 0.1755 | 0.6834 | 0.9324 |
| keeps one full of energy | p23 | 0.6265 | 0.0619 | 0.0319 | 0.3396 | 0.4378 | 0.0458 | 0.7064 | 0.9208 |
| fights lack of sleep | p11 | 0.6134 | 0.2812 | 0.1766 | 0.3115 | -0.0435 | 0.2545 | 0.6502 | 0.9443 |
| promotes good skin | p19 | 0.4389 | 0.2872 | 0.4304 | 0.1553 | 0.2851 | 0.1430 | 0.5863 | 0.9531 |
| enhances/increases appetite | p4 | 0.2133 | 0.7357 | 0.1218 | 0.0654 | 0.2145 | 0.0422 | 0.6537 | 0.9126 |
| promotes weight gain | p7 | 0.2597 | 0.6717 | 0.2911 | 0.0752 | 0.0565 | 0.1793 | 0.6444 | 0.9339 |
| increases body resistance | p1 | 0.1228 | 0.5993 | -0.0505 | 0.3052 | 0.2848 | 0.3361 | 0.6640 | 0.9274 |
| promotes growth/height | p15 | 0.1501 | 0.1551 | 0.7790 | 0.0650 | 0.1192 | 0.0458 | 0.6740 | 0.8775 |
| promotes healthy hair | p13 | 0.0853 | 0.0303 | 0.7646 | 0.0501 | 0.1328 | 0.1244 | 0.6284 | 0.8633 |
| has nice packaging | p12 | -0.0407 | 0.5129 | 0.5677 | 0.0802 | 0.1285 | 0.0532 | 0.6129 | 0.8947 |
| provides extra energy/strength | p3 | 0.2270 | 0.0425 | 0.0336 | 0.7524 | 0.2799 | 0.1605 | 0.7247 | 0.9051 |
| relieves tiredness/fatigue/stress | p9 | 0.3077 | 0.1768 | 0.0685 | 0.7116 | 0.1691 | 0.1227 | 0.6806 | 0.9289 |
| revitalizes/conditions body | p8 | 0.3439 | 0.4596 | 0.2354 | 0.4790 | 0.0621 | 0.2523 | 0.6819 | 0.9539 |
| has affordable price | p14 | 0.3812 | 0.2931 | 0.2392 | 0.4649 | 0.2811 | -0.0878 | 0.5913 | 0.9546 |
| promotes good eyesight | p20 | 0.2669 | 0.1932 | 0.2221 | 0.1600 | 0.6511 | 0.2902 | 0.6916 | 0.9380 |
| makes one feel younger/revitalized | p21 | 0.0423 | 0.2268 | 0.3265 | 0.2357 | 0.5586 | 0.0765 | 0.5333 | 0.9427 |
| makes body strong and healthy | p2 | 0.1139 | 0.4376 | 0.1318 | 0.3056 | 0.4971 | 0.1094 | 0.5743 | 0.9545 |
| promotes better blood circulation | p18 | 0.3245 | 0.1046 | 0.1745 | 0.2830 | 0.4368 | 0.3545 | 0.5432 | 0.9572 |
| has complete vitamins and minerals | p10 | 0.0581 | 0.2894 | 0.0925 | 0.2184 | 0.3440 | 0.6433 | 0.6755 | 0.9221 |
| makes bones/teeth strong | p17 | 0.3191 | 0.1359 | 0.4399 | 0.0671 | 0.0931 | 0.5512 | 0.6307 | 0.9291 |
fa6.quartimax <- fa(r = fa.vitamins,
nfactors = 6,
SMC = T,
scores = "regression",
rotate = "quartimax",
fm = "pa")
fa6.quartimax.comm.kmo <- data.frame(communality = fa6.quartimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa6.quartimax.final <- as.data.frame(unclass(fa.sort(fa6.quartimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa6.quartimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa6.quartimax.final
| variables | code | PA1 | PA2 | PA3 | PA4 | PA5 | PA6 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|
| keeps one full of energy | p23 | 0.7886 | -0.0796 | -0.1811 | -0.0060 | -0.1645 | -0.1350 | 0.7064 | 0.9208 |
| extends peak hours | p22 | 0.7607 | -0.0645 | -0.0841 | -0.0785 | -0.0320 | -0.2939 | 0.6834 | 0.9324 |
| relieves tiredness/fatigue/stress | p9 | 0.7123 | -0.0518 | -0.0454 | -0.0340 | -0.0475 | 0.4064 | 0.6806 | 0.9289 |
| revitalizes/conditions body | p8 | 0.7052 | 0.1345 | 0.2622 | -0.1760 | 0.0796 | 0.2457 | 0.6819 | 0.9539 |
| promotes good eyesight | p20 | 0.7026 | 0.1541 | -0.0070 | 0.3171 | 0.1803 | -0.2028 | 0.6916 | 0.9380 |
| provides extra energy/strength | p3 | 0.6998 | -0.0833 | -0.1833 | 0.0965 | 0.0107 | 0.4302 | 0.7247 | 0.9051 |
| has affordable price | p14 | 0.6936 | 0.1301 | 0.0907 | 0.0355 | -0.2501 | 0.1457 | 0.5913 | 0.9546 |
| promotes better blood circulation | p18 | 0.6815 | 0.0974 | -0.0972 | 0.1082 | 0.2128 | -0.0539 | 0.5432 | 0.9572 |
| fights lack of sleep | p11 | 0.6758 | 0.0798 | 0.0869 | -0.4223 | 0.0270 | 0.0240 | 0.6502 | 0.9443 |
| promotes good skin | p19 | 0.6548 | 0.3526 | 0.1095 | -0.0522 | -0.0225 | -0.1339 | 0.5863 | 0.9531 |
| readily available | p16 | 0.6446 | 0.0409 | -0.0264 | -0.4127 | -0.2038 | -0.1512 | 0.6525 | 0.8990 |
| makes body strong and healthy | p2 | 0.6278 | 0.0580 | 0.2641 | 0.3224 | 0.0363 | 0.0417 | 0.5743 | 0.9545 |
| increases body resistance | p1 | 0.6110 | -0.1177 | 0.4345 | 0.1123 | 0.2553 | 0.1015 | 0.6640 | 0.9274 |
| makes one feel younger/revitalized | p21 | 0.5340 | 0.2683 | 0.0789 | 0.4115 | 0.0250 | -0.0014 | 0.5333 | 0.9427 |
| makes bones/teeth strong | p17 | 0.5014 | 0.3978 | 0.0024 | -0.2116 | 0.4077 | -0.1005 | 0.6307 | 0.9291 |
| promotes growth/height | p15 | 0.3413 | 0.7413 | 0.0769 | -0.0118 | -0.0428 | -0.0114 | 0.6740 | 0.8775 |
| promotes healthy hair | p13 | 0.2805 | 0.7383 | -0.0345 | 0.0222 | 0.0535 | -0.0061 | 0.6284 | 0.8633 |
| has nice packaging | p12 | 0.3166 | 0.5382 | 0.4526 | 0.1095 | 0.0240 | 0.0741 | 0.6129 | 0.8947 |
| enhances/increases appetite | p4 | 0.5073 | 0.0677 | 0.6165 | 0.0417 | -0.0347 | -0.0936 | 0.6537 | 0.9126 |
| promotes weight gain | p7 | 0.5029 | 0.2379 | 0.5555 | -0.1379 | 0.0723 | -0.0449 | 0.6444 | 0.9339 |
| has complete vitamins and minerals | p10 | 0.5562 | 0.0493 | 0.1349 | 0.1362 | 0.5711 | 0.0298 | 0.6755 | 0.9221 |
fa6.oblimin <- fa(r = fa.vitamins,
nfactors = 6,
SMC = T,
scores = "regression",
rotate = "oblimin",
fm = "pa")
fa6.oblimin.comm.kmo <- data.frame(communality = fa6.oblimin$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa6.oblimin.final <- as.data.frame(unclass(fa.sort(fa6.oblimin$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa6.oblimin.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa6.oblimin.final
| variables | code | PA1 | PA6 | PA3 | PA2 | PA5 | PA4 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|---|
| extends peak hours | p22 | 0.7636 | -0.0178 | 0.0608 | -0.0569 | 0.1332 | 0.0886 | 0.6834 | 0.9324 |
| keeps one full of energy | p23 | 0.6953 | 0.2318 | -0.0357 | -0.0244 | -0.0291 | 0.1465 | 0.7064 | 0.9208 |
| readily available | p16 | 0.6876 | 0.0871 | 0.0989 | 0.0637 | -0.0888 | -0.2698 | 0.6525 | 0.8990 |
| fights lack of sleep | p11 | 0.4048 | 0.2392 | 0.1710 | 0.0678 | 0.1393 | -0.3626 | 0.6502 | 0.9443 |
| promotes good skin | p19 | 0.3883 | 0.0320 | 0.1897 | 0.3690 | 0.0711 | 0.0329 | 0.5863 | 0.9531 |
| provides extra energy/strength | p3 | 0.0172 | 0.8472 | -0.1345 | -0.0107 | 0.0686 | 0.0676 | 0.7247 | 0.9051 |
| relieves tiredness/fatigue/stress | p9 | 0.0531 | 0.7880 | 0.0279 | 0.0016 | 0.0015 | -0.0567 | 0.6806 | 0.9289 |
| revitalizes/conditions body | p8 | 0.0480 | 0.4691 | 0.3420 | 0.1169 | 0.1391 | -0.2014 | 0.6819 | 0.9539 |
| has affordable price | p14 | 0.2627 | 0.4501 | 0.2158 | 0.1872 | -0.2153 | 0.0869 | 0.5913 | 0.9546 |
| enhances/increases appetite | p4 | 0.1381 | -0.0628 | 0.7824 | -0.0171 | -0.0132 | 0.0654 | 0.6537 | 0.9126 |
| promotes weight gain | p7 | 0.0839 | -0.0380 | 0.6619 | 0.1576 | 0.1095 | -0.1357 | 0.6444 | 0.9339 |
| increases body resistance | p1 | -0.0221 | 0.2369 | 0.5517 | -0.2076 | 0.3208 | 0.0759 | 0.6640 | 0.9274 |
| makes body strong and healthy | p2 | 0.0879 | 0.2378 | 0.3841 | 0.0450 | 0.0833 | 0.3357 | 0.5743 | 0.9545 |
| promotes healthy hair | p13 | -0.0189 | 0.0166 | -0.1066 | 0.8014 | 0.0788 | 0.0266 | 0.6284 | 0.8633 |
| promotes growth/height | p15 | 0.0275 | 0.0194 | 0.0438 | 0.7989 | -0.0287 | 0.0041 | 0.6740 | 0.8775 |
| has nice packaging | p12 | -0.2112 | 0.0390 | 0.4780 | 0.5191 | -0.0042 | 0.0621 | 0.6129 | 0.8947 |
| has complete vitamins and minerals | p10 | -0.0479 | 0.1370 | 0.1370 | -0.0262 | 0.7001 | 0.0915 | 0.6755 | 0.9221 |
| makes bones/teeth strong | p17 | 0.1796 | -0.0421 | -0.0389 | 0.3688 | 0.5458 | -0.1945 | 0.6307 | 0.9291 |
| promotes better blood circulation | p18 | 0.3145 | 0.1919 | -0.0479 | 0.1090 | 0.3484 | 0.1641 | 0.5432 | 0.9572 |
| makes one feel younger/revitalized | p21 | 0.0744 | 0.1762 | 0.1394 | 0.3025 | 0.0680 | 0.4355 | 0.5333 | 0.9427 |
| promotes good eyesight | p20 | 0.3759 | 0.0104 | 0.0757 | 0.1586 | 0.3143 | 0.4028 | 0.6916 | 0.9380 |
fa5.varimax <- fa(r = fa.vitamins,
nfactors = 5,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa5.varimax.comm.kmo <- data.frame(communality = fa5.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa5.varimax.final <- as.data.frame(unclass(fa.sort(fa5.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa5.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa5.varimax.final
| variables | code | PA4 | PA1 | PA3 | PA2 | PA5 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|
| readily available | p16 | 0.7632 | 0.0354 | 0.1575 | 0.1338 | 0.2045 | 0.6683 | 0.8990 |
| extends peak hours | p22 | 0.6448 | 0.4491 | 0.1293 | 0.0392 | 0.1773 | 0.6671 | 0.9324 |
| fights lack of sleep | p11 | 0.6258 | 0.0938 | 0.3126 | 0.1723 | 0.2772 | 0.6047 | 0.9443 |
| keeps one full of energy | p23 | 0.5888 | 0.4040 | 0.0412 | 0.0419 | 0.3752 | 0.6542 | 0.9208 |
| promotes good eyesight | p20 | 0.2497 | 0.7169 | 0.1819 | 0.2395 | 0.1743 | 0.6972 | 0.9380 |
| promotes better blood circulation | p18 | 0.3295 | 0.5564 | 0.1226 | 0.1847 | 0.2695 | 0.5400 | 0.9572 |
| has complete vitamins and minerals | p10 | 0.1144 | 0.5551 | 0.3451 | 0.1201 | 0.1694 | 0.4834 | 0.9221 |
| makes one feel younger/revitalized | p21 | 0.0238 | 0.5050 | 0.2009 | 0.3348 | 0.2708 | 0.4814 | 0.9427 |
| makes body strong and healthy | p2 | 0.0967 | 0.4766 | 0.4118 | 0.1476 | 0.3310 | 0.5374 | 0.9545 |
| promotes weight gain | p7 | 0.2719 | 0.1261 | 0.6918 | 0.2950 | 0.0568 | 0.6587 | 0.9339 |
| enhances/increases appetite | p4 | 0.1979 | 0.2086 | 0.6855 | 0.1395 | 0.0931 | 0.5807 | 0.9126 |
| increases body resistance | p1 | 0.1301 | 0.4160 | 0.6312 | -0.0438 | 0.2776 | 0.6675 | 0.9274 |
| revitalizes/conditions body | p8 | 0.3627 | 0.1767 | 0.4870 | 0.2330 | 0.4432 | 0.6506 | 0.9539 |
| promotes growth/height | p15 | 0.1519 | 0.1046 | 0.1447 | 0.7855 | 0.0782 | 0.6780 | 0.8775 |
| promotes healthy hair | p13 | 0.0939 | 0.1580 | 0.0300 | 0.7730 | 0.0508 | 0.6348 | 0.8633 |
| has nice packaging | p12 | -0.0414 | 0.1186 | 0.5042 | 0.5738 | 0.0901 | 0.6074 | 0.8947 |
| promotes good skin | p19 | 0.4361 | 0.3112 | 0.2769 | 0.4373 | 0.1668 | 0.5827 | 0.9531 |
| makes bones/teeth strong | p17 | 0.3404 | 0.3242 | 0.2117 | 0.4171 | 0.0365 | 0.4411 | 0.9291 |
| provides extra energy/strength | p3 | 0.2265 | 0.3212 | 0.0611 | 0.0313 | 0.7430 | 0.7112 | 0.9051 |
| relieves tiredness/fatigue/stress | p9 | 0.3092 | 0.2022 | 0.1929 | 0.0640 | 0.7078 | 0.6788 | 0.9289 |
| has affordable price | p14 | 0.3551 | 0.2018 | 0.2593 | 0.2374 | 0.4921 | 0.5325 | 0.9546 |
fa5.quartimax <- fa(r = fa.vitamins,
nfactors = 5,
SMC = T,
scores = "regression",
rotate = "quartimax",
fm = "pa")
fa5.quartimax.comm.kmo <- data.frame(communality = fa5.quartimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa5.quartimax.final <- as.data.frame(unclass(fa.sort(fa5.quartimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa5.quartimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa5.quartimax.final
| variables | code | PA1 | PA2 | PA3 | PA4 | PA5 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|
| keeps one full of energy | p23 | 0.7597 | -0.0739 | -0.2180 | 0.1497 | -0.0402 | 0.6542 | 0.9208 |
| extends peak hours | p22 | 0.7477 | -0.0663 | -0.1150 | 0.1796 | -0.2412 | 0.6671 | 0.9324 |
| promotes good eyesight | p20 | 0.7268 | 0.1480 | -0.0551 | -0.2903 | -0.2443 | 0.6972 | 0.9380 |
| revitalizes/conditions body | p8 | 0.7123 | 0.1224 | 0.2730 | 0.1111 | 0.2035 | 0.6506 | 0.9539 |
| relieves tiredness/fatigue/stress | p9 | 0.7060 | -0.0580 | -0.0506 | 0.0335 | 0.4163 | 0.6788 | 0.9289 |
| promotes better blood circulation | p18 | 0.6988 | 0.0886 | -0.1094 | -0.1347 | -0.1168 | 0.5400 | 0.9572 |
| provides extra energy/strength | p3 | 0.6974 | -0.0886 | -0.1921 | -0.1067 | 0.4108 | 0.7112 | 0.9051 |
| has affordable price | p14 | 0.6726 | 0.1299 | 0.0447 | 0.0901 | 0.2307 | 0.5325 | 0.9546 |
| fights lack of sleep | p11 | 0.6633 | 0.0694 | 0.1138 | 0.3827 | 0.0208 | 0.6047 | 0.9443 |
| promotes good skin | p19 | 0.6554 | 0.3480 | 0.0862 | 0.1144 | -0.1075 | 0.5827 | 0.9531 |
| increases body resistance | p1 | 0.6451 | -0.1332 | 0.4341 | -0.2120 | 0.0137 | 0.6675 | 0.9274 |
| makes body strong and healthy | p2 | 0.6438 | 0.0583 | 0.2078 | -0.2730 | 0.0432 | 0.5374 | 0.9545 |
| readily available | p16 | 0.6141 | 0.0369 | -0.0293 | 0.5344 | -0.0574 | 0.6683 | 0.8990 |
| has complete vitamins and minerals | p10 | 0.5931 | 0.0450 | 0.1575 | -0.2938 | -0.1359 | 0.4834 | 0.9221 |
| makes one feel younger/revitalized | p21 | 0.5487 | 0.2627 | 0.0253 | -0.3327 | 0.0038 | 0.4814 | 0.9427 |
| makes bones/teeth strong | p17 | 0.5216 | 0.3520 | 0.0639 | 0.0471 | -0.1970 | 0.4411 | 0.9291 |
| promotes growth/height | p15 | 0.3450 | 0.7430 | 0.0663 | 0.0497 | 0.0068 | 0.6780 | 0.8775 |
| promotes healthy hair | p13 | 0.2906 | 0.7400 | -0.0377 | -0.0235 | -0.0267 | 0.6348 | 0.8633 |
| has nice packaging | p12 | 0.3382 | 0.5340 | 0.4352 | -0.1191 | 0.0652 | 0.6074 | 0.8947 |
| promotes weight gain | p7 | 0.5199 | 0.2274 | 0.5667 | 0.1074 | -0.0639 | 0.6587 | 0.9339 |
| enhances/increases appetite | p4 | 0.5187 | 0.0717 | 0.5507 | -0.0077 | -0.0564 | 0.5807 | 0.9126 |
fa5.oblimin <- fa(r = fa.vitamins,
nfactors = 5,
SMC = T,
scores = "regression",
rotate = "oblimin",
fm = "pa")
fa5.oblimin.comm.kmo <- data.frame(communality = fa5.oblimin$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa5.oblimin.final <- as.data.frame(unclass(fa.sort(fa5.oblimin$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa5.oblimin.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa5.oblimin.final
| variables | code | PA5 | PA3 | PA1 | PA2 | PA4 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|
| provides extra energy/strength | p3 | 0.8440 | -0.1037 | 0.0868 | -0.0146 | -0.0206 | 0.7112 | 0.9051 |
| relieves tiredness/fatigue/stress | p9 | 0.7885 | 0.0493 | -0.0617 | -0.0007 | 0.0900 | 0.6788 | 0.9289 |
| has affordable price | p14 | 0.4968 | 0.1319 | -0.0116 | 0.1684 | 0.1810 | 0.5325 | 0.9546 |
| revitalizes/conditions body | p8 | 0.4137 | 0.4014 | -0.0627 | 0.1224 | 0.1924 | 0.6506 | 0.9539 |
| enhances/increases appetite | p4 | -0.0240 | 0.7127 | 0.0709 | -0.0081 | 0.0960 | 0.5807 | 0.9126 |
| promotes weight gain | p7 | -0.0742 | 0.7024 | -0.0242 | 0.1589 | 0.1892 | 0.6587 | 0.9339 |
| increases body resistance | p1 | 0.1991 | 0.6379 | 0.2660 | -0.2054 | -0.0482 | 0.6675 | 0.9274 |
| makes body strong and healthy | p2 | 0.2829 | 0.3482 | 0.3376 | 0.0393 | -0.1113 | 0.5374 | 0.9545 |
| promotes good eyesight | p20 | 0.0421 | 0.0699 | 0.7013 | 0.1490 | 0.0638 | 0.6972 | 0.9380 |
| promotes better blood circulation | p18 | 0.1803 | -0.0007 | 0.5006 | 0.1088 | 0.1629 | 0.5400 | 0.9572 |
| has complete vitamins and minerals | p10 | 0.0703 | 0.2972 | 0.4993 | 0.0133 | -0.0551 | 0.4834 | 0.9221 |
| makes one feel younger/revitalized | p21 | 0.2339 | 0.0939 | 0.4118 | 0.2826 | -0.1809 | 0.4814 | 0.9427 |
| promotes healthy hair | p13 | 0.0057 | -0.1106 | 0.0881 | 0.8066 | -0.0045 | 0.6348 | 0.8633 |
| promotes growth/height | p15 | 0.0259 | 0.0125 | -0.0035 | 0.7989 | 0.0526 | 0.6780 | 0.8775 |
| has nice packaging | p12 | 0.0401 | 0.4666 | -0.0387 | 0.5178 | -0.1723 | 0.6074 | 0.8947 |
| promotes good skin | p19 | 0.0479 | 0.1630 | 0.2095 | 0.3628 | 0.3218 | 0.5827 | 0.9531 |
| makes bones/teeth strong | p17 | -0.0947 | 0.1211 | 0.2836 | 0.3583 | 0.2562 | 0.4411 | 0.9291 |
| readily available | p16 | 0.0972 | 0.0598 | -0.0667 | 0.0567 | 0.7532 | 0.6683 | 0.8990 |
| extends peak hours | p22 | 0.0251 | 0.0270 | 0.4260 | -0.0644 | 0.5650 | 0.6671 | 0.9324 |
| fights lack of sleep | p11 | 0.1881 | 0.2251 | -0.0586 | 0.0753 | 0.5584 | 0.6047 | 0.9443 |
| keeps one full of energy | p23 | 0.3021 | -0.1001 | 0.3187 | -0.0359 | 0.4633 | 0.6542 | 0.9208 |
fa4.varimax <- fa(r = fa.vitamins,
nfactors = 4,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa4.varimax.comm.kmo <- data.frame(communality = fa4.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa4.varimax.final <- as.data.frame(unclass(fa.sort(fa4.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa4.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa4.varimax.final
| variables | code | PA4 | PA1 | PA3 | PA2 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|
| readily available | p16 | 0.7773 | 0.0315 | 0.1537 | 0.1615 | 0.6549 | 0.8990 |
| fights lack of sleep | p11 | 0.6837 | 0.1270 | 0.3120 | 0.1832 | 0.6144 | 0.9443 |
| keeps one full of energy | p23 | 0.6664 | 0.4576 | 0.0227 | 0.0699 | 0.6589 | 0.9208 |
| extends peak hours | p22 | 0.6191 | 0.3934 | 0.1214 | 0.1100 | 0.5650 | 0.9324 |
| relieves tiredness/fatigue/stress | p9 | 0.5205 | 0.4548 | 0.1919 | 0.0173 | 0.5149 | 0.9289 |
| has affordable price | p14 | 0.4930 | 0.3658 | 0.2534 | 0.2048 | 0.4831 | 0.9546 |
| revitalizes/conditions body | p8 | 0.4882 | 0.3217 | 0.4786 | 0.2062 | 0.6135 | 0.9539 |
| promotes good eyesight | p20 | 0.2628 | 0.6573 | 0.1709 | 0.2954 | 0.6176 | 0.9380 |
| makes body strong and healthy | p2 | 0.1827 | 0.5747 | 0.3980 | 0.1474 | 0.5438 | 0.9545 |
| makes one feel younger/revitalized | p21 | 0.0875 | 0.5744 | 0.1883 | 0.3413 | 0.4895 | 0.9427 |
| promotes better blood circulation | p18 | 0.3748 | 0.5698 | 0.1072 | 0.2226 | 0.5263 | 0.9572 |
| provides extra energy/strength | p3 | 0.4595 | 0.5592 | 0.0754 | -0.0121 | 0.5297 | 0.9051 |
| has complete vitamins and minerals | p10 | 0.1439 | 0.5481 | 0.3290 | 0.1569 | 0.4540 | 0.9221 |
| promotes weight gain | p7 | 0.2629 | 0.1097 | 0.6939 | 0.3100 | 0.6587 | 0.9339 |
| enhances/increases appetite | p4 | 0.2047 | 0.2161 | 0.6769 | 0.1542 | 0.5706 | 0.9126 |
| increases body resistance | p1 | 0.2037 | 0.4928 | 0.6189 | -0.0386 | 0.6689 | 0.9274 |
| promotes growth/height | p15 | 0.1533 | 0.1020 | 0.1543 | 0.7754 | 0.6590 | 0.8775 |
| promotes healthy hair | p13 | 0.0869 | 0.1396 | 0.0368 | 0.7748 | 0.6288 | 0.8633 |
| has nice packaging | p12 | -0.0171 | 0.1554 | 0.5062 | 0.5519 | 0.5853 | 0.8947 |
| promotes good skin | p19 | 0.4441 | 0.2943 | 0.2714 | 0.4676 | 0.5761 | 0.9531 |
| makes bones/teeth strong | p17 | 0.3080 | 0.2513 | 0.2089 | 0.4582 | 0.4116 | 0.9291 |
fa4.quartimax <- fa(r = fa.vitamins,
nfactors = 4,
SMC = T,
scores = "regression",
rotate = "quartimax",
fm = "pa")
fa4.quartimax.comm.kmo <- data.frame(communality = fa4.quartimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa4.quartimax.final <- as.data.frame(unclass(fa.sort(fa4.quartimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa4.quartimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa4.quartimax.final
| variables | code | PA1 | PA2 | PA3 | PA4 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|
| keeps one full of energy | p23 | 0.7590 | -0.0655 | -0.2422 | -0.1407 | 0.6589 | 0.9208 |
| revitalizes/conditions body | p8 | 0.7257 | 0.0854 | 0.2596 | -0.1104 | 0.6135 | 0.9539 |
| extends peak hours | p22 | 0.7253 | -0.0177 | -0.1234 | -0.1531 | 0.5650 | 0.9324 |
| promotes good eyesight | p20 | 0.7080 | 0.1825 | -0.0607 | 0.2817 | 0.6176 | 0.9380 |
| relieves tiredness/fatigue/stress | p9 | 0.7072 | -0.1056 | -0.0478 | -0.0377 | 0.5149 | 0.9289 |
| promotes better blood circulation | p18 | 0.6922 | 0.1079 | -0.1245 | 0.1415 | 0.5263 | 0.9572 |
| provides extra energy/strength | p3 | 0.6912 | -0.1319 | -0.1685 | 0.0787 | 0.5297 | 0.9051 |
| has affordable price | p14 | 0.6832 | 0.0891 | 0.0355 | -0.0848 | 0.4831 | 0.9546 |
| fights lack of sleep | p11 | 0.6701 | 0.0645 | 0.1048 | -0.3877 | 0.6144 | 0.9443 |
| promotes good skin | p19 | 0.6547 | 0.3608 | 0.0777 | -0.1063 | 0.5761 | 0.9531 |
| increases body resistance | p1 | 0.6526 | -0.1422 | 0.4191 | 0.2171 | 0.6689 | 0.9274 |
| makes body strong and healthy | p2 | 0.6508 | 0.0453 | 0.1936 | 0.2842 | 0.5438 | 0.9545 |
| readily available | p16 | 0.6144 | 0.0477 | -0.0428 | -0.5228 | 0.6549 | 0.8990 |
| has complete vitamins and minerals | p10 | 0.5866 | 0.0656 | 0.1437 | 0.2915 | 0.4540 | 0.9221 |
| makes one feel younger/revitalized | p21 | 0.5512 | 0.2582 | 0.0153 | 0.3447 | 0.4895 | 0.9427 |
| makes bones/teeth strong | p17 | 0.5143 | 0.3764 | 0.0604 | -0.0424 | 0.4116 | 0.9291 |
| promotes healthy hair | p13 | 0.2920 | 0.7363 | -0.0282 | 0.0248 | 0.6288 | 0.8633 |
| promotes growth/height | p15 | 0.3504 | 0.7268 | 0.0764 | -0.0472 | 0.6590 | 0.8775 |
| has nice packaging | p12 | 0.3499 | 0.5076 | 0.4373 | 0.1184 | 0.5853 | 0.8947 |
| promotes weight gain | p7 | 0.5268 | 0.2290 | 0.5640 | -0.1035 | 0.6587 | 0.9339 |
| enhances/increases appetite | p4 | 0.5253 | 0.0730 | 0.5377 | 0.0160 | 0.5706 | 0.9126 |
fa4.oblimin <- fa(r = fa.vitamins,
nfactors = 4,
SMC = T,
scores = "regression",
rotate = "oblimin",
fm = "pa")
fa4.oblimin.comm.kmo <- data.frame(communality = fa4.oblimin$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6)])
fa4.oblimin.final <- as.data.frame(unclass(fa.sort(fa4.oblimin$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa4.oblimin.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa4.oblimin.final
| variables | code | PA4 | PA1 | PA3 | PA2 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|
| readily available | p16 | 0.8292 | -0.1356 | 0.0373 | 0.0680 | 0.6549 | 0.8990 |
| fights lack of sleep | p11 | 0.6797 | -0.0576 | 0.2222 | 0.0658 | 0.6144 | 0.9443 |
| keeps one full of energy | p23 | 0.5971 | 0.4038 | -0.1135 | -0.0150 | 0.6589 | 0.9208 |
| extends peak hours | p22 | 0.5516 | 0.3092 | 0.0050 | 0.0168 | 0.5650 | 0.9324 |
| relieves tiredness/fatigue/stress | p9 | 0.4227 | 0.3811 | 0.1097 | -0.0889 | 0.5149 | 0.9289 |
| has affordable price | p14 | 0.4006 | 0.2552 | 0.1621 | 0.1064 | 0.4831 | 0.9546 |
| promotes good eyesight | p20 | 0.0597 | 0.6351 | 0.0663 | 0.2263 | 0.6176 | 0.9380 |
| makes one feel younger/revitalized | p21 | -0.1151 | 0.5604 | 0.1106 | 0.2925 | 0.4895 | 0.9427 |
| provides extra energy/strength | p3 | 0.3369 | 0.5415 | -0.0182 | -0.0975 | 0.5297 | 0.9051 |
| promotes better blood circulation | p18 | 0.2213 | 0.5415 | -0.0056 | 0.1542 | 0.5263 | 0.9572 |
| makes body strong and healthy | p2 | -0.0173 | 0.5035 | 0.3665 | 0.0375 | 0.5438 | 0.9545 |
| has complete vitamins and minerals | p10 | -0.0464 | 0.4972 | 0.2935 | 0.0655 | 0.4540 | 0.9221 |
| enhances/increases appetite | p4 | 0.0868 | 0.0201 | 0.7076 | 0.0076 | 0.5706 | 0.9126 |
| promotes weight gain | p7 | 0.1717 | -0.1243 | 0.7027 | 0.1701 | 0.6587 | 0.9339 |
| increases body resistance | p1 | 0.0210 | 0.3615 | 0.6506 | -0.2003 | 0.6689 | 0.9274 |
| has nice packaging | p12 | -0.1506 | 0.0035 | 0.4883 | 0.4875 | 0.5853 | 0.8947 |
| revitalizes/conditions body | p8 | 0.3864 | 0.1456 | 0.4240 | 0.0681 | 0.6135 | 0.9539 |
| promotes healthy hair | p13 | 0.0012 | 0.0803 | -0.0973 | 0.8041 | 0.6288 | 0.8633 |
| promotes growth/height | p15 | 0.0748 | -0.0039 | 0.0304 | 0.7782 | 0.6590 | 0.8775 |
| makes bones/teeth strong | p17 | 0.2173 | 0.1485 | 0.1078 | 0.4079 | 0.4116 | 0.9291 |
| promotes good skin | p19 | 0.3489 | 0.1588 | 0.1553 | 0.3912 | 0.5761 | 0.9531 |
fa.vitamins <- fa.vitamins %>% select(-"p10",-"p12",-"p14",-"p16")
If we take a look at the variable “p10” and the other variables that are in the same factor group, notice that having “p10” in the group doesn’t really fit the mix. The vitamin having complete vitamins and minerals doesn’t always associate with the vitamin promoting good eyesight, making the body strong, making one feel revitalized, promoting better circulation and providing extra energy. If we look at the analysis of the other variables removed from this table, we can see that having complete vitamins and minerals can also be a selling point of the vitamin that can attract more customers. In that case, we can justify the removal of the variable.
Taking a look at the variable “p12” and the other variables grouped with it, “p12” look out of place compared to the rest. The other variables talkes about enhancing the appearance of a person while “p12” is only about the packaging of the vitamin itself.
Also, “p14” and “p16” are related on the business side of things if you look at it. Having affordable price and readily available vitamins are ways to attract people to purchase the vitamin, which is clearly unrelated to the other variables in their group which tales about how vitamins are energy boosters.
fa5.varimax <- fa(r = fa.vitamins,
nfactors = 5,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa5.varimax.comm.kmo <- data.frame(communality = fa5.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6,-10,-12,-14,-16)])
fa5.varimax.final <- as.data.frame(unclass(fa.sort(fa5.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa5.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa5.varimax.final
| variables | code | PA3 | PA2 | PA1 | PA5 | PA4 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|---|
| promotes weight gain | p7 | 0.7195 | 0.3123 | 0.1553 | 0.0869 | 0.0833 | 0.6538 | 0.9114 |
| enhances/increases appetite | p4 | 0.7133 | 0.1157 | 0.1701 | 0.0557 | 0.2255 | 0.6050 | 0.9050 |
| increases body resistance | p1 | 0.6302 | -0.0042 | 0.1531 | 0.3094 | 0.3322 | 0.6267 | 0.9058 |
| revitalizes/conditions body | p8 | 0.5307 | 0.2812 | 0.2447 | 0.5004 | 0.0676 | 0.6756 | 0.9415 |
| promotes healthy hair | p13 | 0.0394 | 0.7922 | 0.0492 | 0.0454 | 0.1468 | 0.6552 | 0.8280 |
| promotes growth/height | p15 | 0.1678 | 0.7679 | 0.0690 | 0.0602 | 0.1383 | 0.6454 | 0.8397 |
| makes bones/teeth strong | p17 | 0.2494 | 0.5007 | 0.3345 | 0.1493 | 0.0712 | 0.4521 | 0.9186 |
| promotes good skin | p19 | 0.3389 | 0.4721 | 0.3748 | 0.1795 | 0.2364 | 0.5663 | 0.9623 |
| extends peak hours | p22 | 0.2169 | 0.0961 | 0.7487 | 0.2094 | 0.2203 | 0.7092 | 0.9102 |
| keeps one full of energy | p23 | 0.1357 | 0.0948 | 0.6182 | 0.3793 | 0.2682 | 0.6254 | 0.9254 |
| fights lack of sleep | p11 | 0.4083 | 0.2689 | 0.5131 | 0.3902 | -0.1770 | 0.6859 | 0.9187 |
| promotes better blood circulation | p18 | 0.1673 | 0.2424 | 0.4349 | 0.3291 | 0.3588 | 0.5129 | 0.9572 |
| provides extra energy/strength | p3 | 0.0685 | 0.0555 | 0.2453 | 0.7792 | 0.2662 | 0.7459 | 0.8856 |
| relieves tiredness/fatigue/stress | p9 | 0.2239 | 0.0973 | 0.2455 | 0.7225 | 0.1620 | 0.6682 | 0.9085 |
| makes one feel younger/revitalized | p21 | 0.1944 | 0.3048 | 0.1506 | 0.1943 | 0.5743 | 0.5209 | 0.9269 |
| promotes good eyesight | p20 | 0.2175 | 0.2611 | 0.4588 | 0.1704 | 0.5624 | 0.6713 | 0.9333 |
| makes body strong and healthy | p2 | 0.4157 | 0.1211 | 0.1717 | 0.2789 | 0.5292 | 0.5749 | 0.9428 |
Different parameters for the solution were adjusted to attain the final solution for the exploratory factor analysis. “Varimax” rotation were chosen since it provides a more interpretable results compared to “quartimax” and “oblimin”.
In general, it was quite difficult to get interpretations for the data involving other variables. To help give a clearer interpretation for the data, we removed some of the variables (p5, p6, p10, p12, p14, p16) as shown in the disucussion. After removing the variables, it resulted to a much clearer table and is easier to interpret. The groupings of the values were much more visible and concise than the other one.
fa4.varimax <- fa(r = fa.vitamins,
nfactors = 4,
SMC = T,
scores = "regression",
rotate = "varimax",
fm = "pa")
fa4.varimax.comm.kmo <- data.frame(communality = fa4.varimax$communality,
"KMO MSAi" = KMO(fa.vitamins)$MSAi) %>% round(4) %>%
rownames_to_column("code") %>%
cbind(variables = variables$variables[c(-5,-6,-10,-12,-14,-16)])
fa4.varimax.final <- as.data.frame(unclass(fa.sort(fa4.varimax$loadings))) %>%
round(4) %>% rownames_to_column("code") %>% inner_join(y = fa4.varimax.comm.kmo, by = "code") %>%
relocate(variables, .before = code) %>% kable()
fa4.varimax.final
| variables | code | PA1 | PA3 | PA2 | PA4 | communality | KMO.MSAi |
|---|---|---|---|---|---|---|---|
| provides extra energy/strength | p3 | 0.7093 | 0.0984 | 0.0257 | 0.2494 | 0.5756 | 0.8856 |
| keeps one full of energy | p23 | 0.6897 | 0.1283 | 0.1386 | 0.2785 | 0.5889 | 0.9254 |
| relieves tiredness/fatigue/stress | p9 | 0.6842 | 0.2299 | 0.0674 | 0.1640 | 0.5524 | 0.9085 |
| fights lack of sleep | p11 | 0.6359 | 0.3960 | 0.3026 | -0.1701 | 0.6817 | 0.9187 |
| extends peak hours | p22 | 0.6096 | 0.2145 | 0.1792 | 0.2406 | 0.5077 | 0.9102 |
| promotes better blood circulation | p18 | 0.5381 | 0.1555 | 0.2634 | 0.3673 | 0.5179 | 0.9572 |
| revitalizes/conditions body | p8 | 0.5375 | 0.5200 | 0.2660 | 0.0719 | 0.6353 | 0.9415 |
| promotes weight gain | p7 | 0.1581 | 0.7241 | 0.3304 | 0.0839 | 0.6655 | 0.9114 |
| enhances/increases appetite | p4 | 0.1516 | 0.7090 | 0.1380 | 0.2293 | 0.5973 | 0.9050 |
| increases body resistance | p1 | 0.3421 | 0.6270 | -0.0095 | 0.3251 | 0.6159 | 0.9058 |
| promotes healthy hair | p13 | 0.0522 | 0.0385 | 0.7718 | 0.1517 | 0.6228 | 0.8280 |
| promotes growth/height | p15 | 0.0748 | 0.1639 | 0.7585 | 0.1442 | 0.6287 | 0.8397 |
| makes bones/teeth strong | p17 | 0.3276 | 0.2377 | 0.5284 | 0.0781 | 0.4491 | 0.9186 |
| promotes good skin | p19 | 0.3746 | 0.3292 | 0.5010 | 0.2461 | 0.5602 | 0.9623 |
| makes one feel younger/revitalized | p21 | 0.2402 | 0.1927 | 0.2986 | 0.5758 | 0.5155 | 0.9269 |
| promotes good eyesight | p20 | 0.4290 | 0.2105 | 0.2990 | 0.5567 | 0.6278 | 0.9333 |
| makes body strong and healthy | p2 | 0.3241 | 0.4145 | 0.1137 | 0.5290 | 0.5696 | 0.9428 |
4 Factors w/ Varimax Rotation is selected for the final solution.