LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
statistics_descriptive.c 文件参考
#include <float.h>
#include <math.h>
#include <stdlib.h>
#include "memory_bridge.h"
#include "lmmc/config.h"
#include "lmmc/numeric.h"
#include "lmmc/stats.h"
#include "statistics_internal.h"
statistics_descriptive.c 的引用(Include)关系图:

浏览该文件的源代码.

结构体

struct  lmmc_scaled_column_t

函数

lmmc_status_t lmmc_vec_mean (const lmmc_vec_t *x, lmmc_real_t *out_mean)
 计算向量样本均值 \(\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i\) 。
lmmc_status_t lmmc_vec_variance_population (const lmmc_vec_t *x, lmmc_real_t *out_variance)
 总体方差 \(\sigma^2 = \frac{1}{n}\sum (x_i-\bar{x})^2\) 。
lmmc_status_t lmmc_vec_variance_sample (const lmmc_vec_t *x, lmmc_real_t *out_variance)
 计算样本方差 \(s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2\) 。
lmmc_status_t lmmc_vec_stddev_population (const lmmc_vec_t *x, lmmc_real_t *out_stddev)
 总体标准差。 缩放计算支持方差超出 binary64 范围的情况。 输入非有限或标准差结果溢出时返回 ::LMMC_STATUS_NUMERICAL_FAILURE。
lmmc_status_t lmmc_vec_stddev_sample (const lmmc_vec_t *x, lmmc_real_t *out_stddev)
 样本标准差,要求 n>=2 。 缩放计算支持方差超出 binary64 范围的情况。 输入非有限或标准差结果溢出时返回 ::LMMC_STATUS_NUMERICAL_FAILURE。
lmmc_status_t lmmc_vec_covariance_population (const lmmc_vec_t *x, const lmmc_vec_t *y, lmmc_real_t *out_covariance)
 总体协方差 \(\mathrm{Cov}(X,Y)\) 。
lmmc_status_t lmmc_vec_covariance_sample (const lmmc_vec_t *x, const lmmc_vec_t *y, lmmc_real_t *out_covariance)
 样本协方差,要求 n>=2 。
lmmc_status_t lmmc_vec_correlation_population (const lmmc_vec_t *x, const lmmc_vec_t *y, lmmc_real_t *out_correlation)
 总体 Pearson 相关系数。
lmmc_status_t lmmc_vec_correlation_sample (const lmmc_vec_t *x, const lmmc_vec_t *y, lmmc_real_t *out_correlation)
 样本 Pearson 相关系数;使用同一缩放累计路径,要求 n>=2。
lmmc_status_t lmmc_mat_column_mean (const lmmc_mat_t *x, lmmc_vec_t *out_means)
 计算矩阵各列均值,输出长度为 x->cols 的向量。
lmmc_status_t lmmc_mat_covariance_population (const lmmc_mat_t *x, lmmc_mat_t *out_covariance)
 计算总体协方差矩阵(cols × cols)。
lmmc_status_t lmmc_mat_covariance_sample (const lmmc_mat_t *x, lmmc_mat_t *out_covariance)
 计算样本协方差矩阵(cols × cols),要求行数 >= 2 。
lmmc_status_t lmmc_mat_correlation_population (const lmmc_mat_t *x, lmmc_mat_t *out_correlation)
 计算总体 Pearson 相关矩阵。
lmmc_status_t lmmc_mat_correlation_sample (const lmmc_mat_t *x, lmmc_mat_t *out_correlation)
 使用同一缩放路径计算样本 Pearson 相关矩阵,要求行数 >= 2。

结构体说明

◆ lmmc_scaled_column_t

struct lmmc_scaled_column_t

在文件 statistics_descriptive.c 第 42 行定义.

lmmc_scaled_column_t 的协作图:
成员变量
lmmc_real_t origin
lmmc_real_t mean
int exponent

函数说明

◆ lmmc_vec_mean()

lmmc_status_t lmmc_vec_mean ( const lmmc_vec_t * x,
lmmc_real_t * out_mean )

