在概率论中期望,方差等是基础知识点,下面简单介绍一下个人所理解的几点及实现过程,如有错误之处请指出,仅供学习参考。
转载请注明出处。
1.分布函数
2.概率密度函数
直意为对分布函数的求导,数学公式如下,
3.数学期望
式1表示为离散的,2为连续。
4.矩(moments)
5.方差与矩的关系
方差主要表示随机变量围绕中心值的散布程度。
6.倾斜度(skewness)
表示随机变量与中心分布的不对称程度,向右倾斜,值为正,向左值为负。
7.峰度(kurtosis)
随机变量在均值附近的相对平坦程度或峰值程度,以正态分布为界,峰度值为0,如比正态分布陡,峰度值大于0,否则小于0.
代码实现如下:
仅供参考学习。
#include<iostream>
using namespace std;
int main()
{
//自定义一个数集,用数组a存储
int a[10] = {1,2,2,6,8,8,2,15,20,8};
int b[10];
int count;
double exp = 0.0;//期望
double sum1 = 0.0, sum2 = 0.0;
double y=0.0;//中心矩
for (int i = 0; i < 10;i++)
{
b[i] = -1;
}
for (int i = 0; i < 10;i++)
{
count = 1;
for (int j = i + 1; j < 10; j++)
{
if (a[i] == a[j])
{
b[j] = 0;
count++;
}
}
if (b[i] != 0)
{
b[i] = count;
}
}
//输出每个数出现的次数
for (int i = 0; i < 10;i++)
{
if (b[i] != 0)
{
//cout << a[i] <<" "<< b[i] << endl;
//期望
exp += a[i] * (b[i] / 10.0);
}
}
printf("期望exp=%.2f\n",exp);
//传统方法:方差
for (int i = 0; i < 10;i++)
{
sum1 += (a[i] - exp)*(a[i] - exp);
}
double var1 = sum1 / 10.0;
printf("方差var1=%.2f\n",var1);
//非传统方法:方差
for (int i = 0; i < 10;i++)
{
sum2 += (a[i] * a[i])*(b[i] / 10.0);
}
double var2 = sum2 - (exp*exp);
printf("方差var2=%.2f\n", var2);
//倾斜度
//求中心矩y
for (int i = 0; i < 10;i++)
{
y += ((a[i] - exp)*(a[i] - exp)*(a[i] - exp))*(b[i]/10.0);
}
double skew = y / (sqrt(var2)*var2);
printf("倾斜度skew=%.2f\n",skew);
//峰度
for (int i = 0; i < 10; i++)
{
y += ((a[i] - exp)*(a[i] - exp)*(a[i] - exp)*(a[i] - exp))*(b[i] / 10.0);
}
double kurt = (y / (var2*var2)) - 3;
printf("峰度kurt=%.2f\n",kurt);
system("pause");
return 0;
}