calculating rmse between observations and estimates of different size
    14 views (last 30 days)
  
       Show older comments
    
I would like to calculate rmse between observations and estimates of different size. This are two timeseries, one 84084x1 and the second is 315360x1.
0 Comments
Accepted Answer
  Thomas
      
 on 3 Sep 2013
        Your data sets (data and estimate) have different sizes. Do you have NaN's in your estimates or are you taking multiple estimates/observations?
You might want to equalize the size of the dataset (by removing the unwanted observations) and then finding the rmse
 rmse=sqrt(sum((data(:)-estimate(:)).^2)/numel(data));
3 Comments
  Thomas
      
 on 3 Sep 2013
				You could try interp1 (nearest neighbor interpolation) or something similar  http://www.mathworks.com/help/matlab/ref/interp1.html
  Thomas
      
 on 3 Sep 2013
				
      Edited: Thomas
      
 on 3 Sep 2013
  
			I just realized that you have a time series and if you have the finance toolbox you can use the fillts command http://www.mathworks.com/help/finance/fillts.html
More Answers (1)
  Youssef  Khmou
      
 on 3 Sep 2013
        
      Edited: Youssef  Khmou
      
 on 3 Sep 2013
  
      You can padd the small vector with zero or Interpolate as mentioned by @Thomas :
 % Given your vectors r1 r2
 r1=randn(315360,1);
 r2=randn(84084,1);
 N1=length(r1);
 N2=length(r2);
 Ratio=floor(N1/N2);
 r22=interp(r2,Ratio);
 Diff=N1-length(r22);
 r22=[r22;zeros(Diff,1)];
 plot(r1), hold on, plot(r22,'r'),
 RMSE=sqrt(mean(((r22-r1).^2)))
You can also use the functions downsample or upsample
2 Comments
  Youssef  Khmou
      
 on 3 Sep 2013
				
      Edited: Youssef  Khmou
      
 on 3 Sep 2013
  
			Sergio, transpose vectors r1=r1'; r2=r2' or try again the edited code .
See Also
Categories
				Find more on Time Series in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

