how to return the R-squared using lscov command

3 visualizzazioni (ultimi 30 giorni)
Janis
Janis il 12 Gen 2013
How can I get the R-squared using the LSCOV command?

Risposte (1)

Wayne King
Wayne King il 13 Gen 2013
Modificato: Wayne King il 13 Gen 2013
I'm not sure whether your A matrix can be interpreted as a design matrix for a linear model and B is your response vector (here I'm using the input designations in lscov), but if that is the case, then the classic R-squared would be.
X = lscov(A,B);
xhat = A*X;
resid = xhat-B;
SSE = norm(resid,2)^2;
TSE = norm((B-mean(B),2)^2;
R2 = 1-SSE/TSS;
Alternatively, you could use something like:
X = lscov(A,B);
xhat = A*X;
r2 = norm(xhat,2)^2/norm(B,2)^2;
The l2-norm of xhat is less than or equal to the l2 norm of the B vector. If A*X is a good fit for B, then the norm of xhat will be close to the l2 norm of B and the ratio will be close to 1.
If A*X is bad fit for B, then the ratio will be small.
  2 Commenti
Matt J
Matt J il 13 Gen 2013
Modificato: Matt J il 13 Gen 2013
This would only work if LSCOV is called with no more than 2 input args, i.e., if it is unweighted least squares. With the syntax
x=lscov(A,B,V)
you would perhaps need
resid = xhat-B;
resid = dot(resid,V\resid);
Tom Lane
Tom Lane il 14 Gen 2013
I would recommend computing both SSE and TSS using weights.

Accedi per commentare.

Categorie

Scopri di più su Creating and Concatenating Matrices in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by