• 大小: 1KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-11
  • 语言: C#
  • 标签: 计算  相关系数  C#  源码  

资源简介

计算相关系数 标准差 离散系数 均值 计算相关系数的相关静态方法,包括求均值,标准差,相关系数,离散系数,预警区间

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace HUBU.Statistics
{
    /// 
    /// 求相关系数的相关静态方法,包括求均值,标准差,相关系数,离散系数,预警区间
    /// 

    public static class Correlation
    {

        /// 
        /// 获取均值,求传入数组的算数均值
        /// 

        public static double GetAverage(double[] data)
        {
            int len = data.Length;

            if (len == 0)
                throw new Exception(“No data“);

            double sum = 0;

            for (int i = 0; i < data.Length; i++)
                sum += data[i];

            return sum / len;
        }

        /// 
        /// 获取标准差,求传入数组的标准差
        /// 

        public static double GetStdev(double[] data)
        {
            // return Math.Sqrt(GetVariance(data));
            double x2 = 0;
            double sumx = 0;
            int n = data.Length;
            foreach (double d in data)
            {
                x2 += d * d;
                sumx += d;
            }
            return Math.Sqrt((x2 * n - sumx * sumx) / (n*(n-1)));
        }

        /// 
        /// 求两列数据的相关系数
        /// 

        public static double GetCorrelation(double[] x double[] y)
        {
            if (x.Length != y.Length)
                throw new Exception(“Length of sources is different“);
            double avgX = 0;
            double avgY = 0;
            double sumx = 0;
            double sumy = 0;
            double xy = 0;
            double x2 = 0;
            double y2 = 0;
            int len = x.Length;
            for (int i = 0; i < len; i++)
            {
                sumx += x[i];
                sumy += y[i];
                xy += x[i] * y[i];
                x2 += x[i] * x[i];
                y2 += y[i] * y[i];
            }
            avgX = sumx/len;
            avgY =sumy/len;
            double exy = xy / len;
            double exey = avgX * avgY;
            double ex2 = x2 / len;
            double e2x = avgX * avgX;
            double ey2 = y2 / len;
            double e2y = avgY * avgY;
            double fm1= Math.Sqrt(ex2 - e2x) ;
            double fm2 =Math.Sqrt(ey2 - e2y);
            return (exy - exey) / (fm1 * fm2);
        }

        /// 
        /// 获取离散系数,求传入数组的标准差/均值即离散系数。
        /// 

        /// 
        /// 
        public static double GetCoefficientofVariation(double[] x)
        {
            double x2 = 0;
            double sumx = 0;
            int n = x.Length;
            foreach (double d in x)
            {
                x2 += d * d;
                sumx += d;
            }
            return Math.Sqrt((x2 * n - sumx * sumx) / (n * (n - 1))) / (sumx/n);
        }
        
        /// 
        /// 获取预警区间,(均值-标准差,均值+标准差)
        /// 

        /// 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        3838  2010-08-24 13:25  Correlation.cs

评论

共有 条评论