|
LMMC
Lamina Mathematic core
|
#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"结构体 | |
| 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。 | |
| struct lmmc_scaled_column_t |
在文件 statistics_descriptive.c 第 42 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_real_t | origin | |
| lmmc_real_t | mean | |
| int | exponent | |
| 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 | 输出均值。 |
在文件 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_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_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 | 输出样本方差。 |
在文件 statistics_descriptive.c 第 414 行定义.
引用了 lmmc_vec_variance_sample().
被这些函数引用 lmmc_std_stats_var() , 以及 lmmc_vec_variance_sample().
| 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_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_std_stats_std() , 以及 lmmc_vec_stddev_sample().
| 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_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_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_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_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_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_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,调用方需预分配。 |
out_covariance 矩阵的全部元素。在文件 statistics_descriptive.c 第 459 行定义.
引用了 lmmc_mat_covariance_sample().
被这些函数引用 lmmc_mat_covariance_sample().
| 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_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().