TimescaleDB API 参考超函数统计和回归分析

Timescale Cloud:性能、规模、企业级

自托管产品

MST

介绍

在二维数据上执行线性回归分析,例如计算相关系数和协方差。你也可以对每个维度分别计算常见的统计量,如平均值和标准差。这些函数与 PostgreSQL 统计聚合 类似,但它们包含更多功能,并且更易于在连续聚合和窗口函数中使用。线性回归基于标准的最小二乘拟合方法。

这些函数作用于二维数据。要处理一维数据,例如计算单个变量的平均值和标准差,请参阅一维 stats_agg 函数

相关超函数组

聚合

stats_agg(双变量)
将数据聚合为中间统计聚合形式以供进一步计算

访问器

average_y, average_x
计算指定维度上二维统计聚合的平均值
corr
计算二维统计聚合的相关系数
covariance
计算二维统计聚合的协方差
determination_coeff
计算二维统计聚合的决定系数
intercept
计算二维统计聚合的截距
kurtosis_y, kurtosis_x
计算指定维度上二维统计聚合的峰度
num_vals
计算二维统计聚合中的值数量
skewness_y, skewness_x
计算指定维度上二维统计聚合的偏度
slope
计算二维统计聚合的斜率
stddev_y, stddev_x
计算指定维度上二维统计聚合的标准差
sum_y, sum_x
计算指定维度上二维统计聚合的总和
variance_y, variance_x
计算指定维度上二维统计聚合的方差
x_intercept
计算二维统计聚合的 x 轴截距

汇总

rolling
结合多个二维统计聚合以计算滚动窗口聚合
rollup
结合多个二维统计聚合
stats_agg(
y DOUBLE PRECISION,
x DOUBLE PRECISION
) RETURNS StatsSummary2D

这是对二维数据执行任何统计聚合计算的第一步。使用 stats_agg 从您的数据创建中间聚合 (StatsSummary2D)。然后,此中间形式可由本组中的一个或多个访问器用于计算最终结果。可选地,可以在应用访问器之前使用 rollup()rolling() 组合多个此类中间聚合对象。

必选参数
名称类型描述
y, xDOUBLE PRECISION用于统计聚合的变量。
返回值
类型描述
stats_aggStatsSummary2D统计聚合,包含变量的中间形式数据。将聚合传递给统计聚合 API 中的访问器函数以执行最终计算。或者,将聚合传递给 rollup 函数以将多个统计聚合组合成更大的聚合。
average_y(
summary StatsSummary 2D
) RETURNS DOUBLE PRECISION
average_x(
summary StatsSummary 2D
) RETURNS DOUBLE PRECISION

计算给定维度上二维聚合的平均值。例如,average_y() 计算 y 变量所有值的平均值,与 x 变量的值无关。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
average_y, average_xDOUBLE PRECISION统计聚合中值的平均值
示例

计算从 0 到 100 整数的平均值