计算向量样本均值 \(\bar{x} = \frac{1}{n}\sum_{i=1}^{n} x_i\) 。

使用在线均值更新;当 x-mean 溢出时切换到等价的有限凸组合,因此 只要最终均值可表示,就不会因为原始总和、极差或无关的方差溢出而失败。

参数
[in]x输入有限向量,size >= 1。
[out]out_mean输出均值。
返回
LMMC_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若 x 为空向量或指针为 NULL; LMMC_STATUS_NUMERICAL_FAILURE 若输入包含非有限值。
副作用
  • 无。只读访问输入向量,不分配内存。

在文件 statistics_descriptive.c 第 402 行定义.

引用了 lmmc_vec_t::data, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_vec_mean() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_std_stats_mean() , 以及 lmmc_vec_mean().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_variance_population()

lmmc_status_t lmmc_vec_variance_population ( const lmmc_vec_t * x,
lmmc_real_t * out_variance )

总体方差 \(\sigma^2 = \frac{1}{n}\sum (x_i-\bar{x})^2\) 。

在文件 statistics_descriptive.c 第 410 行定义.

引用了 lmmc_vec_variance_population().

被这些函数引用 lmmc_vec_variance_population().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_variance_sample()

lmmc_status_t lmmc_vec_variance_sample ( const lmmc_vec_t * x,
lmmc_real_t * out_variance )

计算样本方差 \(s^2 = \frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})^2\) 。

使用 Bessel 校正(除以 n-1),要求至少 2 个样本。

参数
[in]x输入向量,size >= 2。
[out]out_variance输出样本方差。
返回
LMMC_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若 x->size < 2 或指针为 NULL。
副作用
  • 无。只读访问输入向量,不分配内存。

在文件 statistics_descriptive.c 第 414 行定义.

引用了 lmmc_vec_variance_sample().

被这些函数引用 lmmc_std_stats_var() , 以及 lmmc_vec_variance_sample().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_stddev_population()

lmmc_status_t lmmc_vec_stddev_population ( const lmmc_vec_t * x,
lmmc_real_t * out_stddev )

总体标准差。 缩放计算支持方差超出 binary64 范围的情况。 输入非有限或标准差结果溢出时返回 ::LMMC_STATUS_NUMERICAL_FAILURE。

在文件 statistics_descriptive.c 第 418 行定义.

引用了 lmmc_vec_stddev_population().

被这些函数引用 lmmc_vec_stddev_population().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_stddev_sample()

lmmc_status_t lmmc_vec_stddev_sample ( const lmmc_vec_t * x,
lmmc_real_t * out_stddev )

样本标准差,要求 n>=2 。 缩放计算支持方差超出 binary64 范围的情况。 输入非有限或标准差结果溢出时返回 ::LMMC_STATUS_NUMERICAL_FAILURE。

在文件 statistics_descriptive.c 第 422 行定义.

引用了 lmmc_vec_stddev_sample().

被这些函数引用 lmmc_std_stats_std() , 以及 lmmc_vec_stddev_sample().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_covariance_population()

lmmc_status_t lmmc_vec_covariance_population ( const lmmc_vec_t * x,
const lmmc_vec_t * y,
lmmc_real_t * out_covariance )

总体协方差 \(\mathrm{Cov}(X,Y)\) 。

在文件 statistics_descriptive.c 第 426 行定义.

引用了 lmmc_vec_covariance_population().

被这些函数引用 lmmc_vec_covariance_population().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_covariance_sample()

lmmc_status_t lmmc_vec_covariance_sample ( const lmmc_vec_t * x,
const lmmc_vec_t * y,
lmmc_real_t * out_covariance )

样本协方差,要求 n>=2 。

在文件 statistics_descriptive.c 第 430 行定义.

引用了 lmmc_vec_covariance_sample().

被这些函数引用 lmmc_std_stats_cov() , 以及 lmmc_vec_covariance_sample().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_correlation_population()

lmmc_status_t lmmc_vec_correlation_population ( const lmmc_vec_t * x,
const lmmc_vec_t * y,
lmmc_real_t * out_correlation )

