Sfoglia il codice sorgente

fix:相关系数计算调整,相同值的情况下,需要直接返回1

Roc 1 anno fa
parent
commit
e748cfcb2c
1 ha cambiato i file con 5 aggiunte e 0 eliminazioni
  1. 5 0
      utils/calculate.go

+ 5 - 0
utils/calculate.go

@@ -88,6 +88,11 @@ func ComputeCorrelation(sList []Coordinate) (r float64) {
 		varYDeci = varYDeci.Add(diffYYbarDeci.Mul(diffYYbarDeci))
 		//varY += diffYYbar ** 2
 	}
+	//当输入的两个数组完全相同时,计算相关系数会导致除以零的操作,从而产生 NaN(Not a Number)的结果。为了避免这种情况,可以在计算相关系数之前先进行一个判断,如果两个数组的标准差为零,则相关系数应为1
+	if varXDeci.IsZero() && varYDeci.IsZero() {
+		r = 1
+		return
+	}
 	sqrtVal, _ := varXDeci.Mul(varYDeci).Round(4).Float64()
 	//fmt.Println("sqrtVal:", sqrtVal)
 	sst := math.Sqrt(sqrtVal) // 平方根