SELECT average_x(stats_agg(y, x))
FROM generate_series(1, 5) y,
generate_series(0, 100) x;
average
-----------
50
corr(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION

计算二维统计聚合的相关系数。计算使用标准的最小二乘拟合进行线性回归。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
corrDOUBLE PRECISION最小二乘拟合线的相关系数
示例

计算每个 15 分钟时间桶中自变量 y 和因变量 x 的相关系数

SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
corr(stats_agg(y, x)) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
covariance(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION

计算二维统计聚合的协方差。计算使用标准的最小二乘拟合进行线性回归。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
可选参数
名称类型描述
methodTEXT用于计算协方差的方法。两个选项是 population(总体)和 sample(样本),可分别缩写为 popsamp。默认为 sample
返回值
类型描述
covarianceDOUBLE PRECISION最小二乘拟合线的协方差
示例

计算每个 15 分钟时间桶中自变量 y 和因变量 x 的协方差

SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
covariance(stats_agg(y, x)) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
determination_coeff(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION

计算二维统计聚合的决定系数。计算使用标准的最小二乘拟合进行线性回归。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
determination_coeffDOUBLE PRECISION最小二乘拟合线的决定系数
示例

计算每个 15 分钟时间桶中自变量 y 和因变量 x 的决定系数

SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
determination_coeff(stats_agg(y, x)) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
intercept(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION

计算二维统计聚合的 y 轴截距。计算使用标准的最小二乘拟合进行线性回归。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
interceptDOUBLE PRECISION最小二乘拟合线的 y 轴截距
示例

计算每个 15 分钟时间桶中自变量 y 和因变量 x 的 y 轴截距

SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
intercept(stats_agg(y, x)) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
kurtosis_y(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION
kurtosis_x(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION

计算给定维度上二维统计聚合的峰度。例如,kurtosis_y() 计算 y 变量所有值的峰度,与 x 变量的值无关。峰度是第四阶统计矩。它是衡量数据分布相对于正态分布的“尾部厚度”的度量。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
可选参数
名称类型描述
methodTEXT用于计算峰度的方法。两个选项是 population(总体)和 sample(样本),可分别缩写为 popsamp。默认为 sample
返回值
类型描述
kurtosis_y, kurtosis_xDOUBLE PRECISION统计聚合中值的峰度
示例

计算包含 0 到 100 整数的样本的峰度

SELECT kurtosis_y(stats_agg(data, data))
FROM generate_series(0, 100) data;
kurtosis_y
----------
1.78195
num_vals(
summary StatsSummary2D
) RETURNS BIGINT

计算二维统计聚合中包含的值的数量。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
num_valsDOUBLE PRECISION统计聚合中的值数量
示例

计算从 1 到 5 以及从 0 到 100(包含两端)的值的数量

SELECT num_vals(stats_agg(y, x))
FROM generate_series(1, 5) y,
generate_series(0, 100) x;
num_vals
--------
505
skewness_y(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION
skewness_x(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION

计算给定维度上二维统计聚合的偏度。例如,skewness_y() 计算 y 变量所有值的偏度,与 x 变量的值无关。偏度是第三阶统计矩。它是衡量数据分布不对称性的度量。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
可选参数
名称类型描述
methodTEXT用于计算偏度的方法。两个选项是 population(总体)和 sample(样本),可分别缩写为 popsamp。默认为 sample
返回值
类型描述
skewness_y, skewness_xDOUBLE PRECISION统计聚合中值的偏度
示例

计算包含 0 到 100 整数的样本的偏度

SELECT skewness_x(stats_agg(data, data))
FROM generate_series(0, 100) data;
skewness_x
----------
0
slope(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION

计算二维统计聚合中线性拟合线的斜率。计算使用标准的最小二乘拟合进行线性回归。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
slopeDOUBLE PRECISION最小二乘拟合线的斜率
示例

计算每个 15 分钟时间桶中自变量 y 和因变量 x 的斜率

SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
slope(stats_agg(y, x)) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
stddev_y(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION
stddev_x(summary
StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION

计算给定维度上二维统计聚合的标准差。例如,stddev_y() 计算 y 变量所有值的标准差,与 x 变量的值无关。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
可选参数
名称类型描述
methodTEXT用于计算标准差的方法。两个选项是 population(总体)和 sample(样本),可分别缩写为 popsamp。默认为 sample
返回值
类型描述
stddev_y, stddev_xDOUBLE PRECISION统计聚合中值的标准差
示例

计算包含 0 到 100 整数的样本的标准差

SELECT stddev_y(stats_agg(data, data))
FROM generate_series(0, 100) data;
stddev_y
--------
29.3002
sum_y(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION
sum_x(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION

计算给定维度上二维统计聚合的总和。例如,sum_y() 计算 y 变量所有值的总和,与 x 变量的值无关。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
sumDOUBLE PRECISION统计聚合中值的总和
示例

计算从 0 到 100 的数字总和

SELECT sum_y(stats_agg(data, data))
FROM generate_series(0, 100) data;
sum_y
-----
5050
variance_y(
summary StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION
variance_x(summary
StatsSummary2D,
[ method TEXT ]
) RETURNS DOUBLE PRECISION

计算给定维度上二维统计聚合的方差。例如,variance_y() 计算 y 变量所有值的方差,与 x 变量的值无关。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
可选参数
名称类型描述
methodTEXT用于计算标准差的方法。两个选项是 population(总体)和 sample(样本),可分别缩写为 popsamp。默认为 sample
返回值
类型描述
varianceDOUBLE PRECISION统计聚合中值的方差
示例

计算包含 0 到 100 整数的样本的方差

SELECT variance_y(stats_agg(data, data))
FROM generate_series(0, 100) data;
variance_y
----------
858.5
x_intercept(
summary StatsSummary2D
) RETURNS DOUBLE PRECISION

计算二维统计聚合的 x 轴截距。计算使用标准的最小二乘拟合进行线性回归。

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
interceptDOUBLE PRECISION最小二乘拟合线的 x 轴截距
示例

计算每个 15 分钟时间桶中自变量 y 和因变量 x 的 x 轴截距

SELECT
id,
time_bucket('15 min'::interval, ts) AS bucket,
x_intercept(stats_agg(y, x)) AS summary
FROM foo
GROUP BY id, time_bucket('15 min'::interval, ts)
rolling(
ss StatsSummary2D
) RETURNS StatsSummary2D

将多个中间二维统计聚合 (StatsSummary2D) 对象组合成一个 StatsSummary2D 对象。它经过优化,适用于窗口函数上下文,用于计算滚动窗口统计聚合。

这对于从连续聚合计算滚动窗口聚合特别有用。它可能快几个数量级,因为它使用了逆转换和组合函数,在异常情况下可能会出现更大的浮点误差。

对于非窗口函数上下文中的重新聚合,例如将每小时桶组合成每日桶,请参阅 rollup()

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
rollingStatsSummary2D通过组合输入统计聚合产生的新统计聚合
rolling(
ss StatsSummary2D
) RETURNS StatsSummary2D

将多个中间二维统计聚合 (StatsSummary2D) 对象组合成一个 StatsSummary2D 对象。例如,您可以使用 rollup 将 15 分钟桶的统计聚合组合成每日桶。用于窗口函数时,请参阅 rolling()

必选参数
名称类型描述
summaryStatsSummary2Dstats_agg 调用产生的统计聚合
返回值
类型描述
rollupStatsSummary2D通过组合输入统计聚合产生的新统计聚合

创建一个统计聚合,用于汇总关于两个变量 val2val1 的每日统计数据,其中 val2 是因变量,val1 是自变量。使用该统计聚合计算因变量的平均值和线性回归拟合的斜率

WITH t as (
SELECT
time_bucket('1 day'::interval, ts) as dt,
stats_agg(val2, val1) AS stats2D,
FROM foo
WHERE id = 'bar'
GROUP BY time_bucket('1 day'::interval, ts)
)
SELECT
average_x(stats2D),
slope(stats2D)
FROM t;

关键词

在此页面上发现问题?报告问题 或在 GitHub 上编辑此页面