Souradeep Chattapadhyay
2017-Aug-23 21:44 UTC
[R] Scaling Matrix in qda() function in MASS package
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]]
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:::qdaOnce 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 <soura at 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 at 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.
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.4567 at 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 > <soura at 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 at 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 at 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.