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>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user