calculating rmse between observations and estimates of different size
20 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Thomas
le 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 commentaires
Thomas
le 3 Sep 2013
You could try interp1 (nearest neighbor interpolation) or something similar http://www.mathworks.com/help/matlab/ref/interp1.html
Thomas
le 3 Sep 2013
Modifié(e) : Thomas
le 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
Plus de réponses (1)
Youssef Khmou
le 3 Sep 2013
Modifié(e) : Youssef Khmou
le 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 commentaires
Youssef Khmou
le 3 Sep 2013
Modifié(e) : Youssef Khmou
le 3 Sep 2013
Sergio, transpose vectors r1=r1'; r2=r2' or try again the edited code .
Voir également
Catégories
En savoir plus sur Time Series dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!