C++ 数据的方差计算【均值、方差&标准差】

方差与标准差的意义

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;
}

运行结果

  

猜你喜欢

转载自blog.csdn.net/Gary_ghw/article/details/126538007