Extract n principal components from the matrix mx using irlba, then rotate the solution using varimax
Usage
varimax_irlba(
mx,
n,
prcomp_fn = irlba::prcomp_irlba,
prcomp_opts = NULL,
varimax_fn = stats::varimax,
varimax_opts = NULL,
retx = TRUE
)Arguments
- mx
Matrix of interest
- n
Number of principal components / varimax factors to return; can take a vector of values
- prcomp_fn
Function to use to extract principal components
- prcomp_opts
List of options to pass to
prcomp_fn- varimax_fn
Function to use for varimax rotation
- varimax_opts
List of options to pass to
varimax_fn- retx
Whether to return the input matrix
mx
Value
A list of class varimaxes, with elements
totalvar: Total variance, from PCAsdev: Standard deviations of the extracted principal componentsx: IfretxisTRUE, the input matrixmxrotation: Rotation matrix (variable loadings) from PCAvarimaxes: A list of classvarimaxes, containing one fitted varimax model for each value ofn, with further elementsloadings: Varimax-rotated standardized loadingsrotmat: Varimax rotation matrixscores: Varimax-rotated observation scores
Examples
# \donttest{
set.seed(42)
theta = rdirichlet(50, 1, k = 3)
phi = rdirichlet(3, 0.1, k = 20)
corpus = draw_corpus(rep(50L, 50), theta, phi)
dtm = tidytext::cast_sparse(corpus, doc, word, n)
varimax_irlba(dtm, n = 3)
#> $totalvar
#> [1] 186.4147
#>
#> $sdev
#> [1] 10.154387 7.941126 2.711402
#>
#> $rows
#> [1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15"
#> [16] "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30"
#> [31] "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" "45"
#> [46] "46" "47" "48" "49" "50"
#>
#> $cols
#> [1] "2" "5" "8" "11" "12" "17" "20" "1" "10" "4" "16" "18" "7" "15" "6"
#>
#> $center
#> 2 5 8 11 12 17 20 1 10 4 16 18 7
#> 4.90 0.26 18.66 7.68 1.86 6.36 5.02 2.40 1.98 0.46 0.14 0.18 0.06
#> 15 6
#> 0.02 0.02
#>
#> $scale
#> [1] FALSE
#>
#> $x
#> 50 x 15 sparse Matrix of class "dgCMatrix"
#> [[ suppressing 15 column names ‘2’, ‘5’, ‘8’ ... ]]
#>
#> 1 2 1 19 23 2 2 1 . . . . . . . .
#> 2 16 . 10 . . 11 7 2 4 . . . . . .
#> 3 1 . 20 16 3 5 2 . 2 1 . . . . .
#> 4 6 . 12 11 2 10 3 2 3 1 . . . . .
#> 5 2 . 17 15 3 4 2 5 . 2 . . . . .
#> 6 5 . 11 11 2 4 7 3 6 1 . . . . .
#> 7 2 . 34 2 1 4 1 5 . 1 . . . . .
#> 8 5 . 9 20 4 4 5 1 . 2 . . . . .
#> 9 9 1 18 1 . 7 9 3 2 . . . . . .
#> 10 1 1 14 13 6 8 . 5 . . 1 1 . . .
#> 11 6 1 15 1 . 6 15 1 4 . . . 1 . .
#> 12 1 . 31 11 1 3 . 2 . 1 . . . . .
#> 13 3 . 23 7 2 8 2 3 2 . . . . . .
#> 14 3 . 20 15 2 1 . 4 4 . 1 . . . .
#> 15 4 . 27 2 1 7 2 6 1 . . . . . .
#> 16 5 1 28 . . 6 5 2 2 . 1 . . . .
#> 17 2 . 18 16 8 3 1 2 . . . . . . .
#> 18 4 . 20 5 1 3 8 6 3 . . . . . .
#> 19 6 . 13 . . 7 12 3 7 . . 2 . . .
#> 20 9 1 17 1 . 10 10 . 2 . . . . . .
#> 21 9 . 4 4 2 10 17 . 3 . . 1 . . .
#> 22 6 1 29 4 . 4 . 5 . . . . 1 . .
#> 23 . . 24 16 6 1 1 1 . 1 . . . . .
#> 24 1 1 33 4 2 1 1 6 . 1 . . . . .
#> 25 7 . 5 5 . 14 10 1 6 . 1 . 1 . .
#> 26 6 1 17 3 . 10 7 . 6 . . . . . .
#> 27 3 1 36 . . 6 2 1 1 . . . . . .
#> 28 1 . 19 16 3 5 2 1 . 3 . . . . .
#> 29 8 . 9 2 . 10 13 2 5 . 1 . . . .
#> 30 6 . 27 . . 5 6 4 1 . . 1 . . .
#> 31 1 . 11 25 5 3 1 2 . 2 . . . . .
#> 32 9 . 10 8 2 8 10 1 1 . . 1 . . .
#> 33 5 1 12 14 5 4 2 3 1 2 . 1 . . .
#> 34 2 . 39 . . 2 2 4 . 1 . . . . .
#> 35 3 . 37 . . 2 3 5 . . . . . . .
#> 36 4 . 10 7 3 9 11 2 4 . . . . . .
#> 37 3 . 19 8 2 8 6 . 2 1 1 . . . .
#> 38 6 . 10 18 5 5 4 1 1 . . . . . .
#> 39 4 . 11 16 2 7 4 2 1 1 1 1 . . .
#> 40 14 1 9 2 . 6 10 3 4 . . . . 1 .
#> 41 8 . 7 7 1 18 6 . 3 . . . . . .
#> 42 3 . 34 6 3 3 1 . . . . . . . .
#> 43 2 . 26 14 2 3 1 2 . . . . . . .
#> 44 5 1 25 2 1 5 4 4 2 . . 1 . . .
#> 45 10 . 11 2 . 17 9 1 . . . . . . .
#> 46 7 . 24 3 1 5 3 4 3 . . . . . .
#> 47 6 . 16 1 . 11 8 5 3 . . . . . .
#> 48 5 . 23 8 3 3 3 1 2 1 . . . . 1
#> 49 2 . 10 11 6 9 7 2 2 1 . . . . .
#> 50 7 . 10 8 1 11 5 2 6 . . . . . .
#>
#> $rotation
#> PC1 PC2 PC3
#> [1,] -0.1761182059 -0.2662541622 -0.0347453066
#> [2,] 0.0062744364 -0.0102091448 0.0133078668
#> [3,] 0.8946919236 -0.0856574374 -0.0451636941
#> [4,] -0.1441409458 0.8368366358 0.0001138277
#> [5,] -0.0262630077 0.1977968342 0.0232756001
#> [6,] -0.2439675211 -0.2358486608 -0.8017393256
#> [7,] -0.2662115885 -0.3304375982 0.5712360162
#> [8,] 0.0746444645 -0.0301464776 0.0795314250
#> [9,] -0.1045749959 -0.1167392533 0.1377858179
#> [10,] 0.0019779091 0.0531497675 0.0137886470
#> [11,] -0.0051439905 0.0010452120 -0.0112031179
#> [12,] -0.0082003962 -0.0056034321 0.0340876682
#> [13,] -0.0018329284 -0.0056873524 0.0063875917
#> [14,] -0.0021332671 -0.0027717356 0.0098372711
#> [15,] 0.0009981133 0.0005268048 0.0034997125
#>
#> $n
#> [1] 3
#>
#> $varimax
#> $varimax$`3`
#> $varimax$`3`$loadings
#> [,1] [,2] [,3]
#> 2 -1.543494e+00 -1.519224e+00 -1.7283648049
#> 5 6.571852e-02 -8.608355e-02 -0.0143080031
#> 8 6.641125e+00 -3.139326e+00 5.3903500385
#> 11 -6.242402e-01 6.643635e+00 1.3328232630
#> 12 -4.667281e-02 1.561741e+00 0.3179324781
#> 17 -3.419079e+00 -1.534457e+00 -0.5708738590
#> 20 -1.171382e+00 -1.409401e+00 -3.6377716827
#> 1 6.910355e-01 -3.868725e-01 0.2261162142
#> 10 -6.086037e-01 -5.046854e-01 -1.2253537497
#> 4 6.937302e-02 3.988841e-01 0.1265788554
#> 16 -5.848587e-02 1.575057e-02 -0.0071641039
#> 18 -3.881459e-03 -3.016794e-05 -0.1320655380
#> 7 -5.553028e-03 -3.379211e-02 -0.0389026695
#> 15 1.612053e-06 -9.270514e-03 -0.0397392701
#> 6 1.413891e-02 3.131571e-03 0.0007428317
#>
#> $varimax$`3`$rotmat
#> [,1] [,2] [,3]
#> [1,] 0.74518686 -0.2724038 0.6086811
#> [2,] 0.07016217 0.9397238 0.3346587
#> [3,] 0.66315445 0.2066769 -0.7193823
#>
#> $varimax$`3`$scores
#> [,1] [,2] [,3]
#> 1 0.4014702826 1.96161454 0.51109747
#> 2 -1.4499729503 -1.20424553 -0.45410837
#> 3 0.0260839173 1.02981145 0.68988311
#> 4 -1.4021662421 0.24256522 0.67327639
#> 5 0.1372938758 1.10345694 0.28127126
#> 6 0.4328891619 0.84973922 -1.39198030
#> 7 0.9615852015 -0.94379276 1.17114669
#> 8 -0.1220185520 1.88898146 -0.59160200
#> 9 0.2212553936 -0.84174835 -0.88505775
#> 10 -1.0762369874 0.75103141 1.16383027
#> 11 1.0526753880 -0.49088357 -2.37193316
#> 12 0.8202189048 0.19393072 1.28404116
#> 13 -0.4152359092 -0.34705225 1.12288963
#> 14 0.7475156973 1.14198405 0.08478722
#> 15 0.0517492396 -0.98274672 1.03067891
#> 16 0.5773347046 -1.16766035 0.31683409
#> 17 0.2324127062 1.35305057 0.42238105
#> 18 1.2831361813 -0.01259053 -1.26030471
#> 19 0.5149512775 -0.63157266 -1.98300194
#> 20 -0.4375624542 -1.04149646 -0.51035484
#> 21 -0.2862608206 -0.10939326 -2.55946022
#> 22 0.4691444281 -0.71306322 1.04061326
#> 23 1.0035422607 1.30641156 0.45863898
#> 24 1.6072248037 -0.39752603 0.58954203
#> 25 -1.7939181960 -0.45186674 -0.57491091
#> 26 -0.6243461886 -0.78416417 -0.06614102
#> 27 0.6574014411 -1.44357643 1.44523685
#> 28 -0.0451209455 1.08347196 0.70287329
#> 29 -0.3784345463 -0.57454084 -1.68428696
#> 30 0.8645408591 -1.06085215 -0.12426603
#> 31 -0.1577667303 2.50859519 0.23592421
#> 32 -0.3897296308 0.16213173 -1.10967611
#> 33 -0.2021437342 1.15223250 -0.11715326
#> 34 1.7564058594 -1.18734272 0.88753552
#> 35 1.7628548695 -1.13682764 0.55293121
#> 36 -0.2690457887 0.15819227 -1.21754134
#> 37 -0.2378929763 -0.04228513 0.23080548
#> 38 -0.3964277010 1.53290782 -0.27031529
#> 39 -0.7041751160 1.11511552 0.11189972
#> 40 0.0000789906 -0.45425520 -1.94722424
#> 41 -3.1420341023 -0.69924440 1.22915873
#> 42 1.0249841504 -0.43711148 1.16877688
#> 43 0.6364846266 0.69129009 0.86169846
#> 44 0.5739114053 -0.74859865 0.12961814
#> 45 -2.4463666514 -1.32959877 0.71134819
#> 46 0.3657761414 -0.68085847 0.21614615
#> 47 -0.7259982408 -1.01894397 -0.11729096
#> 48 0.6928067772 0.15344697 0.03639876
#> 49 -0.7326116991 0.66830099 -0.26432392
#> 50 -1.4402623823 -0.11442370 0.13967019
#>
#>
#>
#> attr(,"class")
#> [1] "varimaxes" "list"
# }