Skip to content

Instantly share code, notes, and snippets.

@sjhalayka
Last active October 21, 2018 22:26
Show Gist options
  • Save sjhalayka/4f5761a957676d6564e0965e2777a095 to your computer and use it in GitHub Desktop.
Save sjhalayka/4f5761a957676d6564e0965e2777a095 to your computer and use it in GitHub Desktop.
C++
float mean(const vector<float> &src)
{
float m = 0;
float size = static_cast<float>(src.size());
for (size_t i = 0; i < src.size(); i++)
m += src[i];
m /= size;
return m;
}
float standard_deviation(const vector<float> &src)
{
float m = mean(src);
float size = static_cast<float>(src.size());
float sq_diff = 0;
for (size_t i = 0; i < src.size(); i++)
{
float diff = src[i] - m;
sq_diff += diff*diff;
}
sq_diff /= size;
return sqrtf(sq_diff);
}
float variance(const vector<float> &src)
{
float s = standard_deviation(src);
return s*s;
}
// https://www.itl.nist.gov/div898/handbook/eda/section3/eda35b.htm
float skewness(const vector<float> &src)
{
float m = mean(src);
float s = standard_deviation(src);
float size = static_cast<float>(src.size());
float cube_diff = 0;
for (size_t i = 0; i < src.size(); i++)
{
float diff = src[i] - m;
cube_diff += diff*diff*diff;
}
cube_diff /= size;
cube_diff /= s*s*s;
return cube_diff;
}
// https://www.itl.nist.gov/div898/handbook/eda/section3/eda35b.htm
float kurtosis(const vector<float> &src)
{
float m = mean(src);
float s = standard_deviation(src);
float size = static_cast<float>(src.size());
float fourth_diff = 0;
for (size_t i = 0; i < src.size(); i++)
{
float diff = src[i] - m;
fourth_diff += diff*diff*diff*diff;
}
fourth_diff /= size;
fourth_diff /= s*s*s*s;
fourth_diff -= 3.0f;
return fourth_diff;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment