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