using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GXFlowSynchronizer
{
public class ThreeTimesVariance
{
public void start(){
LogHelper.Write("开始进行三倍标准差验证");
List<double> doutcLevel = (from m in curList select (double)m.waterLevel).ToList();//数据来源
double tcLevel = ttv.CalculateStdDev(doutcLevel);//调用标准方差算法
double uclLevel = doutcLevel.Average() + (3 * tcLevel);//管制上限 (3 * tcLevel) 三倍方差 如5*tcLevel 就是5倍方差
double lclLevel = doutcLevel.Average() - (3 * tcLevel);//管制下限 再上限下限之外的数为异常应剔除
}
public double CalculateStdDev(IEnumerable<double> values)
{
double ret = 0;
if (values.Count() > 0)
{
// 计算平均数
double avg = values.Average();
// 计算各数值与平均数的差值的平方,然后求和
double sum = values.Sum(d => Math.Pow(d - avg, 2));
// 除以数量,然后开方
ret = Math.Sqrt(sum / values.Count());
}
return ret;
}
}
}
三倍方差计算
最新推荐文章于 2021-07-30 10:26:20 发布