matlab数据统计时的STD、RMSE计算方法

matlab数据统计时的STD、RMSE和RMS计算方法

STD和RMSE的定义

标准差(Standard Deviation,STD)反映了数据集偏离平均值的离散程度。
均方根误差(Root Mean Squared Error,RMSE)反映了数据集偏离真值的离散程度。
标准差也称均方差,它是方差(Variance)的算术平方根。
均方根误差是均方误差(Mean Squared Error,MSE)的算术平方根。
即:
方差=标准差^2
均方误差=均方根误差^2
STD和RMSE的计算公式类似,区别在于分子中的减数是均值还是真值:
STD和RMSE计算公式
其中分母一般都是除以n-1,表示是采用样本数据来估计总体。如果数据集本身就是总体时,就除以n。

RMS的定义

RMS是均方根(Root Mean Square)的简称,表示真有效值,一般在数据统计中不常使用。计算方法是:RMS计算公式

matlab中计算STD和RMSE函数

在matlab中,STD有对于的函数(std和std2)可以直接计算,RMSE没有现成的函数可以使用,需要自己实现。
使用std2前需要安装 signal processing toolbox 工具箱

std和std2

例如:对一个真值为0的随机变量a做了三组测量(A矩阵中的三列),每组测三次,
A =[
4 -5 3
2 3 5
-9 -1 7];
A矩阵的三个列向量的平均值如下:
ave = mean(A);
结果为:ave = -1 -1 5

每一组测量的标准差为:
STD0=std(A);
结果为:STD0 = 7 4 2

RMSE计算方法:
RMSE0=sqrt(sum((A-0).^2)/(3-1))
结果为RMSE0 = 7.1063 4.1833 6.4420

对比STD0和RMSE0可以看出, 当数据集的均值不等于真值时,STD值小于RMSE值。std函数中默认除数是(n-1),这里RMSE0计算时也是除以n-1。

所有测量结果的标准差为:
STD_all = std2(A);
结果为:STD_all = 5.1235

如果A数据作为总体样本的话,计算STD时应该除以n,matlab的std函数可以直接计算:
STD1 = std(A,1)
结果为:STD1 = 5.7155 3.2660 1.6330

如果数据中存在NAN值,统计时需要剔除这些NAN,
B = [
4 -5 3
2 3 5
nan -1 7
-9 nan nan];
STD0 = std(B,‘omitnan’)
结果为:STD0 = 7 4 2

猜你喜欢

转载自blog.csdn.net/SmartTiger_CSL/article/details/107018111