浏览代码

fix:相关性指标

Roc 2 年之前
父节点
当前提交
5885a164cf
共有 1 个文件被更改,包括 18 次插入29 次删除
  1. 18 29
      services/chart/correlation/chart_info.go

+ 18 - 29
services/chart/correlation/chart_info.go

@@ -211,6 +211,10 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *chart_edb_mapping.C
 		}
 	}
 
+	// 计算窗口,不包含第一天
+	startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+	startDate = startDateTime.AddDate(0, 0, 1).Format(utils.FormatDate)
+
 	//// 2023-03-02 时间序列始终以指标B为基准, 始终是A进行平移
 	//baseEdbInfo := edbInfoMappingB
 	//changeEdbInfo := edbInfoMappingA
@@ -230,19 +234,6 @@ func GetChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *chart_edb_mapping.C
 		return
 	}
 
-	// 移除多余的一组数据(开始日期的数据不能用作计算)
-	{
-		divDay, tmpErr := utils.GetDaysBetween2Date(utils.FormatDate, endDate, startDate)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		lenAData := len(aDataList)
-		if lenAData > divDay {
-			aDataList = aDataList[lenAData-divDay:]
-		}
-	}
-
 	// 获取变频指标所有日期的值, 插值法完善数据
 	bDataList := make([]*edb_data.EdbDataList, 0)
 	switch changeEdbInfo.EdbInfoCategoryType {
@@ -371,6 +362,10 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 	xDateTimeValue = make([]string, 0)
 	yData := make([]float64, 0)
 
+	// 计算窗口,不包含第一天
+	startDateTime, _ := time.ParseInLocation(utils.FormatDate, startDate, time.Local)
+	startDate = startDateTime.AddDate(0, 0, 1).Format(utils.FormatDate)
+
 	baseEdbInfo := edbInfoMappingA
 	changeEdbInfo := edbInfoMappingB
 
@@ -386,19 +381,6 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 		return
 	}
 
-	// 移除多余的一组数据(开始日期的数据不能用作计算)
-	{
-		divDay, tmpErr := utils.GetDaysBetween2Date(utils.FormatDate, endDate, startDate)
-		if tmpErr != nil {
-			err = tmpErr
-			return
-		}
-		lenAData := len(aDataList)
-		if lenAData > divDay {
-			aDataList = aDataList[lenAData-divDay:]
-		}
-	}
-
 	// 获取变频指标所有日期的值, 插值法完善数据
 	bDataList := make([]*edb_data.EdbDataList, 0)
 	switch changeEdbInfo.EdbInfoCategoryType {
@@ -456,8 +438,15 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 			// 取出对应的基准日期的值
 			for i := 0; i < calculateDay; i++ {
 				iDay := currDay.AddDate(0, 0, i).Format(utils.FormatDate)
-				baseCalculateData = append(baseCalculateData, baseDataMap[iDay])
-				yCalculateData = append(yCalculateData, changeDataMap[iDay])
+
+				tmpBaseValue, ok1 := baseDataMap[iDay]
+				tmpChangeValue, ok2 := changeDataMap[iDay]
+				if ok1 && ok2 {
+					baseCalculateData = append(baseCalculateData, tmpBaseValue)
+					yCalculateData = append(yCalculateData, tmpChangeValue)
+				} else {
+					continue
+				}
 			}
 
 			// 公式计算出领先/滞后频度对应点的相关性系数
@@ -466,7 +455,7 @@ func GetRollingCorrelationChartDataByEdbInfo(edbInfoMappingA, edbInfoMappingB *c
 				ratio = utils.CalculateCorrelationByIntArr(baseCalculateData, yCalculateData)
 			}
 			yData = append(yData, ratio)
-			xDateTimeValue = append(xDateTimeValue, currDay.AddDate(0, 0, calculateDay).Format(utils.FormatDate))
+			xDateTimeValue = append(xDateTimeValue, currDay.AddDate(0, 0, calculateDay-1).Format(utils.FormatDate))
 		}
 	}