Files
freeCodeCamp/curriculum/challenges/ukrainian/10-coding-interview-prep/rosetta-code/cumulative-standard-deviation.md
2022-10-18 12:59:49 +05:30

3.1 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5a23c84252665b21eecc7e03 Сукупне стандартне відхилення 1 302240 cumulative-standard-deviation

--description--

Suppose that the entire population of interest is eight students in a particular class. For a finite set of numbers, the population standard deviation is found by taking the square root of the average of the squared deviations of the values subtracted from their average value. The marks of a class of eight students (that is, a statistical population) are the following eight values:

2, 4, 4, 4, 5, 5, 7, 9

These eight data points have the mean (average) of 5:

\mu ={\frac {2+4+4+4+5+5+7+9}{8}}={\frac {40}{8}}=5

First, calculate the deviations of each data point from the mean, and square the result of each:

Deviations of each data Square the result
(2-5)^{2}=(-3)^{2}=9 (5-5)^{2}=0^{2}=0
(4-5)^{2}=(-1)^{2}=1 (5-5)^{2}=0^{2}=0
(4-5)^{2}=(-1)^{2}=1 (7-5)^{2}=2^{2}=4
(4-5)^{2}=(-1)^{2}=1 (9-5)^{2}=4^{2}=16

The variance is the mean of these values:

\sigma ^{2}={\frac {9+1+1+1+0+0+4+16}{8}}={\frac {32}{8}}=4

and the population standard deviation is equal to the square root of the variance:

\sigma ={\sqrt {4}}=2

Write a function that takes an array of numbers as parameter and returns the standard deviation of the series.

--hints--

standardDeviation має бути функцією.

assert(typeof standardDeviation == 'function');

standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) має повертати число.

assert(typeof standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) == 'number');

standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]) має повертати 2.

assert.equal(standardDeviation([2, 4, 4, 4, 5, 5, 7, 9]), 2);

standardDeviation([600, 470, 170, 430, 300]) має повертати 147.323.

assert.equal(standardDeviation([600, 470, 170, 430, 300]), 147.323);

standardDeviation([75, 83, 96, 100, 121, 125]) має повертати 18.239.

assert.equal(standardDeviation([75, 83, 96, 100, 121, 125]), 18.239);

standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]) має повертати 16.87.

assert.equal(
  standardDeviation([23, 37, 45, 49, 56, 63, 63, 70, 72, 82]),
  16.87
);

standardDeviation([271, 354, 296, 301, 333, 326, 285, 298, 327, 316, 287, 314]) має повертати 22.631.

assert.equal(
  standardDeviation([
    271,
    354,
    296,
    301,
    333,
    326,
    285,
    298,
    327,
    316,
    287,
    314
  ]),
  22.631
);

--seed--

--seed-contents--

function standardDeviation(arr) {

}

--solutions--

function standardDeviation(arr) {
  var sum = 0,
    sum_sq = 0,
    n = arr.length;
  arr.forEach(function(e) {
    sum += e;
    sum_sq += e * e;
  });

  var std_dev = Math.sqrt(sum_sq / n - Math.pow(sum / n, 2));
  return Math.round(std_dev * 1000) / 1000;
}