Files
fn_registry/functions/datascience/pearson.go
egutierrez fc734029c1 feat: 15 funciones datascience — estadística, DSP e IO de datos
12 funciones puras con implementación real:
Standardize, MinMaxScale, Clip, RollingWindow, ZipSlices, GroupBy,
Histogram, Pearson, Autocorrelation, FFT (Cooley-Tukey), DetectOutliers, Impute

3 funciones impuras (stubs):
LoadCSV, LoadParquet, FetchDataFrame

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 02:23:36 +01:00

40 lines
748 B
Go

package datascience
import "math"
// Pearson calcula el coeficiente de correlación de Pearson entre dos slices.
// Si los slices tienen distinta longitud, usa la longitud mínima.
// Retorna 0 si alguna desviación estándar es 0.
func Pearson(xs, ys []float64) float64 {
n := len(xs)
if len(ys) < n {
n = len(ys)
}
if n == 0 {
return 0
}
var sumX, sumY float64
for i := 0; i < n; i++ {
sumX += xs[i]
sumY += ys[i]
}
meanX := sumX / float64(n)
meanY := sumY / float64(n)
var num, denomX, denomY float64
for i := 0; i < n; i++ {
dx := xs[i] - meanX
dy := ys[i] - meanY
num += dx * dy
denomX += dx * dx
denomY += dy * dy
}
denom := math.Sqrt(denomX * denomY)
if denom == 0 {
return 0
}
return num / denom
}