stats_agg() (两个变量) 函数
工具包TimescaleDB 工具包函数在 Timescale 社区版下可用。它们自动包含在 Timescale 中,但必须为自托管的 TimescaleDB 单独安装。点击了解更多。简介
对二维数据执行线性回归分析,例如计算相关系数和协方差。您还可以分别计算每个维度上的常用统计信息,例如平均值和标准差。这些函数类似于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 轴截距
汇总
stats_agg(y DOUBLE PRECISION,x DOUBLE PRECISION) RETURNS StatsSummary2D
这是对二维数据执行任何统计聚合计算的第一步。使用 stats_agg
从您的数据创建中间聚合 (StatsSummary2D
)。然后,此中间形式可以被本组中的一个或多个访问器使用,以计算最终结果。可选地,可以使用 rollup()
或 rolling()
组合多个此类中间聚合对象,然后再应用访问器。
必需参数
名称 | 类型 | 描述 |
---|---|---|
y, x | DOUBLE PRECISION | 用于统计聚合的变量。 |
返回值
列 | 类型 | 描述 |
---|---|---|
stats_agg | StatsSummary2D | 统计聚合,包含关于中间形式变量的数据。将聚合传递给统计聚合 API 中的访问器函数以执行最终计算。或者,将聚合传递给汇总函数,以将多个统计聚合组合成更大的聚合。 |
average_y(summary StatsSummary 2D) RETURNS DOUBLE PRECISION
average_x(summary StatsSummary 2D) RETURNS DOUBLE PRECISION
从给定维度的二维聚合计算平均值。例如,average_y()
计算 y
变量的所有值的平均值,与 x
变量的值无关。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
average_y , average_x | DOUBLE 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
从二维统计聚合计算相关系数。该计算使用线性回归的标准最小二乘拟合。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
corr | DOUBLE PRECISION | 最小二乘拟合线的相关系数 |
示例
计算每个 15 分钟时间桶的自变量 y
和因变量 x
的相关系数
SELECTid,time_bucket('15 min'::interval, ts) AS bucket,corr(stats_agg(y, x)) AS summaryFROM fooGROUP BY id, time_bucket('15 min'::interval, ts)
covariance(summary StatsSummary2D,[ method TEXT ]) RETURNS DOUBLE PRECISION
从二维统计聚合计算协方差。该计算使用线性回归的标准最小二乘拟合。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 用于计算协方差的方法。两个选项是 population 和 sample ,可以缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
covariance | DOUBLE PRECISION | 最小二乘拟合线的协方差 |
示例
计算每个 15 分钟时间桶的自变量 y
和因变量 x
的协方差
SELECTid,time_bucket('15 min'::interval, ts) AS bucket,covariance(stats_agg(y, x)) AS summaryFROM fooGROUP BY id, time_bucket('15 min'::interval, ts)
determination_coeff(summary StatsSummary2D) RETURNS DOUBLE PRECISION
从二维统计聚合计算决定系数。该计算使用线性回归的标准最小二乘拟合。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
determination_coeff | DOUBLE PRECISION | 最小二乘拟合线的决定系数 |
示例
计算每个 15 分钟时间桶的自变量 y
和因变量 x
的决定系数
SELECTid,time_bucket('15 min'::interval, ts) AS bucket,determination_coeff(stats_agg(y, x)) AS summaryFROM fooGROUP BY id, time_bucket('15 min'::interval, ts)
intercept(summary StatsSummary2D) RETURNS DOUBLE PRECISION
从二维统计聚合计算 y 轴截距。该计算使用线性回归的标准最小二乘拟合。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
intercept | DOUBLE PRECISION | 最小二乘拟合线的 y 轴截距 |
示例
计算每个 15 分钟时间桶的自变量 y
和因变量 x
的 y 轴截距
SELECTid,time_bucket('15 min'::interval, ts) AS bucket,intercept(stats_agg(y, x)) AS summaryFROM fooGROUP 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
变量的值无关。峰度是第四阶统计矩。它是衡量数据分布相对于正态分布的“尾重”程度的指标。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 用于计算峰度的方法。两个选项是 population 和 sample ,可以缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
kurtosis_y , kurtosis_x | DOUBLE 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
计算二维统计聚合中包含的值的数量。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
num_vals | DOUBLE 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
变量的值无关。偏度是第三阶统计矩。它是衡量数据分布不对称性的指标。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 用于计算偏度的方法。两个选项是 population 和 sample ,可以缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
skewness_y , skewness_x | DOUBLE 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
从二维统计聚合计算线性拟合线的斜率。该计算使用线性回归的标准最小二乘拟合。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
slope | DOUBLE PRECISION | 最小二乘拟合线的斜率 |
示例
计算每个 15 分钟时间桶的自变量 y
和因变量 x
的斜率
SELECTid,time_bucket('15 min'::interval, ts) AS bucket,slope(stats_agg(y, x)) AS summaryFROM fooGROUP BY id, time_bucket('15 min'::interval, ts)
stddev_y(summary StatsSummary2D,[ method TEXT ]) RETURNS DOUBLE PRECISION
stddev_x(summaryStatsSummary2D,[ method TEXT ]) RETURNS DOUBLE PRECISION
从给定维度的二维统计聚合计算标准差。例如,stddev_y()
计算 y
变量的所有值的偏度,与 x
变量的值无关。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 用于计算标准差的方法。两个选项是 population 和 sample ,可以缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
stddev_y , stddev_x | DOUBLE 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
变量的值无关。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
总和 | DOUBLE 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(summaryStatsSummary2D,[ method TEXT ]) RETURNS DOUBLE PRECISION
从给定维度的二维统计聚合计算方差。例如,variance_y()
计算 y
变量的所有值的偏度,与 x
变量的值无关。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 用于计算标准差的方法。两个选项是 population 和 sample ,可以缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
方差 | DOUBLE 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 轴截距。该计算使用线性回归的标准最小二乘拟合。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
intercept | DOUBLE PRECISION | 最小二乘拟合线的 x 轴截距 |
示例
计算每个 15 分钟时间桶的自变量 y
和因变量 x
的 x 轴截距
SELECTid,time_bucket('15 min'::interval, ts) AS bucket,x_intercept(stats_agg(y, x)) AS summaryFROM fooGROUP BY id, time_bucket('15 min'::interval, ts)
rolling(ss StatsSummary2D) RETURNS StatsSummary2D
将多个中间二维统计聚合 (StatsSummary2D
) 对象组合成单个 StatsSummary2D
对象。它针对在窗口函数上下文中用于计算滚动窗口统计聚合进行了优化。
这对于从连续聚合计算滚动窗口聚合特别有用。它可以快几个数量级,因为它使用逆转换和组合函数,但在异常情况下可能会发生更大的浮点误差。
对于非窗口函数上下文中的重新聚合,例如将每小时桶组合成每日桶,请参阅 rollup()
。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
rolling | StatsSummary2D | 通过组合输入统计聚合生成的新统计聚合 |
rolling(ss StatsSummary2D) RETURNS StatsSummary2D
将多个中间二维统计聚合 (StatsSummary2D
) 对象组合成单个 StatsSummary2D
对象。例如,您可以使用 rollup
将 15 分钟桶的统计聚合组合成每日桶。对于在窗口函数中使用,请参阅 rolling()
。
必需参数
名称 | 类型 | 描述 |
---|---|---|
摘要 | StatsSummary2D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
rollup | StatsSummary2D | 通过组合输入统计聚合生成的新统计聚合 |
创建一个统计聚合,总结关于两个变量 val2
和 val1
的每日统计数据,其中 val2
是因变量,val1
是自变量。使用统计聚合计算因变量的平均值和线性回归拟合的斜率
WITH t as (SELECTtime_bucket('1 day'::interval, ts) as dt,stats_agg(val2, val1) AS stats2D,FROM fooWHERE id = 'bar'GROUP BY time_bucket('1 day'::interval, ts))SELECTaverage_x(stats2D),slope(stats2D)FROM t;
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面。