2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 峰度(kurtosis)的c/c++实现

峰度(kurtosis)的c/c++实现

时间:2020-05-20 19:54:10

相关推荐

峰度(kurtosis)的c/c++实现

峰度:随机变量在均值附近的相对平坦程度或峰值程度,以正态分布为界,峰度值为0,如比正态分布陡,峰度值大于0,否则小于0.

以下为c++实现:

#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);//倾斜度//求中心矩yfor (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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。