I am using plotMDS() from the limma package to generate ordination plots from a one-color microarray dataset. I would like to get some estimates for the variation explained by each dimension so that I can make a Scree plot.
From my interpretation of the help file, plotMDS performs classical multidimensional scaling (i.e., principle components analysis) via the cmdscale() function. Since plotMDS() returns an object, I can easily get the following information about the plot (dim.plot, distance.matrix, cmdscale.out, top, gene.selection, x, y), but I am unable to get the eigenvalues associated with each dimension. Furthermore, if I pass the distance matrix output by plotMDS() (distance.matrix) back to cmdscale() to generate eigenvalues via cmdscale(mds$distance.matrix,eig=T), the x and y coordinates and distance matrix returned by cmdscale() do not match with the output originally returned by plotMDS(). (for the record, the results are similar, however)
Provided I am correct about how plotMDS works, I am guessing that the reason that the output from the two functions differs is because the distance matrix output from plotMDS() (distance.matrix: numeric matrix of pairwise distances between columns of x) and cmdscale() (x: the doubly centered distance matrix if x.ret is true) are different. So it is not clear to me whether I am using plotMDS/cmdscale to correctly calculate the eigenvalues via cmdscale(mds$distance.matrix,eig=T).
Finally, I have tried numerous alternatives for performing PCA, and while they all give broadly similar results, they also give somewhat different estimates for the PC plots and eigenvalues. So at this point, I feel like I am missing something, and should be able to resolve the original eigenvalue output issue in a much simpler fashion... or perhaps I shouldn't get too wound up about the minor differences in output between various methods?
Thanks for any advice on how to proceed!
From my interpretation of the help file, plotMDS performs classical multidimensional scaling (i.e., principle components analysis) via the cmdscale() function. Since plotMDS() returns an object, I can easily get the following information about the plot (dim.plot, distance.matrix, cmdscale.out, top, gene.selection, x, y), but I am unable to get the eigenvalues associated with each dimension. Furthermore, if I pass the distance matrix output by plotMDS() (distance.matrix) back to cmdscale() to generate eigenvalues via cmdscale(mds$distance.matrix,eig=T), the x and y coordinates and distance matrix returned by cmdscale() do not match with the output originally returned by plotMDS(). (for the record, the results are similar, however)
Provided I am correct about how plotMDS works, I am guessing that the reason that the output from the two functions differs is because the distance matrix output from plotMDS() (distance.matrix: numeric matrix of pairwise distances between columns of x) and cmdscale() (x: the doubly centered distance matrix if x.ret is true) are different. So it is not clear to me whether I am using plotMDS/cmdscale to correctly calculate the eigenvalues via cmdscale(mds$distance.matrix,eig=T).
Finally, I have tried numerous alternatives for performing PCA, and while they all give broadly similar results, they also give somewhat different estimates for the PC plots and eigenvalues. So at this point, I feel like I am missing something, and should be able to resolve the original eigenvalue output issue in a much simpler fashion... or perhaps I shouldn't get too wound up about the minor differences in output between various methods?
Thanks for any advice on how to proceed!
Comment