加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

c#计算Sigma值

(2013-04-15 17:20:37)
ORACLE 有varince函数可以求极方差,很方便。
但是如果是大量的计算,最好是放地本来计算。

下面代码在程序里计算

1sigma通常叫标准差,计算公式为:

c#计算Sigma值,其中c#计算Sigma值5点的平均值,c#计算Sigma值Mean值,即:所有((五点值的平均值)-Mean)的平方)/Count(五点值的平均值)-1)再开平方。

(先求差值的平方,再求和,再除以n-1,最后开平方根)

 

2Ca :(Mean-(USL+LSL)/2)/(USL-LSL)/2,其中(USL+LSL/2为规格中心值;

 

 

 

 

Mean:所有(五点值的平均值)的平均值

Sigma:方差,所有((((五点值的平均值)-Mean)的平方)求和/Count(五点值的平均值)-1)再开平方

Cp :(USL-LSL)/(6*Sigma)

Cpu:(USL-Mean)/(3*Sigma)

Cpl:(Mean-LSL)/(3*Sigma)

Cpk:Min(Cpu,Cpl)

//Ca :(Sigma-(USL-LSL)/2)/(USL-LSL)/2

Ca :(Mean-(USL+LSL)/2)/(USL-LSL)/2,其中(USL+LSL/2为规格中心值;

 

  ///

        /// Sigma/cp/cpk值等等

        ///

        ///

        ///

        private double getSigma(DataTable dt, string colName,out double mean)

        {

            //,其中为5点的平均值,及Mean值,即:所有((五点值的平均值)-Mean)的平方)/Count(五点值的平均值)-1)再开平方。(先求差值的平方,再求和,再除以n-1,最后开平方根)

            if (dt.Rows.Count < 2)

            {

                //两条数据以上才存在sigma

                mean = 0;

                return 0;                

            }

            //求出此组数据的平均值先

            double agv = 0;

            foreach (DataRow dr in dt.Rows)

            {

                agv = agv + (double)(dr[colName]);

            }

            agv = agv / dt.Rows.Count;

            mean = agv;

            //求平方和

            double sqlare = 0;

            foreach (DataRow dr in dt.Rows)

            {

                sqlare = sqlare + ((double)(dr[colName]) - agv) * ((double)(dr[colName]) - agv);

            }

            //variance

            sqlare = sqlare / (dt.Rows.Count - 1);

 

            double sigma = Math.Pow(sqlare, 0.5);

 

            return sigma;

        }


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有