build(deps-dev): apply updates
[e-mobility-charging-stations-simulator.git] / src / utils / StatisticUtils.ts
index f0bd1f28bbc789500e3b0ae41c966dbf9f3ac241..2ff71b0acb2ffa897a5d07f0e7bcd18719314903 100644 (file)
@@ -64,12 +64,27 @@ export const nthPercentile = (dataSet: number[], percentile: number): number =>
   return sortedDataSet[percentileIndexInteger];
 };
 
+/**
+ * Computes the sample standard deviation of the given data set.
+ *
+ * @param dataSet - Data set.
+ * @param dataSetAverage - Average of the data set.
+ * @returns The sample standard deviation of the given data set.
+ * @see https://en.wikipedia.org/wiki/Unbiased_estimation_of_standard_deviation
+ * @internal
+ */
 export const stdDeviation = (
   dataSet: number[],
   dataSetAverage: number = average(dataSet),
 ): number => {
+  if (isEmptyArray(dataSet)) {
+    return 0;
+  }
+  if (Array.isArray(dataSet) && dataSet.length === 1) {
+    return 0;
+  }
   return Math.sqrt(
     dataSet.reduce((accumulator, num) => accumulator + Math.pow(num - dataSetAverage, 2), 0) /
-      dataSet.length,
+      (dataSet.length - 1),
   );
 };