方差与标准差的意义
1、方差的意义在于反映了一组数据与其平均值的偏离程度。
2、方差是衡量随机变量或一组数据时离散程度的度量。
概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。
统计中的方差(样本方差)是各个数据分别与其平均数之差的平方的和的平均数
3、方差的特性在于:方差是和中心偏离的程度,用来衡量一批数据的波动大小(即这批数据偏离平均数的大小)并把它叫做这组数据的方差。 在样本容量相同的情况下,方差越大,说明数据的波动越大,越不稳定。
4、标准差是方差的算术平方根,意义在于反映一个数据集的离散程度。
5、平均值相同的两组数据,标准差未必相同。
6、在真实世界中,除非在某些特殊情况下,不然找到一个总体真实的标准差是不现实的。大多数情况下,总体标准差是通过随机抽取一定量的样本并计算样本标准差估计的。
示例
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
pair<double, double> calVarStdev(vector<int> vecNums)//均值、方差和标准差计算
{
pair<double, double> res;
double sumNum = accumulate(vecNums.begin(), vecNums.end(), 0.0);
double mean = sumNum / vecNums.size(); //均值
double accum = 0.0;
for_each(vecNums.begin(), vecNums.end(), [&](const double d) {
accum += (d - mean)*(d - mean);
});
double variance = accum / vecNums.size(); //方差
double stdev = sqrt(variance); //标准差
cout << "均值:" << mean << endl << "方差:" << variance << endl << "标准差:" << stdev << endl;
res.first = variance;
res.second = stdev;
return res;
}
int main()
{
pair<double, double> res;
vector<int> vecNums;
vecNums.push_back(1);
vecNums.push_back(3);
vecNums.push_back(5);
vecNums.push_back(7);
vecNums.push_back(9);
/*vecNums.push_back(5);
vecNums.push_back(5);
vecNums.push_back(5);
vecNums.push_back(5);
vecNums.push_back(5);*/
cout << "输入数据为:" << endl;
for (int i = 0; i < vecNums.size(); i++)
{
if (i != vecNums.size() - 1)
cout << vecNums[i] << ",";
else
cout << vecNums[i] << endl;
}
cout << "输出结果为:" << endl;
res = calVarStdev(vecNums);
system("pause");
return 0;
}
运行结果