Calculating standard deviation of the sample not the population-Error The value entered does not match the format of the field [StdDev4]
Follow up onneed a custom calculation script to calculate standard deviation since I posted there and didn't get a response
I need to calculate the standard deviation of the sample not the population so how do I change the document JavaScript? Also, when I don't have any variation in my 10 values, I get a warning: JavaScript Window that says The value entered does not match the format of the field [StdDev4]
Here are the Document JavaScripts
Fields:
function GetField(oDoc, cField)
{
var oField = oDoc.getField(cField);
if(oField == null)
{
app.alert("Error accessing field \"" + cField + "\"!", 1, 0)
}
return oField;
}
StdDev:
function standardDeviation(values)
{
// compute the standard deviation from an array of vlaues;
// compute the average of the vaues;
var stdDev = "";
var avg = average(values);
if(avg != "")
{
// compute the squared difference of the values and the average;
var squareDiffs = values.map(function(value){
var diff = value - avg;
var sqrDiff = diff * diff;
return sqrDiff;
});
// average the squared differences;
var avgSquareDiff = average(squareDiffs);
stdDev = Math.sqrt(avgSquareDiff);
} // end avg not null;
return stdDev;
}
function average(data)
{
// compute the average of an array of values;
//sum the values in the array;
var sum = data.reduce(function(sum, value){
return sum + value;
}, 0);
// compute the average of the sum of the values if number of array elements is not 0;
var avg = '';
if(data.length > 0)
{
var avg = sum / data.length;
}
return avg;
}
function sum(value)
{
// sum an array of values;
var Sum = value.reduce(function(Sum, value){
return Sum + value;
}, 0);
return Sum;
}
Custom Calculation Script:
var MyValues = new Array();
var MyFields = new Array("AdjustedResult5.1", "AdjustedResult5.2","AdjustedResult5.3", "AdjustedResult5.4", "AdjustedResult5.5", "AdjustedResult5.6", "AdjustedResult5.7", "AdjustedResult5.8", "AdjustedResult5.9", "AdjustedResult5.10" );
var oField;
var nField;
for(var i = 0; i < MyFields.length; i++)
{
nField = '';
nField = GetField(this, MyFields).valueAsString;
if(nField != "") MyValues.push(Number(nField));
}
event.value = standardDeviation(MyValues);
--------------------------------------------------------------------------------------------------------------------
I have also tried this for the standard deviation of the sample:
var Ravg = Number(this.getField("AvgAdjResult.1.0").valueAsString);
var Rsum = 0;
var Rn = 0;
for (var i=1; i<=10; i++) {
var Rv = this.getField("AdjustedResult1."+i).valueAsString;
if (Rv!="") {
Rsum+=Math.pow((Number(Rv)-Ravg),2);
Rn++;
}
}
if (Rn==0 || Rn==1) event.value = "";
else event.value = Math.sqrt(Rsum / (Rn-1));
However, I want the cell to stay blank unless there is an average calculated. Also we have low variability in our 10 replicates so the standard deviation can be zero, but I get the error mentioned above: The value entered does not match the format of the field [StdDev4] because it doesn't like to take the square root of zero. How do I make this error disappear, but the cell still have a numeric value of 0.000000?
I tried changing it to this:
var Ravg = Number(this.getField("AvgAdjResult.1.0").valueAsString);
var Rsum = 0;
var Rn = 0;
for (var i=1; i<=10; i++) {
var Rv = this.getField("AdjustedResult1."+i).valueAsString;
if (Rv!="") {
Rsum+=Math.pow((Number(Rv)-Ravg),2);
Rn++;
}
}
var b = +getField("Result1.10").value;
var c = Rsum / (Rn-1);
if (b==0) event.value = "";
else if (c==0) event.value = 0.000000;
else event.value = Math.sqrt (c);
but then I don't get a result at all.
Field names are shown in bold below and an example of the data is below as well
| Barometric Pressure (mm/Hg) | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | Result 6 | Result 7 | Result 8 | Result 9 | Result 10 | Average of Adjusted Results | Standard Deviationof Adj Results | %RSD for dry gas standard | Standard Uncertainty | Expanded Uncertainty 99%, k=3.25 | UoM g/210L | |
| mmHg | Actual | Result1.1 | Result1.2 | Result1.3 | Result1.4 | Result1.5 | Result1.6 | Result1.7 | Result1.8 | Result1.9 | Result1.10 | AvgAdjResult.1.0 | StdDev1 | RSD1 | StdUnc1 | ExpUnc1 | UoM1 |
| Adjusted* | AdjustedResult1.1 | AdjustedResult1.2 | AdjustedResult1.3 | AdjustedResult1.4 | AdjustedResult1.5 | AdjustedResult1.6 | AdjustedResult1.7 | AdjustedResult1.8 | AdjustedResult1.9 | AdjustedResult1.10 |
| Barometric Pressure (mm/Hg) | Result 1 | Result 2 | Result 3 | Result 4 | Result 5 | Result 6 | Result 7 | Result 8 | Result 9 | Result 10 | Average of Adjusted Results | Standard Deviation of Adj Results | %RSD for dry gas standard | Standard Uncertainty | Expanded Uncertainty 99%, k=3.25 | UoM g/210L | |
| 752 | Actual | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.000000 | 0.000000 | 0.000000 | 3.447146 | 0.001 |
| Adjusted* | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | 0.018 | |||||||
| 752 | Actual | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.000000 | 0.000000 | 0.000000 | 3.447146 | 0.001 |
| Adjusted* | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | 0.036 | |||||||
| 752 | Actual | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.081 | 0.000000 | 0.000000 | 0.000000 | 3.447146 | 0.003 |
| Adjusted* | 0.082 | 0.082 | 0.082 | 0.082 | 0.082 | 0.082 | 0.082 | 0.082 | 0.082 | 0.082 | |||||||
| 752 | Actual | 0.148 | 0.149 | 0.149 | 0.149 | 0.148 | 0.148 | 0.148 | 0.148 | 0.148 | 0.148 | 0.149 | 0.000488 | 0.327641 | 0.036405 | 3.449175 | 0.005 |
| Adjusted* | 0.150 | 0.151 | 0.151 | 0.151 | 0.150 | 0.150 | 0.150 | 0.150 | 0.150 | 0.150 | |||||||
| 752 | Actual | 0.297 | 0.297 | 0.297 | 0.297 | 0.297 | 0.297 | 0.296 | 0.296 | 0.296 | 0.296 | 0.299 | 0.000522 | 0.174546 | 0.019394 | 3.447722 | 0.010 |
| Adjusted* | 0.300 | 0.300 | 0.300 | 0.300 | 0.300 | 0.300 | 0.299 | 0.299 | 0.299 | 0.299 |
