27 Эксплораторный факторный анализ
Он же exploratory factor analysis.
27.1 Математическая модель эскплораторного факторного анализа
У нас есть все та же матрица наблюдений \(\boldsymbol{X}^\mathrm{T}= (\boldsymbol{X}_1 \, \boldsymbol{X}_2 \, \dots \boldsymbol{X}_k)\), только мы ее транспонировали для будущего удобства. Мы предполагаем, что под нашими наблюдениями спрятаны некие факторы в количестве \(p\) штук, \(p < k\). Их мы также можем оформить в матрицу \(\boldsymbol{F}^\mathrm{T}=(\boldsymbol{F}_1 \, \boldsymbol{F}_2 \, \dots \boldsymbol{F}_p)\). Эти факторы объясняют имеющиеся переменные. Делают это они следующим образом:
\[ \boldsymbol{X}_i = a_{i1} \boldsymbol{F}_1 + a_{i2} \boldsymbol{F}_ 2 + \dots + a_{ip} \boldsymbol{F}_p + \boldsymbol{U}_i, \; 1≤i≤k \]
\[ \boldsymbol{X}= \boldsymbol{A}\boldsymbol{F}+ \boldsymbol{U}, \\ \boldsymbol{A}= (a_{ij}),\; 1≤i≤k, \; 1≤j≤p, \\ \boldsymbol{U}^\mathrm{T}= (\boldsymbol{U}_1 \, \boldsymbol{U}_2 \dots \boldsymbol{U}_k) \]
Здесь \(U\) — то, что не удалось объяснить факторами (остатки, уникальность, uniqueness).
Также выдвигаем ряд дополнительных предположения для формализации требования и упрощения вычислений:
- \(\mathbb{E} \boldsymbol{X}= 0\). Так сделать можно, так как мы все равно будем стандартизировать переменные, и математическое ожидание обратиться в ноль.
- \(\mathrm{corr}(\boldsymbol{F}_j, \boldsymbol{F}_t) = 0, \; ∀j\,∀t, \;j≠t, \; 1≤j≤p, \; 1≤t≤p\). То есть хотим, чтобы факторы были независимы (некоррелированы).
- \(\mathrm{var}(\boldsymbol{F})=\boldsymbol{I}\). Если «истинная» дисперсия факторов будет отличаться от единицы, то разница уйдет в матрицу A.
- \(\mathrm{corr}(\boldsymbol{U}_i, \boldsymbol{U}_r) = 0; \;\; \mathrm{corr}(\boldsymbol{U}_i, \boldsymbol{F}_j) = 0,\; ∀i\,∀r\,∀j, i \neq r, \; 1≤i≤k, \; 1≤r≤k, \; 1≤j≤p\). Ну, они же все-таки уникальности.
Элементы матрицы \(\boldsymbol{A}\) называются факторными нагрузками (factor loadings). Элементы вектора \(\boldsymbol{U}\) называются уникальными факторами (specific variates).
Теперь об информативности. Аналогично PCA, возьмем в качестве меры информативности дисперсию. Мы хотим узнать, насколько хорошо факторы объясняют исходные переменные. Дисперсия переменных будет складываться из следующего:
\[ \mathrm{var}(\boldsymbol{X}_i) = \sum_{j=1}^p a^2_{ij} + \mathrm{var}(\boldsymbol{U}_i) \]
То есть, чем больше уникальность (uniqueness) — часть дисперсии переменной, объясненной уникальными факторами — тем хуже наши факторы объясняют переменную. Что делать? Либо подобрать другую модель (изменить количество факторов), либо не брать такую переменную в факторный анализ…
Однако в факторном анализе есть еще одна интересная деталь. Мы работаем с выборочными корреляциями. По этой причине мы не можем подобрать единственно верное решение задачи факторного анализа. Матрица факторных нагрузок определена до ортогонального преобразования (по-русски, вращения). То есть у нас есть множество решений, которые отличаются друг от друга поворотом, и мы можем выбирать самое «симпатишное».
За такую неопределенность факторный анализа часто критикуют. Да и вообще, как вы могли заметить, в факторном анализе субъективность чуть ли не на каждом шагу.
27.1.1 Вращение факторов (factor rotation)
Вращать вообще-то не обязательно. Если хочется, чтобы все было похоже на PCA, то можно ввести дополнительное условие, чтобы матрица \(\boldsymbol{A}^\mathrm{T}\text{diag}(\mathrm{var}(\boldsymbol{U}))\boldsymbol{A}\) быда диагональной и элементы на её главной диагонали стояли в убывающем порядке.
Но, господи, вращать это же весело!
Поэтому придумали много всяких разных вариантов вращения. Самый популярный — varimax. Его идея состоит в том, чтобы найти наиболее «контрастное» решение — чтобы значения факторов были или большими, или маленькими. Эта логика хорошо согласуется с тем, что мы хотели, чтобы каждый фактор описывал что-то своё. Попутно мы минимизируем количество переменных, которые имеют высокую нагрузку на каждый фактор. Работает varimax по следуюшей математической модели:
\[ \cases{ a_2 + b_ 2 \rightarrow \max \\ a + b = 1 } \]
Коротенечко о других вращениях:
- quartimax — минимизирует количество факторов, необходимых для объяснения каждой переменной
- equamax — количество переменных, сильно нагружающих фактор, и количество факторов, необходимых для объяснения переменных, минимальны
- promax — наклонное вращение, позволяющее коррелировать факторы
27.2 Реализация EFA в R
Работаем с тем же датасетом:
brand— Pizza brand (class label)id— Sample analysedmois— Amount of water per 100 grams in the sampleprot— Amount of protein per 100 grams in the samplefat— Amount of fat per 100 grams in the sampleash— Amount of ash per 100 grams in the samplesodium— Amount of sodium per 100 grams in the samplecarb— Amount of carbohydrates per 100 grams in the samplecal— Amount of calories per 100 grams in the sample
Строки из предыдущей главы:
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.0 ──
## ✓ ggplot2 3.3.2 ✓ purrr 0.3.4
## ✓ tibble 3.0.4 ✓ dplyr 1.0.2
## ✓ tidyr 1.1.2 ✓ stringr 1.4.0
## ✓ readr 1.4.0 ✓ forcats 0.5.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
theme_set(theme_bw())
pizza <- read_csv('https://raw.githubusercontent.com/angelgardt/hseuxlab-andan/master/Pizza.csv')##
## ── Column specification ────────────────────────────────────────────────────────
## cols(
## brand = col_character(),
## id = col_double(),
## mois = col_double(),
## prot = col_double(),
## fat = col_double(),
## ash = col_double(),
## sodium = col_double(),
## carb = col_double(),
## cal = col_double()
## )
pizza %>% mutate(brand = as_factor(brand),
id = as_factor(id)) %>%
select(-brand, -id) -> pizza2 # убираем номинативные переменныеДля факторного анализа есть функция factanal(). Она ждет от нас данные и количество факторов.
## Error in factanal(pizza2, factors = 5): 5 factors are too many for 7 variables
Опа, попросили слишком много факторов. Действительно, если математические ограничения на количество факторов, оно завязано на число имеющихся переменных. Но нам не надо об этом париться, R за нас сам все проверит и посчитает.
Попробуем 4:
## Error in factanal(pizza2, factors = 4): 4 factors are too many for 7 variables
Тоже много. Давайте 3:
fan <- factanal(pizza2, factors = 3, scores = 'regression') #укажем scores, чтобы сохранились сами значения факторов
fan##
## Call:
## factanal(x = pizza2, factors = 3, scores = "regression")
##
## Uniquenesses:
## mois prot fat ash sodium carb cal
## 0.005 0.005 0.005 0.091 0.114 0.005 0.005
##
## Loadings:
## Factor1 Factor2 Factor3
## mois 0.266 -0.961
## prot 0.199 0.971 -0.116
## fat 0.904 0.356 0.232
## ash 0.629 0.706 -0.118
## sodium 0.889 0.278 0.135
## carb -0.539 -0.714 0.443
## cal 0.632 0.772
##
## Factor1 Factor2 Factor3
## SS loadings 2.736 2.228 1.815
## Proportion Var 0.391 0.318 0.259
## Cumulative Var 0.391 0.709 0.968
##
## Test of the hypothesis that 3 factors are sufficient.
## The chi square statistic is 2281.07 on 3 degrees of freedom.
## The p-value is 0
О, норм, работает.
Итак, что видно в аутпуте: уникальности, матрица факторных нагрузок, доля объясненной дисперсии и даже какой-то статистический тест с p-value.
Анализируем уникальности: больших значений нет, значит все наши переменные хорошо объясняются факторами.
Смотрим на таблицу факторных нагрузок. Так получается, что она еще и автоматически корреляционная матрица переменных с факторами. Вот почему:
\[ \mathrm{corr}(\boldsymbol{X}_i,\boldsymbol{F}_j) = \mathrm{corr}(a_{i1} \boldsymbol{F}_1 + a_{i2} \boldsymbol{F}_2 + \dots + a_{ip} \boldsymbol{F}_p + \boldsymbol{U}_i, \boldsymbol{F}_j) = \\ = \mathrm{corr}(a_{i1} \boldsymbol{F}_1, Fj) + \mathrm{corr}(a_{i2} \boldsymbol{F}_2, \boldsymbol{F}_j) + \dots + \mathrm{corr}(a_{ij} \boldsymbol{F}_j, \boldsymbol{F}_j) + \dots + \mathrm{corr}(a_{ip} \boldsymbol{F}_p, \boldsymbol{F}_j)+ \mathrm{corr}(\boldsymbol{U}_i, \boldsymbol{F}_j) = \\ = a_{ij} \mathrm{corr}(\boldsymbol{F}_j, \boldsymbol{F}_j) = a_{ij} \mathrm{var}(\boldsymbol{F}_j) = a_{ij} \]
Таким образом, мы интерпретируем факторы так же, как мы интерпретировали главные компоненты — на основании корреляций с исходными переменными. Как бы вы проинтерпретировали получившиеся три фактора?
Можно подобрать модель с двумя факторами:
##
## Call:
## factanal(x = pizza2, factors = 2)
##
## Uniquenesses:
## mois prot fat ash sodium carb cal
## 0.005 0.520 0.005 0.191 0.126 0.071 0.005
##
## Loadings:
## Factor1 Factor2
## mois 0.406 -0.911
## prot 0.684 -0.111
## fat 0.827 0.558
## ash 0.895
## sodium 0.807 0.472
## carb -0.934 0.238
## cal 0.274 0.960
##
## Factor1 Factor2
## SS loadings 3.717 2.364
## Proportion Var 0.531 0.338
## Cumulative Var 0.531 0.869
##
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 3485.54 on 8 degrees of freedom.
## The p-value is 0
Как теперь их можно интерпретировать? Отличается ли результат от PCA?
Из результатов факторного анализа можно отдельно доставать всякие штуки:
##
## Loadings:
## Factor1 Factor2 Factor3
## mois 0.266 -0.961
## prot 0.199 0.971 -0.116
## fat 0.904 0.356 0.232
## ash 0.629 0.706 -0.118
## sodium 0.889 0.278 0.135
## carb -0.539 -0.714 0.443
## cal 0.632 0.772
##
## Factor1 Factor2 Factor3
## SS loadings 2.736 2.228 1.815
## Proportion Var 0.391 0.318 0.259
## Cumulative Var 0.391 0.709 0.968
## mois prot fat ash sodium carb
## mois 1.0000000 0.3602477 -0.1713182 0.2655555 -0.1022789 -0.59180165
## prot 0.3602477 1.0000000 0.4980017 0.8238437 0.4291295 -0.85354226
## fat -0.1713182 0.4980017 1.0000000 0.7916340 0.9333252 -0.64023817
## ash 0.2655555 0.8238437 0.7916340 1.0000000 0.8081221 -0.89898837
## sodium -0.1022789 0.4291295 0.9333252 0.8081221 1.0000000 -0.62017634
## carb -0.5918017 -0.8535423 -0.6402382 -0.8989884 -0.6201763 1.00000000
## cal -0.7644405 0.0702581 0.7645671 0.3264685 0.6719575 -0.02348458
## cal
## mois -0.76444054
## prot 0.07025810
## fat 0.76456710
## ash 0.32646845
## sodium 0.67195750
## carb -0.02348458
## cal 1.00000000
## mois prot fat ash sodium carb cal
## 0.00500000 0.00500000 0.00500000 0.09123351 0.11363405 0.00500000 0.00500000
## [1] 3
## [1] 3
## [,1] [,2] [,3]
## [1,] 0.7536936 0.1565949 0.6382978
## [2,] 0.1916326 0.8766368 -0.4413444
## [3,] -0.6286676 0.4549571 0.6307068
## [1] 300
## Factor1 Factor2 Factor3
## [1,] 2.2403606726 1.01365654 1.586355336
## [2,] 2.1517548542 1.00091815 1.496408251
## [3,] 2.4850667309 0.72364156 1.437571756
## [4,] 2.1961101438 0.77695944 1.231803288
## [5,] 1.9063377764 1.02361718 1.317077547
## [6,] 2.1080650467 0.80291517 1.169719507
## [7,] 1.9106978395 0.96219229 1.226313169
## [8,] 1.8419336983 1.08904918 1.501611777
## [9,] 2.3597231318 0.82839938 1.490011356
## [10,] 2.2997558996 0.96763399 1.580551579
## [11,] 2.3171874472 0.96533982 1.625380205
## [12,] 2.2394984222 0.99187466 1.670151354
## [13,] 2.4010735791 0.73763937 1.413621437
## [14,] 2.1691001728 0.69065729 1.192213382
## [15,] 2.0138510469 0.91483867 1.234337039
## [16,] 2.5802939761 0.32831412 1.032800530
## [17,] 1.8510266753 0.81639109 0.990412118
## [18,] 2.2745608639 0.28807009 0.632433234
## [19,] 1.8753957387 0.87708898 1.099961226
## [20,] 2.2117838012 0.59714566 1.099454189
## [21,] 2.6617777924 0.62981107 1.556565161
## [22,] 2.4447180621 0.73872153 1.508952001
## [23,] 2.0620657018 0.87473489 1.221283371
## [24,] 2.3612603970 0.57294296 1.001523050
## [25,] 2.3244039216 0.38111229 0.802152569
## [26,] 2.3662367303 0.68194554 1.214699229
## [27,] 2.4256829077 0.72226741 1.389241102
## [28,] 2.4316853463 0.49596114 1.155773681
## [29,] 2.1243633904 0.96229702 1.377906129
## [30,] 1.5245191852 -0.38591847 -1.115422504
## [31,] 1.1144121194 -0.23128326 -1.381128600
## [32,] 1.6946707363 -0.49788000 -1.033852276
## [33,] 1.4371994153 -0.36068816 -1.171080576
## [34,] 1.4071001078 -0.45100948 -1.255734239
## [35,] 1.5788200815 -0.46090330 -1.181013939
## [36,] 1.7296881919 -0.56912880 -1.298799704
## [37,] 1.7466188162 -0.64082886 -1.294966697
## [38,] 1.1836832066 -0.44264630 -1.587410267
## [39,] 1.0101788214 -0.20634894 -1.317818517
## [40,] 1.5337258621 -0.35655449 -1.179478042
## [41,] 1.5888661077 -0.41395683 -1.124934026
## [42,] 1.3317229696 -0.31112092 -1.262173758
## [43,] 1.5426171736 -0.46663798 -1.163324108
## [44,] 0.8407773262 -0.22250609 -1.622066201
## [45,] 0.6487965309 -0.08028165 -1.593806926
## [46,] 1.0805401304 -0.29427053 -1.547582136
## [47,] 1.5529898252 -0.37247076 -1.083277985
## [48,] 1.5709499707 -0.49863089 -1.277396981
## [49,] 0.9984879853 -0.23423108 -1.376616855
## [50,] 1.5152058510 -0.43750266 -1.169501388
## [51,] 1.6089133152 -0.48940577 -1.144758288
## [52,] 1.6130042718 -0.50646770 -1.124521755
## [53,] 1.3698388494 -0.34341836 -1.247357567
## [54,] 1.3595486121 -0.33410616 -1.261472695
## [55,] 1.0559521732 -0.28792381 -1.545025210
## [56,] 1.3435712796 -0.38944131 -1.400085217
## [57,] 1.3979053333 -0.34587471 -1.338457029
## [58,] 1.4837380311 -0.39847340 -1.329807264
## [59,] 1.5837908950 -0.52816023 -1.371221916
## [60,] 1.5254965452 -0.50539511 -1.356971003
## [61,] -0.6564304681 2.11766623 -0.166976218
## [62,] -1.3955566660 2.67209895 -0.024385555
## [63,] -0.6439029608 1.97154837 -0.256448225
## [64,] -0.8744255312 2.08895038 -0.239432061
## [65,] -0.2090670311 1.66833341 -0.343001080
## [66,] -0.7699740622 2.03786028 -0.293637694
## [67,] -1.5347278184 2.65119362 -0.190832803
## [68,] -1.1917307459 2.55270925 -0.003793950
## [69,] -1.3468090115 2.45350710 -0.181656518
## [70,] -1.2062193773 2.22601950 -0.487925867
## [71,] -1.4109000180 2.27302994 -0.535696204
## [72,] -0.7438030121 1.98352299 -0.290824607
## [73,] -0.6436995362 2.12107486 -0.131094138
## [74,] -0.7390440384 2.10206079 -0.109591606
## [75,] -0.6843265470 2.04250364 -0.117166835
## [76,] -0.5667719396 1.83401273 -0.301262709
## [77,] -0.6512577379 1.77796905 -0.441735958
## [78,] -1.1236981168 2.17386524 -0.593206084
## [79,] -0.7317686173 2.16958936 -0.006643861
## [80,] -0.9075375101 2.29165938 -0.132728822
## [81,] -1.1963530935 2.23114877 -0.561171329
## [82,] -1.1605763707 2.32554134 -0.167078126
## [83,] -1.0233565303 1.97503662 -0.546891922
## [84,] -1.2919992535 2.46241444 -0.128349471
## [85,] -0.1391120436 1.67880770 -0.190705740
## [86,] -1.2489448170 2.25579590 -0.386383866
## [87,] -0.6611091064 2.00245912 -0.307434785
## [88,] 0.1885979781 1.21958461 -0.326288126
## [89,] 0.2601249140 1.24838692 -0.234436763
## [90,] -0.3538261531 1.42592007 -0.337197495
## [91,] -0.6017589423 1.54298063 -0.299575284
## [92,] -0.3459991818 1.38668573 -0.275651040
## [93,] -0.0146485657 1.31432242 -0.322070333
## [94,] -0.3773789287 1.38084025 -0.336722579
## [95,] -0.3654960133 1.40428407 -0.388891708
## [96,] -1.3255604922 2.56714064 -0.094706030
## [97,] -0.3613116928 1.46871134 -0.275505996
## [98,] -0.2476722068 1.31202060 -0.338505886
## [99,] -0.2204720598 1.24212636 -0.383045628
## [100,] -0.5767082151 1.50063565 -0.338952718
## [101,] -0.2882175965 1.51884367 -0.417630932
## [102,] -0.3010984843 1.48050831 -0.394382685
## [103,] -0.3476628457 1.53855072 -0.449358034
## [104,] -0.3809592875 1.44427420 -0.313896243
## [105,] -0.4242264947 1.40291836 -0.353980844
## [106,] -0.4148148445 1.42966395 -0.385380757
## [107,] -0.2849448624 1.28068192 -0.426206521
## [108,] -0.4076482165 1.48865177 -0.299168407
## [109,] -0.4703742257 1.49515330 -0.331947871
## [110,] -0.5837414082 1.54017359 -0.378226432
## [111,] 0.2228909974 1.18798010 -0.289467744
## [112,] -0.6630063572 1.53609572 -0.431809952
## [113,] -0.2491017302 1.55139606 -0.495807157
## [114,] -0.4699016029 1.47621685 -0.351585932
## [115,] 0.2094440488 1.24571710 -0.274406306
## [116,] 0.3007729562 1.21284206 -0.295522536
## [117,] 0.3331837834 1.09597392 -0.404659545
## [118,] 0.2616061627 1.09241178 -0.381803577
## [119,] -1.1236981168 2.17386524 -0.593206084
## [120,] -0.3000530023 -0.83158171 0.488023463
## [121,] -0.1318964137 -0.84396801 0.237619511
## [122,] -0.3913683952 -0.71954937 0.459104420
## [123,] -1.7824889326 -0.37073958 0.120606209
## [124,] -0.5062646322 -0.73396282 0.521536476
## [125,] -1.7508036890 -0.43167666 0.069029838
## [126,] -0.6599641614 -0.69749429 0.487625793
## [127,] -0.1471450550 -0.82058298 -0.033604901
## [128,] -0.3672733856 -0.78693893 0.332512908
## [129,] -0.3268926424 -0.80095526 0.275289584
## [130,] -0.6628668564 -0.65174582 0.184293672
## [131,] -0.6314139563 -0.68847351 0.446553197
## [132,] 0.0620842391 -0.87847252 0.476208521
## [133,] 0.0866662887 -0.88267477 0.614038597
## [134,] 0.2646732156 -1.00485599 0.115112698
## [135,] -0.5758860162 -0.73169183 0.188392424
## [136,] -0.7291339553 -0.74901749 0.294293682
## [137,] 0.2646732156 -1.00485599 0.115112698
## [138,] -0.5689581078 -0.68164815 0.556653854
## [139,] -0.4412783353 -0.76979556 0.268819563
## [140,] -0.1092327637 -0.81326762 0.511861391
## [141,] -0.0714279440 -0.88920515 0.353315373
## [142,] 0.2705697644 -1.04010003 0.347424840
## [143,] 0.1322437936 -0.96480380 0.533364254
## [144,] 0.0690241268 -0.93870178 0.418985182
## [145,] -1.2472538982 -0.66558367 0.228233689
## [146,] -0.6628668564 -0.65174582 0.184293672
## [147,] -0.6131405536 -0.74431085 0.518370420
## [148,] -0.2633341239 -0.71595766 1.217767729
## [149,] -0.6452732493 -0.60657008 1.035891625
## [150,] -0.7863210938 -0.54181156 1.082516215
## [151,] 0.0399793183 -0.75014649 0.989664128
## [152,] -0.1958271874 -0.72955635 1.172809228
## [153,] -0.6889072014 -0.58321943 1.017012897
## [154,] -0.5534773902 -0.65909045 1.172386875
## [155,] -0.8796835042 -0.51342908 0.968200779
## [156,] -0.7625457389 -0.54292645 1.082984946
## [157,] -0.5136323523 -0.67488901 0.992410797
## [158,] -0.1260441128 -0.69718469 1.016658593
## [159,] -0.6630200341 -0.62791921 1.091423664
## [160,] -0.1433731874 -0.67466674 1.133934202
## [161,] -0.6633503098 -0.60652431 1.055744228
## [162,] -0.4456240518 -0.65538122 1.302235507
## [163,] -0.3299463103 -0.67951831 1.202957460
## [164,] -0.0462946668 -0.71034224 1.106137789
## [165,] -0.7922443006 -0.54985709 1.111121538
## [166,] -0.2765030338 -0.66555894 1.392900093
## [167,] -0.7643990265 -0.58073080 0.994930751
## [168,] -0.9308335754 -0.53026450 0.992796345
## [169,] -1.0378602881 -0.50927628 1.060276180
## [170,] -0.5252360474 -0.61711983 1.118287551
## [171,] -0.5604205081 -0.67371934 1.046086695
## [172,] -0.3016177534 -0.74021680 1.105263592
## [173,] -0.4620008841 -0.67775527 1.132068625
## [174,] -0.4152371410 -0.65820714 1.153426690
## [175,] -0.2392387783 -0.73462895 1.178923743
## [176,] -0.1347829908 -0.75465222 1.170848548
## [177,] -0.7065606368 -0.66007230 0.907077888
## [178,] -0.7052084389 -0.52907926 1.270454126
## [179,] -0.7669398263 -0.52418763 1.254392851
## [180,] -0.8287004468 -0.56989612 0.965871034
## [181,] -0.7682631495 -0.50400407 1.275308271
## [182,] -0.0681737908 -0.67197746 1.153811750
## [183,] -0.5204759038 -0.60207280 1.235604840
## [184,] -0.6092084547 -0.54575639 1.207813338
## [185,] -0.6972704977 -0.51567524 1.314716201
## [186,] -0.5939143569 -0.54508464 1.278438987
## [187,] -0.6157929001 -0.53015748 1.272934448
## [188,] -0.9075546254 -0.45209687 1.298956859
## [189,] -0.9034021373 -0.42248813 1.284882425
## [190,] -0.7331520605 -0.49758105 1.228558551
## [191,] -0.9381055131 -0.60315974 0.720210141
## [192,] -0.1542219603 -0.65658458 1.424124840
## [193,] -0.7970942874 -0.44354121 1.388287278
## [194,] -0.8344037197 -0.48926991 1.343928463
## [195,] -0.7272484866 -0.54664030 1.312450364
## [196,] -0.3634201019 -0.63934454 0.970983776
## [197,] -0.8669825809 -0.46824072 1.186391474
## [198,] -0.4458325684 -0.58687218 1.202331935
## [199,] -0.8403950759 -0.47135000 1.380179771
## [200,] -0.9311263837 -0.49171184 1.261024081
## [201,] -0.4837883396 -0.58944642 1.460393423
## [202,] -0.4120952211 -0.62578548 1.429259752
## [203,] -0.7603225496 -0.50858031 1.320757323
## [204,] -0.6511242527 -0.45611815 1.633198829
## [205,] -1.1083210972 -0.41517655 1.198410938
## [206,] -0.5915123496 -0.59547625 1.196299077
## [207,] -0.8966051013 -0.57599698 0.396145385
## [208,] 0.0466019595 -0.81639803 0.433541167
## [209,] -0.3893761776 -0.78932624 0.400991460
## [210,] -1.7164518588 -0.27511957 0.544040743
## [211,] -0.3265123805 -0.73624683 0.403224130
## [212,] -0.2932551471 -0.75588575 0.392583499
## [213,] -1.6418119782 -0.47483164 -0.065190853
## [214,] -0.2319282837 -0.86766588 0.350593553
## [215,] -0.4093341372 -0.80398693 0.656136555
## [216,] -0.5611281783 -0.66226519 0.627610390
## [217,] -1.8047530753 -0.38026537 0.170378061
## [218,] -0.0455772260 -0.86881185 0.591489371
## [219,] -0.4972289904 -0.61334498 0.354144355
## [220,] -0.5771739885 -0.71612835 0.389513271
## [221,] -0.7870893792 -0.60044211 0.337399891
## [222,] -0.6904069626 -0.65067737 0.444019329
## [223,] -0.4688860134 -0.76426230 0.259689750
## [224,] -0.3526204332 -0.81986949 0.382351195
## [225,] -0.4063563585 -0.74899600 0.583501109
## [226,] -0.5733465959 -0.72541362 0.380232698
## [227,] -0.5483667556 -0.72460286 0.391720562
## [228,] 0.1224767974 -0.93423499 0.323200478
## [229,] -0.2640182510 -0.73059744 0.358039524
## [230,] -0.6152917257 -0.70061070 0.426118720
## [231,] -0.2207262896 -0.86301422 0.308637907
## [232,] -0.3533345249 -0.79725501 0.336647802
## [233,] 0.0316932063 -0.93931308 0.224401367
## [234,] -0.4561786417 -0.80227378 0.338105783
## [235,] -0.7760109052 -0.65134221 0.354519098
## [236,] -0.0584421152 -0.92914021 0.452832672
## [237,] -1.1641433622 -0.60578215 0.316331489
## [238,] -0.6548454950 -0.68458555 0.380456991
## [239,] -0.5483667556 -0.72460286 0.391720562
## [240,] -0.2261682399 -0.62774049 -1.657090791
## [241,] -0.1053217215 -0.73691400 -1.666798111
## [242,] -0.2273248664 -0.64091000 -1.564983928
## [243,] -0.1193538843 -0.60003667 -1.602905105
## [244,] -0.0891131708 -0.66492303 -1.472197597
## [245,] -0.4969962743 -0.45410882 -1.632509013
## [246,] -0.2483464369 -0.85944509 -1.887226594
## [247,] -0.0970237888 -0.74360357 -1.858042502
## [248,] -0.2641877399 -0.73832715 -1.663799441
## [249,] -0.0049763509 -0.55948273 -1.538010395
## [250,] -0.1125711670 -0.65963883 -1.671613523
## [251,] -0.2310873737 -0.47450775 -1.444859445
## [252,] -0.3081643611 -0.52574339 -1.679093153
## [253,] -0.1593471933 -0.57962511 -1.662364206
## [254,] -0.2789489329 -0.61110059 -1.736717879
## [255,] -0.0087151472 -0.79989235 -1.804803439
## [256,] -0.2258723792 -0.69881743 -1.658660575
## [257,] -0.2512359869 -0.65453256 -1.666814956
## [258,] -0.3690831334 -0.54182691 -1.570913580
## [259,] -0.3274008558 -0.51338581 -1.413770692
## [260,] -0.3064494648 -0.43113070 -1.564645325
## [261,] -0.1701732230 -0.57316168 -1.616412981
## [262,] -0.1945782780 -0.62726961 -1.637032756
## [263,] -0.2005364068 -0.57558560 -1.569821295
## [264,] -0.3343848744 -0.75388906 -1.963691419
## [265,] -0.1700467032 -0.60998592 -1.659556801
## [266,] -0.1865690767 -0.66843038 -1.612812090
## [267,] -0.3176273572 -0.53318695 -1.507685396
## [268,] -0.1586424822 -0.73766474 -1.755852980
## [269,] -0.0912035483 -0.54523205 -0.733212692
## [270,] -0.1896130982 -0.38994722 -0.429646993
## [271,] -0.1864072779 -0.52926831 -0.873944328
## [272,] -0.1264472341 -0.61768326 -0.817252368
## [273,] -0.0914707391 -0.62231127 -0.732443888
## [274,] -0.2400717376 -0.56506499 -0.909002089
## [275,] 0.0023752220 -0.53682294 -0.687442611
## [276,] -0.0450163720 -0.49768748 -0.749746599
## [277,] 0.0139827070 -0.50856352 -0.712657273
## [278,] 0.0248556056 -0.69824580 -1.029945432
## [279,] -0.4482304001 -0.03404786 -0.412792955
## [280,] -0.4227670694 -0.39271346 -0.674079591
## [281,] -0.0145035502 -0.56212568 -0.869975519
## [282,] -0.1981420653 -0.37251769 -0.682075736
## [283,] -0.1319332508 -0.46869511 -0.603371462
## [284,] -0.2032093971 -0.51540468 -0.812895514
## [285,] 0.2166337669 -0.49911115 -0.426480989
## [286,] 0.0027125211 -0.60372788 -0.920509837
## [287,] -0.0009888876 -0.53971526 -0.616514538
## [288,] -0.1600400524 -0.48270054 -0.559359510
## [289,] -0.0815784835 -0.50492781 -0.902831050
## [290,] -0.0587008082 -0.56497971 -0.675739390
## [291,] -0.0643984553 -0.55783784 -0.725236942
## [292,] -0.1443051554 -0.55601196 -0.859305404
## [293,] -0.0477442039 -0.69937331 -0.659514402
## [294,] 0.1458822477 -0.65520493 -0.778702613
## [295,] 0.0751389883 -0.45088887 -0.484026429
## [296,] -0.1249121426 -0.41300520 -0.564966576
## [297,] -0.0184274013 -0.28697552 -0.324125970
## [298,] -0.2266289174 -0.38575999 -0.506405446
## [299,] -0.1864072779 -0.52926831 -0.873944328
## [300,] -0.1264472341 -0.61768326 -0.817252368
Ну, и напоследок, визуализируем связь номинативного предиктора с получившимися факторами.
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
plot_ly(x = fan$scores[,1], y = fan$scores[,2], z = fan$scores[,3], color = pizza$brand,
type = 'scatter3d', mode = 'markers') %>%
layout(scene = list(
xaxis = list(title = 'Factor 1'),
yaxis = list(title = 'Factor 2'),
zaxis = list(title = 'Factor 3')
))## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(N, "Set2"): n too large, allowed maximum for palette Set2 is 8
## Returning the palette you asked for with that many colors