1. 程式人生 > >RMS:均方根值,RMSE:均方根誤差,MSE:標準差

RMS:均方根值,RMSE:均方根誤差,MSE:標準差

1、均方根值(RMS),有時也稱方均根、效值。英語寫為:Root
 Mean Square(RMS).
美國傳統詞典的定義為:The square root of the average of squares of a set of numbers.
即:將N個項的平方和除以N後開平方的結果,即均方根的結果。






#include <iostream>#include "math.h"using namespace std; double calcRMS(double* Data, int Num){    double fSum = 0;    for (int i = 0; i < Num; ++i)    {        fSum += Data[i] * Data[i];    }    return
sqrt(fSum/Num);} int main(){ double data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; double a = calcRMS(data, 10); cout << "the rms of data is:" << a << endl; return 0;} 2、均方根誤差,它是觀測值與真值偏差的平方和觀測次數n比值的平方根,在實際測量中,觀測次數n總是有限的,真值只能用最可信賴(最佳)值來代替.方根誤差對一組測量中的特大或特小誤差反映非常敏感,所以,均方根誤差能夠很好地反映出測量的精密度。均方根誤差,當對某一量進行甚多次的測量時,取這一測量列真誤差的均方根差(真誤差平方的算術平均值再開方),稱為標準偏差,以σ表示。σ反映了測量資料偏離真實值的程度,σ越小,表示測量精度越高,因此可用σ作為評定這一測量過程精度的標準。
double calcRMSE(double* Data,double *Data2,int Num){ double fSum = 0; for (int i = 0; i < Num; ++i) { fSum += (Data[i] - Data2[i]) *(Data[i] - Data2[i]); } return sqrt(fSum / Num);}int main(){ double dataReal[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; double dataCheck[10] = { 1.02
, 2.1, 2.95, 3.98,5.1, 6.05, 7.1, 7.95, 8.98, 10.1 }; double a = calcRMSE(dataReal,dataCheck,10); cout << "the rmse of dataREAL and check is:" << a << endl; return 0;} 3、標準差(Standard Deviation),標準差是方差的算術平方根,也稱均方差(mean square error),是各資料偏離平均數的距離的平均數,它是離均差平方和平均後的方根,用σ表示,標準差能反映一個數據集的離散程度。 double calcMSR(double* DataR,double *DataC,int Num){ double fSum = 0; double meanValue = 0; for (int i = 0; i < Num; ++i) { meanValue += DataR[i]; } meanValue = meanValue / Num; for (int i = 0; i < Num; ++i) { fSum += (DataC[i] - meanValue) *(DataC[i] - meanValue); } return sqrt(fSum / Num); //MSR} ---------------------