我在一个C应用程序上使用GSL库1.15,我对计算数据集的偏斜感兴趣。理论:

根据matlab,应将其翻译为:

在我看来,gsl专用函数gsl_stats_skew的输出返回错误的结果。考虑到以下代码:
const double array[] = { 2.5, 3.7, 6.6, 9.1, 9.5, 10.7, 11.9, 21.5, 22.6, 25.2 };
const skewness = gsl_stats_skew(array, 1, 10);
printf("result : %f\n", skewness);F 214
我遗漏了什么?
发布于 2021-03-05 09:25:32
原因是有不同的方法来实现偏斜函数,特别是:
来计算的。
下面是我的偏置版本的C实现,希望它能有所帮助:
double skewness(const double elements[], const int numElements){
const double media = gsl_stats_mean(elements, 1, numElements);
const double stDev = gsl_stats_sd_with_fixed_mean(elements, 1, numElements, media); // use 1/N normalization factor instead of 1/(N-1)
double sum_numerator=0;
for(int i=0; i<numElements; i++) sum_numerator += pow((elements[i] - media),3);
const double numerator = sum_numerator / numElements;
const double denominator = pow(stDev,3);
return numerator / denominator; }https://stackoverflow.com/questions/66437110
复制相似问题