/** * 数据封装二维数组并调用计算两个二维数组协方差的方法 */@Overridepublic double[][] selectCovariance(int i) { double[][] allList1 = new double[45][]; double[][] allList2 = new double[45][]; //======================时间计算========================= Calendar cal = Calendar.getInstance(); Date now = cal.getTime(); //当前时间减1天 为查询结束时间 cal.add(Calendar.DATE, -1); Date endDate = cal.getTime(); //当前时间减i天 为开始查询时间 cal.add(Calendar.DATE, -i); Date benginDate = cal.getTime(); //格式化日期 String endDateString = dateFormat.format(endDate); String benginDateString = dateFormat.format(benginDate); //======================================================== //查询出所有的行业因子名称 Listindustrys = ipbFactorRateMapper.selectIndustry(); for (int j=0;j bigList = ipbFactorRateMapper.selectCovariance(industrys.get(j),benginDateString, endDateString); double[] array = new double[bigList.size()]; for(int v = 0; v
下面这是用的myBatis的sql
具体理解可以看这个公式:
Cov (X,Y) = E(X*Y) − E(X)*E(Y)
E的意思是求均值。
X为一个因子的126个数据,E(X)为X的均值。
Y是另一个因子的126个数据,E(Y)为Y的均值。
把对应的126个X和126个Y相乘,得到第三组数据有126个,对第三组数据求均值,得到E(X*Y)。