I have a question that how to know how much contribution that each factor makes to the total PCA results, for example, use percentage to explain the contribution?
I have a gene expression matrix from six groups (a,b,c,d,e,f), in each group there are at least two replicates. The six groups are from different donors (For example: replicates in group a from donor A and donor B).
Here is my example data and related sample information:
structure(list(a_1 = c(0.777826793724671, 0.723980296636, 0.242330621229485,
0.74905050941743, 0.293395987479016, 0.508663943270221, 0.568264301633462,
0.71544666425325, 0.22279090131633, 0.162438383558765), a_2 = c(0.840473337331787,
0.750769911101088, 0.824924289714545, 0.451419109478593, 0.67439135722816,
0.968571343459189, 0.657587153837085, 0.449371922994033, 0.460420181043446,
0.506347043439746), b_1 = c(0.606637348420918, 0.0831037482712418,
0.948381775757298, 0.938334624515846, 0.00419102935120463, 0.188286359421909,
0.208198433509097, 0.0177543577738106, 0.718145203776658, 0.0831736491527408
), b_2 = c(0.321765134111047, 0.211961556924507, 0.587257345672697,
0.144032216630876, 0.972890468547121, 0.855327832512558, 0.57097671367228,
0.577104192459956, 0.0781774870119989, 0.114624827634543), c_1 = c(0.391017276560888,
0.590633708517998, 0.795098746661097, 0.728984325425699, 0.493055917322636,
0.369274253724143, 0.773150491062552, 0.975961270509288, 0.813110067509115,
0.0556579001713544), c_2 = c(0.667865458643064, 0.632330810651183,
0.694971590070054, 0.530965579906479, 0.965042072581127, 0.593090373789892,
0.572259798645973, 0.175909371348098, 0.888658297248185, 0.813629044219851
), d_1 = c(0.241499250289053, 0.00761426473036408, 0.461811906658113,
0.109057808294892, 0.866662635235116, 0.454646666068584, 0.744061368750408,
0.863238325342536, 0.640526893315837, 0.868945126188919), d_2 = c(0.319046971853822,
0.91230500722304, 0.501486229710281, 0.364735695533454, 0.575103351147845,
0.466834801947698, 0.793754573678598, 0.851761769503355, 0.967630770988762,
0.154894143110141), e_1 = c(0.816843639593571, 0.803759014001116,
0.960935505107045, 0.574637013487518, 0.173312981147319, 0.0567971160635352,
0.35941729741171, 0.427865072153509, 0.325001205084845, 0.553443755256012
), e_2 = c(0.951808236306533, 0.734539293451235, 0.637795145623386,
0.0906503377482295, 0.307018371066079, 0.837945698061958, 0.575052802218124,
0.149990632198751, 0.740633937064558, 0.614213866414502), e_3 = c(0.655502210138366,
0.303118638927117, 0.754946870729327, 0.973303767153993, 0.15387549251318,
0.727580216247588, 0.133633797988296, 0.990649084327742, 0.508409713627771,
0.291543716564775), f_1 = c(0.722936338512227, 0.43016006750986,
0.668916463851929, 0.597232702188194, 0.566613202914596, 0.492413811851293,
0.841789987403899, 0.991420056903735, 0.654314963845536, 0.361741523491219
), f_2 = c(0.445054198848084, 0.561434917617589, 0.00869911885820329,
0.193016097648069, 0.625879230443388, 0.440140291117132, 0.192036809166893,
0.825253788847476, 0.706002304796129, 0.560118380701169), f_3 = c(0.481232576072216,
0.388952540932223, 0.547279508085921, 0.0684368198271841, 0.211692467099056,
0.0816763381008059, 0.179641566239297, 0.111117320600897, 0.471861350117251,
0.0512471403926611), f_4 = c(0.618208972737193, 0.993882849579677,
0.0283353771083057, 0.699978570453823, 0.377288895659149, 0.486861442681402,
0.55804020841606, 0.609155245823786, 0.911775157321244, 0.616870308062062
), f_5 = c(0.662106775445864, 0.825681922957301, 0.838785516098142,
0.812102147843689, 0.16824291436933, 0.873179373564199, 0.230873316759244,
0.852764319395646, 0.354741029441357, 0.673453942872584), f_6 = c(0.696460561361164,
0.63435076456517, 0.488687434000894, 0.974564600270241, 0.0511445237789303,
0.850382218603045, 0.52776403632015, 0.878997334977612, 0.265999732539058,
0.199336896184832), f_7 = c(0.155626990366727, 0.609529266366735,
0.405262058833614, 0.832081991713494, 0.759743764763698, 0.116353970719501,
0.945955528412014, 0.744843143504113, 0.824364016996697, 0.0772311592008919
)), class = "data.frame", row.names = c(NA, -10L))
structure(list(Group = c("a", "a", "b", "b", "c", "c", "d", "d",
"e", "e", "e", "f", "f", "f", "f", "f", "f", "f"), Rep = c("a_1",
"a_2", "b_1", "b_2", "c_1", "c_2", "d_1", "d_2", "e_1", "e_2",
"e_3", "f_1", "f_2", "f_3", "f_4", "f_5", "f_6", "f_7"), Donor = c("A",
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "A", "B", "I",
"J", "C", "L", "J")), class = "data.frame", row.names = c(NA,
-18L))
Based on this data, I produced a PCA plot.
Then I want to know if I can calculate the donor effect (A~L) and group effect(a~f) that contribute the PCA result, especially dim PC1 and dim PC2?
So I can say, 30% of the PC1 variance is contributed by donor effect, the rest PC1 70% variance can be explained by group effect?
Because in my data,I only want to focus on group effect that can distinct different groups by gene expression. But the donor effect also exist.
If there are any better methods to be used to do similar calculation?
I hope you can give me some adivce on this question.
Thanks in advance.