# How to find the vector b if we know the RMSE?

1 view (last 30 days)
Sadiq Akbar on 12 Jan 2023
Edited: Matt J on 14 Jan 2023
If we have two vectors given by:
a=[3,6,8,20,35,45];
b=[3.0343, 6.2725, 8.5846, 18.3781, 34.2025, 44.9699];
Then its Mean Square Error MSE and Root Mean Sqaure Error RMSE are given by:
MSE = mean((a-b).^2,2);
RMSE = sqrt(MSE);
But if we know MSE and RMSE and one of the vector namely 'a', then how to find the 2nd vector b?

Matt J on 12 Jan 2023
Edited: Matt J on 12 Jan 2023
That's not possible. You have, in this case, 6 unknowns but only 1 equation.
Matt J on 14 Jan 2023
Edited: Matt J on 14 Jan 2023
Here's one simple solution for b:
a=[3,6,8,20,35,45];
RMSE=3.7;
b=a+RMSE;
rootMeanSquaredError = sqrt( mean((a-b).^2) ) %verify
rootMeanSquaredError = 3.7000

John D'Errico on 12 Jan 2023
There are infinitely many possible vectors b, for any given RMSE. And worse, they can have infinitely many possible shapes. This means it is flatly not possible to find a unique vector b that yields a given RMSE. Sorry.
Do you want proof?
a=[3,6,8,20,35,45];
b=[3.0343, 6.2725, 8.5846, 18.3781, 34.2025, 44.9699];
For example consider this simple vector b1:
n = length(a);
RMSEfun = @(b) sqrt(sum((a - b).^2/n));
syms x
rmsetarget = 1;
b1 = sym(a); b1(1) = x; % I will change only the first elememt of b
x1 = vpasolve(RMSEfun(b1) == rmsetarget,x)
x1 =
0.55051025721682190180271592529411
b1 = double(subs(b1,x,x1))
b1 = 1×6
0.5505 6.0000 8.0000 20.0000 35.0000 45.0000
RMSEfun(b1)
ans = 1.0000
So by trivially changing one arbitrary element of a, I found a new vector b that yields exactly the desired RMSE. I could have perturbed ANY element and gotten the same result.
b2 = sym(a); b2(4) = x; % I will change only the first elememt of b
x2 = vpasolve(RMSEfun(b2) == rmsetarget,x)
x2 =
17.550510257216821901802715925294
b2 = double(subs(b2,x,x2))
b2 = 1×6
3.0000 6.0000 8.0000 17.5505 35.0000 45.0000
RMSEfun(b2)
ans = 1.0000
Or, I might have chosen b in a different way.
b3 = sym(a); b3 = b3*x; % I will change EVERY element of b, proportionally
x3 = vpasolve(RMSEfun(b3) == rmsetarget,x)
x3 =
0.96004791377243790210022857429935
b3 = double(subs(b3,x,x3))
b3 = 1×6
2.8801 5.7603 7.6804 19.2010 33.6017 43.2022
RMSEfun(b3)
ans = 1.0000
Again, there are infinitely many solutions. I chose only 3 trivial examples.
Sadiq Akbar on 14 Jan 2023
Thanks a lot for your kind response. Amazing explanation. Yes, I am convinced with your explanation. But is there any trick that we can use because most of the time tricks also work though trick may be against mathematics rules? Isn't that?

### Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by