总体 Pearson 相关系数。

两列分别平移原点、按二进制缩放,再缩放中心偏差;以联合补偿累计 修正中心矩,在缩放域完成零分配计算。 常量列或非有限输入返回 ::LMMC_STATUS_NUMERICAL_FAILURE; 输出仅成功时写入,仅将舍入误差范围内的越界结果截断至 [-1,1]。

在文件 statistics_descriptive.c 第 434 行定义.

引用了 lmmc_vec_correlation_population().

被这些函数引用 lmmc_vec_correlation_population().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_correlation_sample()

lmmc_status_t lmmc_vec_correlation_sample ( const lmmc_vec_t * x,
const lmmc_vec_t * y,
lmmc_real_t * out_correlation )

样本 Pearson 相关系数;使用同一缩放累计路径,要求 n>=2。

在文件 statistics_descriptive.c 第 438 行定义.

引用了 lmmc_vec_correlation_sample().

被这些函数引用 lmmc_std_stats_corr() , 以及 lmmc_vec_correlation_sample().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_column_mean()

lmmc_status_t lmmc_mat_column_mean ( const lmmc_mat_t * x,
lmmc_vec_t * out_means )

计算矩阵各列均值,输出长度为 x->cols 的向量。

矩阵 x 的每行视为一次观测样本;每列复用向量均值的溢出安全在线 更新,不分配临时存储。

在文件 statistics_descriptive.c 第 442 行定义.

引用了 lmmc_mat_t::cols, lmmc_vec_t::data, lmmc_mat_column_mean(), LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_mat_column_mean().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_covariance_population()

lmmc_status_t lmmc_mat_covariance_population ( const lmmc_mat_t * x,
lmmc_mat_t * out_covariance )

计算总体协方差矩阵(cols × cols)。

在文件 statistics_descriptive.c 第 455 行定义.

引用了 lmmc_mat_covariance_population().

被这些函数引用 lmmc_mat_covariance_population().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_covariance_sample()

lmmc_status_t lmmc_mat_covariance_sample ( const lmmc_mat_t * x,
lmmc_mat_t * out_covariance )

计算样本协方差矩阵(cols × cols),要求行数 >= 2 。

输出矩阵 out_covariance 的 (i,j) 元素为第 i 列与第 j 列的样本协方差。 使用 Bessel 校正(除以 rows-1)。

参数
[in]x输入矩阵,rows >= 2,每行为一次观测。
[out]out_covariance输出协方差矩阵,大小 cols × cols,调用方需预分配。
返回
LMMC_STATUS_OK 成功; LMMC_STATUS_INVALID_ARGUMENT 若 rows < 2、维度不匹配或指针为 NULL。
副作用
  • 就地写入 out_covariance 矩阵的全部元素。
  • 内部可能分配临时向量用于列均值计算,函数返回前释放。

在文件 statistics_descriptive.c 第 459 行定义.

引用了 lmmc_mat_covariance_sample().

被这些函数引用 lmmc_mat_covariance_sample().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_correlation_population()

lmmc_status_t lmmc_mat_correlation_population ( const lmmc_mat_t * x,
lmmc_mat_t * out_correlation )

计算总体 Pearson 相关矩阵。

对每对列使用原点平移、二进制缩放及联合修正中心矩,在缩放域完成 零分配计算。常量列(包括对角项)或非有限输入返回 ::LMMC_STATUS_NUMERICAL_FAILURE。

在文件 statistics_descriptive.c 第 463 行定义.

引用了 lmmc_mat_correlation_population().

被这些函数引用 lmmc_mat_correlation_population().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_mat_correlation_sample()

lmmc_status_t lmmc_mat_correlation_sample ( const lmmc_mat_t * x,
lmmc_mat_t * out_correlation )

使用同一缩放路径计算样本 Pearson 相关矩阵,要求行数 >= 2。

在文件 statistics_descriptive.c 第 467 行定义.

引用了 lmmc_mat_correlation_sample().

被这些函数引用 lmmc_mat_correlation_sample().

函数调用图:
这是这个函数的调用关系图: