summaryStatistics = T.tidy(
dataLong,
T.groupBy(
"set",
T.summarize({
yMean: T.mean("y"),
xMean: T.mean("x"),
yMean: T.mean("y"),
xVariance: T.variance("x"),
yVariance: T.variance("y"),
correlation: (subset) =>
ss.sampleCorrelation(
subset.map((item) => item.x),
subset.map((item) => item.y)
),
regressionM: (subset) =>
ss.linearRegression(subset.map((item) => [item.x, item.y])).m,
regressionB: (subset) =>
ss.linearRegression(subset.map((item) => [item.x, item.y])).b,
rSquared: (subset) => {
const samples = subset.map((item) => [item.x, item.y]);
const regressionLine = ss.linearRegressionLine(
ss.linearRegression(samples)
);
return ss.rSquared(samples, regressionLine);
}
})
)
)