# stdDev is not correct

**URL:** <https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959>\
**Category:** Ignition\
**Created:** [March 10, 2020, 4:23am UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959 "2020-03-10T04:23:13Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Apisit\_Chuencharoen](https://avatars.discourse-cdn.com/v4/letter/a/9d8465/32.png) [@Apisit\_Chuencharoen](https://forum.inductiveautomation.com/u/Apisit_Chuencharoen)\
**Post date:** [March 10, 2020, 4:23am UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/1 "2020-03-10T04:23:13Z")

</div>

Hi,

I found stdDev expression function is not conform Ignition manual as pictured. I try to calculate this table on excel. And value is correct and conform Ignition manual. Could please check or suggest us to calculate stdDev?

 ![stdDev](https://us1.discourse-cdn.com/inductiveautomation/original/2X/f/ff732dc6c232dfbee7af55781faab6d44c056146.png)  
 ![stdDev2](https://us1.discourse-cdn.com/inductiveautomation/original/2X/2/24ef6ee6ef11f619c5a253c05b4eb1b3620f5303.png)

Thank you,

---

<div class="post-metadata">

**Author:** ![KathyApplebaum](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kathyapplebaum/32/7261_2.png) [@KathyApplebaum](https://forum.inductiveautomation.com/u/KathyApplebaum)\
**Post date:** [March 10, 2020, 2:48pm UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/2 "2020-03-10T14:48:05Z")

</div>

Thanks for catching that.

There are two kinds of standard deviation, population and sample. The 4.0053 answer is for population standard deviation and 3.4687 is for sample standard deviation. For most users, sample standard deviation is more appropriate.

---

<div class="post-metadata">

**Author:** ![Apisit\_Chuencharoen](https://avatars.discourse-cdn.com/v4/letter/a/9d8465/32.png) [@Apisit\_Chuencharoen](https://forum.inductiveautomation.com/u/Apisit_Chuencharoen)\
**Post date:** [March 10, 2020, 3:32pm UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/3 "2020-03-10T15:32:15Z")

</div>

Thank you for prompt response.

As you mentioned before, Is Ignition use sample standard deviation? Could you please double check for this?

![stDev2](https://us1.discourse-cdn.com/inductiveautomation/original/2X/1/10359240882369a854e48e89ae55e43d411268fe.png)  
 ![stDev](https://us1.discourse-cdn.com/inductiveautomation/original/2X/6/66fc89995775d8633d3e40b3ae86bb5c3607ac6a.png)

STDEV (n-1): [STDEV function - Office Support](https://support.office.com/en-us/article/stdev-function-51fecaaa-231e-4bbb-9230-33650a72c9b0?omkt=en-US&ui=en-US&rs=en-US&ad=US)

STDEV.P (n): [STDEV.P function - Office Support](https://support.office.com/en-us/article/stdev-p-function-6e917c05-31a0-496f-ade7-4f4e7462f285?omkt=en-001&ui=en-US&rs=en-001&ad=US)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 10, 2020, 3:48pm UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/4 "2020-03-10T15:48:20Z")

</div>

Yes, we’re using sample standard deviation. As calculated by:

```java
                public Double calculate(Dataset ds, int col) {
                    Double mean = super.calculate(ds, col);
                    if (mean == null) {
                        return null;
                    }
                    // std dev is the sqrt((sum of (x_i-mean)^2)/count)
                    int count = ds.getRowCount();
                    int realCount = 0;
                    double sum = 0;
                    for (int r = 0; r < count; r++) {
                        Number num = (Number) ds.getValueAt(r, col);
                        if (num != null) {
                            sum += Math.pow(num.doubleValue() - mean, 2);
                            realCount++;
                        }
                    }
                    if (realCount == 0) {
                        return null;
                    } else {
                        sum = sum / realCount;
                        return Math.sqrt(sum);
                    }
                }

```

---

<div class="post-metadata">

**Author:** ![Apisit\_Chuencharoen](https://avatars.discourse-cdn.com/v4/letter/a/9d8465/32.png) [@Apisit\_Chuencharoen](https://forum.inductiveautomation.com/u/Apisit_Chuencharoen)\
**Post date:** [March 10, 2020, 4:09pm UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/5 "2020-03-10T16:09:57Z")

</div>

// std dev is the sqrt((sum of (x\_i-mean)^2)/count) \>\> This is population stadard deviation. Is sample standard deviation /count-1 as pictured before?

[https://www.calculator.net/standard-deviation-calculator.html](https://www.calculator.net/standard-deviation-calculator.html)

 ![Cal1](https://us1.discourse-cdn.com/inductiveautomation/original/2X/b/b8bfb814646eec8f4d268edb849473edafd18b33.png)  
 ![Cal2](https://us1.discourse-cdn.com/inductiveautomation/original/2X/3/34adc1108b6436428892727e9392b581109e06d3.png)  
 ![Cal3](https://us1.discourse-cdn.com/inductiveautomation/original/2X/e/e2dd0edcaf45bf915922196a90769fb70f121992.png)

---

<div class="post-metadata">

**Author:** ![valet81](https://avatars.discourse-cdn.com/v4/letter/v/c77e96/32.png) [@valet81](https://forum.inductiveautomation.com/u/valet81)\
**Post date:** [May 12, 2020, 9:45am UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/6 "2020-05-12T09:45:10Z")

</div>

Hi Kathy,

is it not the other way round?  
Sample standard deviation should be 4.0053 and Population standard deviation 3.4687

I’m facing the same issue when I’m using the stddev() function, returning me the population one. (version 7.9.2)

Thank you.

Valerio

---

<div class="post-metadata">

**Author:** ![Sanderd17](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/sanderd17/32/8735_2.png) [@Sanderd17](https://forum.inductiveautomation.com/u/Sanderd17)\
**Post date:** [May 12, 2020, 1:28pm UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/7 "2020-05-12T13:28:30Z")

</div>

> [@KathyApplebaum](#):
>
> For most users, sample standard deviation is more appropriate.

You actually can't know that.

For some data, you have the complete population (f.e. when weighing bags, all bags of a production run are weighed and you can calculate the standard deviation on that run). For other data, you will be forced to sample (f.e. sampling a continious temperature measurement during an operation).

That said, I've never liked how statistics always seems to have annoying definitions like these, with seemingly random constants.

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [May 12, 2020, 2:25pm UTC](https://forum.inductiveautomation.com/t/stddev-is-not-correct/32959/8 "2020-05-12T14:25:48Z")

</div>

I agree, having both population and sample standard deviation functions available would be nice. It should be up to the user to determine which is useful.

> [@Sanderd17](#):
>
> That said, I’ve never liked how statistics always seems to have annoying definitions like these, with seemingly random constants.

You might find this interesting for your background knowledge: [Bessel's correction - Wikipedia](https://en.wikipedia.org/wiki/Bessel%27s_correction)
