Skip to contents

This function performs principal component analysis (PCA) on a given matrix.

Usage

prot.pca(
  mat,
  metadata = NULL,
  center = TRUE,
  scale = FALSE,
  rank = NULL,
  removeVar = NULL,
  transposed = FALSE,
  BSPARAM = BiocSingular::ExactParam(),
  in_workflow = FALSE
)

Arguments

mat

A numeric matrix.

metadata

An optional data frame with rownames matching 'colnames(mat)'.

center

A logical indicating whether to center the data before PCA.

scale

A logical indicating whether to scale the data before PCA.

rank

An integer indicating the number of principal components to calculate.

removeVar

A numeric value between 0 and 1 indicating the fraction of variables to remove based on variance.

transposed

A logical indicating whether the matrix is transposed.

BSPARAM

An object of class ExactParam or ApproxParam.

in_workflow

Indicated whether this function is called from within prot.workflow.

Value

A list with components rotated, loadings, variance, sdev, metadata, xvars, yvars, and components.

References

BiocSingular (https://bioconductor.org/packages/release/bioc/html/BiocSingular.html)

Examples

mat <- matrix(rnorm(1000), nrow = 100, ncol = 10)
prot.pca(mat)
#> $rotated
#>           PC1        PC2        PC3         PC4         PC5        PC6
#> 1  -7.7882388 -0.5254519  1.6739757  3.83904244  1.90269251 -2.0836401
#> 2   1.8697534  2.4163623  4.5412498 -2.52082728  2.19234578  5.4016162
#> 3  -0.8920437  7.4705499  3.1181134 -0.24563105  0.09361523 -3.2751975
#> 4  -1.4711416 -5.1074580 -1.4538136 -2.70141409  5.34427512 -0.5095835
#> 5   3.0531687  3.8242136 -7.0336074  1.27723841 -0.66185608 -1.0622737
#> 6  -0.5296023 -1.2213262  2.4226898 -4.96082437 -5.12159401 -1.7612813
#> 7   5.8581849 -1.0708300 -0.9164211 -1.03361657  2.93444215 -2.6381760
#> 8   4.3719559 -2.3519837  3.1316591  6.61512880 -1.39831623  1.5878050
#> 9  -4.0789010  1.7844429 -4.7393355 -0.24982989 -1.30730927  4.7395143
#> 10 -0.3931356 -5.2185188 -0.7445102 -0.01926638 -3.97829519 -0.3987834
#>           PC7         PC8        PC9         PC10
#> 1  -1.7005220 -2.32438881  2.3392548 7.581903e-16
#> 2   1.4919279 -1.97503936  2.3820398 7.581903e-16
#> 3   2.3769281  3.26402990 -1.5054030 7.581903e-16
#> 4   2.2915666 -0.03576356 -3.6026367 7.581903e-16
#> 5   2.0224340 -3.88135212  0.1725159 7.581903e-16
#> 6  -2.7569745 -2.60565922 -1.8174345 7.581903e-16
#> 7  -4.3976835  2.13574611  2.7276855 7.581903e-16
#> 8  -0.6660052 -0.04577688 -2.9739330 7.581903e-16
#> 9  -2.9907856  3.05018608 -0.9634042 7.581903e-16
#> 10  4.3291141  2.41801786  3.2413154 7.581903e-16
#> 
#> $loadings
#>               PC1           PC2           PC3           PC4          PC5
#> 1    0.1037756196 -0.0063718043 -0.1978008672  0.0770237662 -0.120045661
#> 2   -0.0201352304  0.0018077957  0.0737887019 -0.0194047994 -0.145770180
#> 3    0.1303429428 -0.1435996041 -0.0007388896 -0.0861014410 -0.061910337
#> 4    0.0558745054 -0.0435378270 -0.1497819497 -0.0312160496  0.088648714
#> 5   -0.1136626041 -0.1757592403 -0.0793929155  0.0796960252  0.052638847
#> 6   -0.1329122082 -0.0509807613  0.0817490625  0.0302375689 -0.053928515
#> 7    0.0510141050 -0.0416619571 -0.1002021640 -0.1280040286 -0.058746964
#> 8    0.0933060911 -0.1320719355 -0.1162795675 -0.0503518548  0.024929254
#> 9   -0.0133120422 -0.2541846175  0.0044450030 -0.0328514469 -0.043347346
#> 10   0.0091259306  0.1270409223  0.2360883808 -0.0499968925 -0.153864083
#> 11   0.0523751784 -0.0556426440 -0.0084713830  0.2258013617 -0.057532091
#> 12  -0.1998347756 -0.0175220258  0.0097036704 -0.0180295988 -0.349151180
#> 13  -0.2890931304  0.0547636160 -0.0101316865 -0.0657830024  0.047578755
#> 14   0.0985499730  0.0362229952  0.0070061034 -0.0050530372 -0.059630250
#> 15  -0.0776585250  0.0638560961 -0.0867813423  0.0021417610 -0.015603232
#> 16   0.1717926056  0.0514952299  0.0307147397  0.0080098956  0.036664466
#> 17   0.0809071951 -0.0076603496  0.0145133406 -0.2145893308  0.101551878
#> 18  -0.0701185865 -0.0217573048  0.0913112762  0.0109994282 -0.028159769
#> 19   0.0505122032  0.0088997156 -0.0765765573  0.1134422063  0.063797124
#> 20  -0.0454434510  0.0991396542  0.0428774699 -0.2599250198 -0.035555900
#> 21   0.0120698971  0.0558336661 -0.0661404301  0.0338458905  0.155325727
#> 22  -0.1619185942 -0.0104967300 -0.0664959043 -0.0870131129 -0.050909888
#> 23   0.1014884657 -0.0506419820 -0.0706590903 -0.1280186770  0.013816846
#> 24   0.0169760049 -0.1096929798  0.1295862198  0.0595639293 -0.050081413
#> 25  -0.1877121879 -0.2201632428  0.1960309046 -0.0403869819  0.143834590
#> 26  -0.0009929752  0.1710674912  0.0224817119  0.0802237074 -0.053823853
#> 27   0.0096849771  0.0169554665  0.0157730189 -0.0601149466  0.007887527
#> 28  -0.0120088365 -0.0626602292  0.0047751848  0.0957358624  0.316006811
#> 29   0.0731737829  0.0961146248  0.0541357042  0.0151144900  0.161382550
#> 30   0.1636171744 -0.0291459399 -0.1099114623  0.0005717268  0.129570713
#> 31  -0.1011632971 -0.0247497663 -0.1117368682  0.0620777228  0.061412592
#> 32  -0.0804264240  0.0078885958  0.0414505661 -0.0441874334 -0.167978322
#> 33  -0.1170621723  0.0554630494 -0.0870187865 -0.0953369989  0.086715659
#> 34  -0.0069408990 -0.0986773386 -0.0640944075  0.1392753655 -0.008626486
#> 35   0.0489617995 -0.1586384466  0.0512031968  0.0946528508 -0.103982248
#> 36  -0.0509860452 -0.1191297864  0.0277126242 -0.0417399242 -0.045598653
#> 37   0.0828728991 -0.0144862481  0.0742240021  0.0162316099 -0.140871238
#> 38  -0.0263133288  0.0629172940  0.0674797452  0.0746554884 -0.082897764
#> 39  -0.0996368194  0.0935589766 -0.0669966729 -0.1227936456 -0.063535657
#> 40  -0.0922123289 -0.1902300049  0.0545844682 -0.1427849912  0.044332060
#> 41  -0.0033889859 -0.0667315057  0.0929391765 -0.1351173496 -0.030695477
#> 42  -0.0318914280  0.0230571656 -0.1075651266 -0.0950862949  0.088659987
#> 43   0.0632878757  0.0427191783  0.2603546438 -0.1480761387  0.043555595
#> 44   0.1011786475  0.1099902211  0.2089559109  0.1573033605 -0.011669165
#> 45   0.0092009367  0.0066079315 -0.0645082893 -0.0356551693  0.003633938
#> 46  -0.1858147239  0.0170937497  0.0687931047  0.0404971880  0.202505764
#> 47  -0.0144591679 -0.1072485518  0.0451457935  0.0343069958 -0.034075514
#> 48  -0.1262252750  0.0090258736  0.0450139076 -0.0802291858 -0.060165673
#> 49  -0.0629524303  0.0165266266 -0.1369384650  0.0710058599 -0.185630468
#> 50   0.1798360755  0.0177496838  0.0444381126 -0.0882578179  0.124531305
#> 51  -0.0267300153  0.0554287984 -0.1074638075  0.1131907273  0.006402089
#> 52  -0.0191346140  0.0093901378 -0.0947107539 -0.0156326289  0.023934808
#> 53   0.0184804425 -0.2163466310  0.0297865571 -0.0348448252 -0.156221453
#> 54  -0.0882085886 -0.2096822295  0.0181526114 -0.1177277281  0.010431022
#> 55   0.0167396180  0.0055260910  0.0927203811 -0.0384324936  0.075290224
#> 56  -0.0083563072 -0.1871267022  0.1333101096 -0.0161637266  0.181241850
#> 57   0.1279200316 -0.0504407732  0.0226043136 -0.0668515082 -0.169195055
#> 58  -0.3151113897 -0.0553073505 -0.1056261172 -0.0193953891  0.131874476
#> 59   0.1081344348 -0.0084736252  0.0165124314 -0.0742514811 -0.105109350
#> 60  -0.0089998143  0.1232063464  0.0363802022 -0.0195211876  0.028390220
#> 61  -0.0935748604  0.0456705999 -0.0675175271  0.1193138014 -0.084008036
#> 62   0.1416053160 -0.1402462158  0.0426932911  0.0135297510  0.101539587
#> 63   0.0345905446 -0.0903614713 -0.0838628645  0.1584700223  0.080613420
#> 64  -0.0262182209 -0.0949986323  0.0203427897 -0.2570086601  0.079699558
#> 65   0.0806833696 -0.0606880462 -0.0304919608  0.1274154079  0.139283677
#> 66   0.0250372100 -0.1137187795 -0.0824002216  0.0528961575  0.089501311
#> 67  -0.0463377959  0.1773814118  0.1177834843  0.1818358365  0.008527666
#> 68   0.0690640537 -0.0419924741  0.0490861444  0.1124967011  0.004171269
#> 69   0.0143278829 -0.0812784620 -0.0711773389  0.0255738016 -0.019987091
#> 70   0.1701982386  0.0413227338 -0.1100119202 -0.0902441226  0.029816680
#> 71  -0.0926932195  0.0849701475 -0.0548425329 -0.1228466758  0.021886356
#> 72  -0.0499654913 -0.1213306766 -0.1127106437  0.0423211254  0.014100855
#> 73  -0.0172070170  0.0349387515  0.1744616285  0.1371041520  0.080597840
#> 74  -0.0278990275 -0.0246699204  0.2010279629  0.0630973343 -0.018959024
#> 75  -0.0750560246 -0.0437858362  0.1661295094 -0.0236398875 -0.015323636
#> 76   0.0048974692  0.0973473997  0.1494977165 -0.0049008683  0.164346055
#> 77  -0.1272041836  0.1517718255  0.0941104860 -0.1357410923  0.005852503
#> 78   0.0623694707  0.0001323082 -0.0093272896  0.0882196569  0.018397686
#> 79  -0.0204380956  0.0063211791 -0.0161962373 -0.0080595550 -0.062819648
#> 80  -0.0268757517 -0.0956510851  0.1772996247 -0.0054151321  0.064027119
#> 81  -0.2359073695  0.0646375566 -0.0311401906  0.0889080545  0.028038233
#> 82  -0.1635493333 -0.0528422028 -0.0915703339  0.0944319907 -0.124967682
#> 83  -0.0895434120  0.0509980461 -0.1433462020  0.1844383227  0.072766712
#> 84  -0.0445699730  0.1218405469 -0.0253887134 -0.0577240322  0.065411686
#> 85   0.1447010570 -0.0326656424 -0.0160502663 -0.0230613175 -0.027051533
#> 86   0.0337628233  0.0783851203  0.1694385423 -0.0820423568  0.100556502
#> 87   0.2742957553 -0.0747441802 -0.0632125419 -0.1126813427 -0.038078730
#> 88  -0.0763821996  0.0725273433  0.0033858069 -0.2876791703  0.028597725
#> 89   0.0376670302  0.2209939032 -0.0139211577  0.0559115164  0.048081572
#> 90   0.0267124292 -0.1448448567  0.1988974009  0.0507936425 -0.011488795
#> 91  -0.0004171455 -0.0251576789  0.1083556961  0.0240246307 -0.145039060
#> 92  -0.0978522850 -0.0851100680 -0.0141694721  0.1147996901  0.006937206
#> 93  -0.0281196092 -0.1373798223 -0.0072470882  0.0468521286  0.170846100
#> 94  -0.0315468985  0.0078665691  0.0608462274  0.1131824199 -0.045972806
#> 95  -0.0220072660  0.1218934911  0.1987285141  0.1079128004  0.079762185
#> 96  -0.0778420332 -0.2255236041  0.0417929175  0.0452746077  0.111287236
#> 97   0.0459595514 -0.0987299930  0.1589575234  0.1991857592 -0.137302241
#> 98   0.0095300870 -0.0255732886  0.0926667238 -0.0224017764  0.094754823
#> 99   0.0180858186  0.0073390773  0.1738839429  0.0692869257  0.016548273
#> 100  0.0509169893  0.2151806742 -0.0297521649  0.0594382805  0.127413748
#>               PC6          PC7           PC8          PC9          PC10
#> 1    0.1155608821  0.069066181  0.1012438864  0.005373035 -0.1680491998
#> 2   -0.1713780049  0.021738815  0.1809447831  0.136300328 -0.3224450055
#> 3   -0.0434790684  0.086871595  0.2044455180 -0.157251743 -0.2625803545
#> 4   -0.0811228698 -0.126139229  0.0429896481 -0.031944355  0.1093335770
#> 5    0.0371662904 -0.105647898  0.0407379185  0.025023948  0.2174264308
#> 6   -0.0883475120  0.069602207  0.0113109523  0.078832073 -0.1916118273
#> 7    0.0347091243  0.051821571 -0.1003721227 -0.158970554  0.0946706333
#> 8   -0.1692894000  0.168212798 -0.1830629854 -0.044093545  0.3849833495
#> 9    0.1362860268  0.047599796 -0.0800794227 -0.130468597 -0.3938803952
#> 10  -0.0285116939 -0.004219328  0.2116703404  0.044296532  0.1116209588
#> 11   0.1832297269  0.036200141 -0.0075623079 -0.111191882 -0.0234987303
#> 12   0.0377680344 -0.107281314 -0.0606105330 -0.169180188  0.0713143678
#> 13   0.0328178465  0.050399094  0.0344574639  0.064990106 -0.0088140046
#> 14   0.0479124272 -0.076225031 -0.0574304521  0.015235847 -0.0640658697
#> 15   0.0672456474  0.124189987 -0.0424409339  0.007428247  0.0117956838
#> 16   0.2280669943  0.133232184  0.0008931586 -0.031173769 -0.0276188727
#> 17  -0.1912741807  0.064618529 -0.0710822978  0.058288539  0.0043953762
#> 18  -0.1367688704 -0.023135696  0.0818024424 -0.120133293  0.0312326739
#> 19   0.0506536498 -0.072689358 -0.1151466797  0.188623560 -0.0250931296
#> 20  -0.0272145413  0.190302504 -0.1027944135  0.011945042  0.0078199095
#> 21   0.2835076527 -0.151511999  0.0324460318  0.012415913  0.0241938720
#> 22   0.1197052678  0.129088703  0.0616495964  0.082634932 -0.0452269717
#> 23   0.1409695001  0.051442718  0.0898281500 -0.028647697  0.0529451175
#> 24  -0.0193545421 -0.003812713  0.0668416150  0.069950820  0.0877322250
#> 25  -0.0105051473 -0.026193351 -0.0433210588 -0.082325536  0.1315752033
#> 26  -0.0249200205  0.089579566 -0.0353603114  0.007715955 -0.0974299444
#> 27   0.1347131307 -0.025609079  0.1255601738 -0.099645427  0.0204974918
#> 28   0.0950903411 -0.071887148  0.2224666259 -0.064014560  0.0350397336
#> 29  -0.1245791426  0.055267627 -0.0944868384 -0.180025979 -0.0962504873
#> 30   0.1041920896 -0.081089078 -0.0738388943 -0.091309087 -0.1110372959
#> 31  -0.0576814894  0.024807982  0.0592984199 -0.057837509  0.0214746148
#> 32   0.1774552189 -0.075523531 -0.0645052162  0.172214916  0.0418486048
#> 33  -0.0040585066  0.141370951  0.0110981154 -0.030425630 -0.0004719654
#> 34  -0.1578674515 -0.073754614 -0.2426449482  0.061046682  0.0413624234
#> 35  -0.0869892750  0.006298899  0.1531433233 -0.007606105  0.0385459357
#> 36   0.1120485545  0.086398302 -0.0287587785 -0.116413813  0.0246316801
#> 37   0.0692713356 -0.086518541 -0.0137179427 -0.214702519 -0.0772538123
#> 38   0.0005589875  0.109776571  0.0359176704 -0.011110581  0.0603105655
#> 39   0.1460255631  0.054154441  0.1662809986  0.023404809  0.0921113865
#> 40  -0.0236844281 -0.139910015 -0.0252279408  0.128863835 -0.0328390193
#> 41  -0.0533978921 -0.219048700 -0.0613303958 -0.003829272  0.0243168253
#> 42  -0.0899115873  0.118344498  0.0971837783 -0.204666927 -0.0022915868
#> 43  -0.0645778638 -0.001352208 -0.0736200465  0.049399391 -0.0238755654
#> 44  -0.0172750109  0.086155758 -0.0627723760 -0.045934196 -0.0316424294
#> 45   0.0983622522 -0.105212053 -0.0801403595  0.271598716 -0.0304780142
#> 46   0.0095973586  0.070999373  0.0316081536  0.065039420  0.0094454268
#> 47  -0.1114252109  0.051600807  0.1538964884  0.071800660  0.0919233651
#> 48   0.0829979465 -0.039486014  0.0272849655  0.065398295 -0.0019589782
#> 49  -0.0554616899  0.079856241 -0.0131807157 -0.119427087 -0.0240157931
#> 50   0.0637205564  0.145662666 -0.0292696863 -0.027234041 -0.0753551751
#> 51   0.0853228955  0.035101449 -0.1885286842  0.080613827 -0.0034559907
#> 52   0.0678634008  0.051549185  0.0310347868  0.101445715 -0.0042736952
#> 53  -0.0718288831 -0.062958629  0.0157146050 -0.059888202  0.0320592784
#> 54  -0.0341397205  0.095682226  0.1080659355  0.002324813 -0.0343962587
#> 55  -0.0127427628  0.124494682  0.0424207871 -0.091582998 -0.0712687297
#> 56   0.0099866349  0.036670362  0.0750644987  0.081233203 -0.0242114873
#> 57  -0.0040255593  0.243997166  0.0997062634  0.021751798  0.2538675426
#> 58   0.0532331605 -0.026573953 -0.0143801932 -0.004351352 -0.0912887621
#> 59  -0.0292507710 -0.024329271 -0.2021072137  0.063738367 -0.0897441442
#> 60  -0.0010951819  0.009305754  0.1448035747  0.157550194 -0.0132347704
#> 61  -0.1355549019 -0.048880579 -0.1445644484 -0.164909501 -0.0055479190
#> 62   0.0921415807 -0.027524034 -0.0589902605 -0.027472659 -0.0070856001
#> 63  -0.1447043419  0.257201179 -0.0359363867  0.194125365 -0.0304912506
#> 64  -0.0801887748 -0.022058055 -0.0079776136 -0.020302799 -0.0635315435
#> 65  -0.0771966800  0.059030445  0.0988744109 -0.034153073 -0.0911394796
#> 66   0.1215564179 -0.015866128 -0.0695648305 -0.183527389  0.0655944331
#> 67  -0.1612052912 -0.082102883  0.0432204261 -0.056894112 -0.0424524970
#> 68   0.0402801483 -0.006221484 -0.0685578952  0.100825189  0.0191086814
#> 69  -0.0631900312  0.059499587 -0.0493394348 -0.023092716 -0.1003617447
#> 70   0.0550064912 -0.093644518  0.1942605975  0.093315671  0.0548643936
#> 71   0.1374181905  0.106479744  0.0570933955 -0.134983153  0.0615686030
#> 72   0.0546133970 -0.086779312  0.0818473107  0.214409410  0.0839826514
#> 73   0.0602014492 -0.022839254 -0.1060969568  0.105140048  0.0695115173
#> 74   0.1012101372  0.031577704  0.0979110516  0.092842799  0.0162621323
#> 75  -0.0250294062 -0.037658191 -0.0440972817  0.113594462  0.0483699358
#> 76  -0.0253868069 -0.041533833  0.0043757102 -0.186679856  0.1930661587
#> 77  -0.1481233710 -0.096253494 -0.0219205424 -0.227421840  0.0055963937
#> 78  -0.1635431573 -0.005121722  0.1500676954  0.056454228  0.0671089523
#> 79  -0.1018152990  0.144225932  0.0350140401  0.089225103  0.0005793992
#> 80   0.2153234356  0.214275924 -0.0355805964 -0.039446571  0.0288727039
#> 81  -0.0375263578  0.011930227  0.0435265008 -0.083214205  0.0043504156
#> 82  -0.0128702400  0.102267913 -0.1207927213  0.034450322  0.0127515750
#> 83  -0.0795679672  0.128272625  0.1099139062  0.030104159  0.0025877213
#> 84   0.1171878594 -0.035386539 -0.1057062742  0.027764752 -0.1096863403
#> 85  -0.1005026596  0.149231029 -0.0567952924  0.091700989  0.0177106977
#> 86   0.0020793013 -0.226871882 -0.0135498220  0.061107703 -0.0582891823
#> 87  -0.0272151971 -0.096301922  0.0463420698 -0.010478560  0.1084654490
#> 88   0.1301735607  0.149900413 -0.1704642955  0.080984232 -0.0111666247
#> 89   0.0096897805 -0.008968166 -0.1348272967 -0.023863731 -0.0095188832
#> 90   0.1272845172  0.145414815  0.0890371270  0.017476670  0.0460104539
#> 91   0.0928025374  0.004700018 -0.1331249036 -0.031316738  0.0443703243
#> 92   0.0539483869  0.028731023  0.0347541083 -0.084623094  0.0115030774
#> 93  -0.0742880600 -0.107005819 -0.0686999589 -0.124015728 -0.0519362387
#> 94   0.0634089532 -0.075030449  0.1927275537 -0.070019553 -0.0922209176
#> 95   0.1092324918  0.134154238 -0.0460495314 -0.112871179  0.0667399431
#> 96  -0.0456599377  0.129576468 -0.1772686266  0.029651115 -0.0875452507
#> 97   0.1521274988  0.102192803 -0.1024933737 -0.021811247  0.0837736741
#> 98  -0.0935643506  0.145343516 -0.0762589772  0.068320158 -0.0911074550
#> 99  -0.0206689744 -0.047221503 -0.0881191039  0.040029529 -0.0673586985
#> 100 -0.0459306407  0.167177192  0.0529125334  0.046462072  0.0374878355
#> 
#> $variance
#>          PC1          PC2          PC3          PC4          PC5          PC6 
#> 1.672110e+01 1.607051e+01 1.414087e+01 1.133215e+01 1.044278e+01 9.199186e+00 
#>          PC7          PC8          PC9         PC10 
#> 8.555075e+00 7.001531e+00 6.536796e+00 6.541593e-31 
#> 
#> $sdev
#>  [1] 4.040617e+00 3.961230e+00 3.715809e+00 3.326376e+00 3.193180e+00
#>  [6] 2.997022e+00 2.890195e+00 2.614639e+00 2.526374e+00 7.992028e-16
#> 
#> $metadata
#> NULL
#> 
#> $xvars
#> NULL
#> 
#> $yvars
#> NULL
#> 
#> $components
#>  [1] "PC1"  "PC2"  "PC3"  "PC4"  "PC5"  "PC6"  "PC7"  "PC8"  "PC9"  "PC10"
#> 
#> attr(,"class")
#> [1] "pca"