If you multiply the data for a certain group by the scaling matrix for that group, the variance matrix will be the identity. E.g.,
> z <- qda(iris[-5], grouping=iris$Species) > zapsmall(var( as.matrix(subset(iris, Species=="virginica", 1:4)) %*% z$scaling[,,"virginica"] )) 1 2 3 4 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1 > zapsmall(var( as.matrix(subset(iris, Species=="versicolor", 1:4)) %*% z$scaling[,,"versicolor"] )) 1 2 3 4 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1 Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Aug 24, 2017 at 12:54 PM, Ranjan Maitra <mai...@email.com> wrote: > I guess the question that is being asked here is what is the scaling > matrix that is being returned in the qda object. The help file on qda() > says: > ... > scaling: for each group ‘i’, ‘scaling[,,i]’ is an array which transforms > observations so that within-groups covariance matrix is spherical. > ... > > This is a bit ambiguous. I tried a few cases (spectral, QR decomposition, > especially given that it is an upper triangular matrix) but was unable to > match the result. > > Unless someone knows, there is no recourse but to muck through source code. > > Btw, I think the following will give the necessary source code: > > MASS:::qda.default > > > Hope this helps! > > Best wishes, > Ranjan > > > On Wed, 23 Aug 2017 15:58:30 -0700 Bert Gunter <bgunter.4...@gmail.com> > wrote: > > > You need to learn how to access code for nonexported methods. See ? "::" > > > > > methods(qda) > > [1] qda.data.frame* qda.default* qda.formula* qda.matrix* > > see '?methods' for accessing help and source code > > > > Shows you that the methods are not exported from the namespace. Hence > > you need to use the triple colon operator to see their code: > > > > > MASS:::qda > > > > Once you have the code, I presume this will answer your question. > > > > Cheers, > > Bert > > > > > > Bert Gunter > > > > "The trouble with having an open mind is that people keep coming along > > and sticking things into it." > > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > > > > On Wed, Aug 23, 2017 at 2:44 PM, Souradeep Chattapadhyay > > <so...@iastate.edu> wrote: > > > Hello, > > > I am Souradeep Chattopadhyay and I am a graduate student at > Iowa > > > State University Department of Statistics. > > > > > > Can anyone please explain the mathematical formulation behind the > scaling > > > matrix returned by the qda function in MASS package. I want to > understand > > > how this scaling matrix is derived from the inputs given to the qda > > > function. > > > > > > Example Code > > > > > > The following example is using the banknote data in the MCLUST package. > > > > > > *Code* > > > > > > require(MASS) > > > require(mclust) > > > data(banknote) > > > quad<-qda(banknote[,-1], grouping=banknote$Status, method="mle") > > > quad$scaling > > > > > > > > > Scaling matrix returned by qda for this data is > > > > > > , , counterfeit > > > > > > 1 2 3 > > > 4 5 6 > > > Length 2.853988 1.069414 -0.05279774 0.750531723 -0.2053821 > 0.6986088 > > > Left 0.000000 -4.208108 -3.04707132 -0.026804815 -0.8644062 > > > -1.1088947 > > > Right 0.000000 0.000000 4.27383763 0.003205759 0.3313675 > 1.3865888 > > > Bottom 0.000000 0.000000 0.00000000 0.917596063 -0.8707772 > 0.7274894 > > > Top 0.000000 0.000000 0.00000000 0.000000000 -2.2041415 > > > 0.6956074 > > > Diagonal 0.000000 0.000000 0.00000000 0.000000000 > 0.0000000-2.1879157 > > > > > > , , genuine > > > > > > 1 2 3 > 4 > > > 5 6 > > > Length 2.592911 -1.169164 0.6105339 -0.3614352 -0.2520496 -0.5281743 > > > Left 0.000000 3.027882 2.2392994 -0.2842368 -1.2092325 > 0.6927868 > > > Right 0.000000 0.000000 -3.8684746 -0.3972362 -0.4177546 -0.1062555 > > > Bottom 0.000000 0.000000 0.0000000 1.6376150 1.7274240 0.3969998 > > > Top 0.000000 0.000000 0.0000000 0.0000000 2.3022115 > 0.6318543 > > > Diagonal 0.000000 0.000000 0.0000000 0.0000000 0.0000000 2.4516680 > > > > > > > > > > > > Thanks and Regards > > > > > > Souradeep > > > > > > [[alternative HTML version deleted]] > > > > > > ______________________________________________ > > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > > https://stat.ethz.ch/mailman/listinfo/r-help > > > PLEASE do read the posting guide http://www.R-project.org/ > posting-guide.html > > > and provide commented, minimal, self-contained, reproducible code. > > > > ______________________________________________ > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/ > posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > > > > -- > Important Notice: This mailbox is ignored: e-mails are set to be deleted > on receipt. Please respond to the mailing list if appropriate. For those > needing to send personal or professional e-mail, please use appropriate > addresses. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/ > posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.