correlation should be less than or equal to 1 but in my case it is exceeding,so give me a solution

2 views (last 30 days)
sir i'm using matlab to run PCR and PLSR model for correlating the results for example RMSE should not exceed 1 but the problem what i'm facing is after running the program i'm getting RMSE as 1.22,i coding what i'm using is Partial Least Square Regression (PLSR) analysis: % Standardize data set using zscore function
X = zscore(X1); y = Y1;
% Fit with more no. of components
[Xloadings,Yloadings,Xscores,Yscores,betaPLS10,PLSPctVar]=plsregress(X,y,10);
% Crossvalidation method to find optimum no.of components to be used in model
[Xl,Yl,Xs,Ys,beta,pctVar,PLSmsep] = plsregress(X,y,10,'CV',10); figure,plot(0:10,PLSmsep(2,:),'b-o'); xlabel('Number of components'); ylabel('Estimated Mean Squared Prediction Error'); legend({'PLSR'},'location','NE'); figure,plot(1:10,cumsum(100*PLSPctVar(2,:)),'-bo'); xlabel('Number of PLS components'); ylabel('Percent Variance Explained in Y');
% x=zscore(calibx); y=caliby; [Xloadings,Yloadings,Xscores,Yscores,betaPLS] = plsregress(x,y,3);
% get the beta coefficients from calibration set and predict y value % X1=validset,n=no.of rows yfitPLS = [ones(n,1) X1]*betaPLS;
% Calculation of r2 value and RMSE TSS = sum((y-mean(y)).^2); RSS_PLS = sum((y-yfitPLS).^2); rsquaredPLS = 1 - RSS_PLS/TSS; rmse=sqrt(sum((y(:)-yfitPLS(:)).^2)/numel(y))
can i get a solution where i have gone wrong.
thanking you

Answers (1)

Tom Lane
Tom Lane on 2 Feb 2013
In general, unless there is something special about your problem, it is perfectly reasonable for rmse to be larger than 1. It's an estimate of the standard deviation of the error term in the units of the response vector y. Multiply y by 10 and rmse will be larger by the same factor.
R-square is a unitless quantity that should be less than 1.

Tags

Community Treasure Hunt

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

Start Hunting!