2.1.24.4.37 ocmath_percentiles
Description
Function to compute percentiles (vector) for the vectors passing the percents and data.
Syntax
int ocmath_percentiles( const double * pData, const int nSize, const double * pPercents, const int nPercentSize, double * pPercentiles, int nInterpolate = INTERPOLATE_WEIGHT_AVER_RIGHT, const double * pWeight = NULL )
Parameters
- pData
- [input] pointer to data on which percentiles are computed
- nSize
- [input] value of size of pData.
- pPercents
- [input] pointer to percents for which percentiles are computed
- nPercentSize
- [input] value of size of percents to be computed
- pPercentiles
- [output] pointer containing percentiles (results)
- nInterpolate
- [input] Optional input indicating interpolation type, possible values include:
- INTERPOLATE_WEIGHT_AVER_RIGHT(Default) Weighted average aimed at x(n + 1) p
- INTERPOLATE_WEIGHT_AVER_LEFT Weighted average aimed at xnp
- INTERPOLATE_NEAREST_NEIGHBOR Observation numbered closest to np
- INTERPOLATE_EDF Empirical distribution function
- INTERPOLATE_EDF_AVER Empirical distribution function with averaging
- pWeight
- [input] Optional input of weight. if observations have identical weights, the weighted percentiles are the same as unweighted percentile with nInterpolate == INTERPOLATE_EDF_AVER.
Return
Returns STATS_NO_ERROR on successful exit and a non-zero STATS error code on failure.
Examples
void ocmath_percentiles_ex1()
{
//--- Input data and percents for calculate the percentiles
int nDataSize = 11; // odd number of data points
// vector vData(nDataSize);
vector vData={1.0,1.0,2.0,3.0,3.0,3.0,5.0,6.0,7.0,8.0,9.0};
int nPercents = 3;
// vector vPercents(nPercents);
vector vPercents = {50,70,80}; // 50%, 70% percents etc
// The way to calculate the percentiles
int nInterpolateType = INTERPOLATE_EDF;
//--- Output vector to store the percentiles
vector vPercentiles(nPercents);
//--- Calculate the percentiles
ocmath_percentiles(vData,nDataSize,vPercents,nPercents,vPercentiles,nInterpolateType);
//--- Print and show the percentiles
printf("\n");
for(int i=0; i<nPercents; i++)
{
printf("%f ", vPercentiles[i]);
}
printf("\n");
// For 50% percent, the corresponding returned element in percentiles vector is equal to the median value of the data vector
// Expected result: 3.0 6.0 7.0
}
Remark
See Also
Header to Include
origin.h
Reference
|