|
LMMC
Lamina Mathematic core
|
#include <math.h>#include <float.h>#include "lmmc/config.h"#include "lmmc/numeric.h"#include "lmmc/stats.h"#include "probability_internal.h"| lmmc_status_t lmmc_dist_normal_pdf | ( | lmmc_real_t | x, |
| lmmc_real_t | mu, | ||
| lmmc_real_t | sigma, | ||
| lmmc_real_t * | out ) |
连续分布函数的公共参数约束。
所有实数输入必须有限;尺度、形状和自由度参数必须为正数;分位数函数的 概率参数必须严格位于 (0, 1)。违反约束时返回 LMMC_STATUS_INVALID_ARGUMENT。 t、χ²、F、Gamma 和 Beta 分位数使用保持根区间的求解器;不能建立 有限根区间时返回 LMMC_STATUS_OUT_OF_RANGE,达到数值分辨率或迭代上限 但未满足概率残差时返回 LMMC_STATUS_CONVERGENCE_FAILED。基于不完全 Gamma/Beta 的 CDF 达到内部级数或连分数迭代上限时也返回该状态。 连续分布 PDF 在对数域组合密度项;若有限参数对应的密度不可用有限 double 表示,或中间计算无法得到有限密度,则返回 LMMC_STATUS_NUMERICAL_FAILURE。CDF 的计算结果必须是 [0, 1] 内的有限 概率,否则返回同一状态。正态分位数产生不可表示的结果时亦如此。 数值失败和收敛失败均不写入输出参数;其他非成功状态不保证写入。
正态分布概率密度函数。
在对数域组合指数与尺度项;标准化在原始 x-mu 溢出时改用等价的 x/sigma-mu/sigma,避免丢失仍可表示的标准分数。
在文件 probability_continuous.c 第 17 行定义.
引用了 lmmc_dist_normal_pdf(), LMMC_SQRT_2PI , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_dist_normal_pdf() , 以及 lmmc_std_stats_normal_pdf().
| lmmc_status_t lmmc_dist_normal_cdf | ( | lmmc_real_t | x, |
| lmmc_real_t | mu, | ||
| lmmc_real_t | sigma, | ||
| lmmc_real_t * | out ) |
正态分布累积分布函数。
使用与 PDF 相同的溢出安全标准化,并通过 erfc 直接保留可表示的下尾概率。
在文件 probability_continuous.c 第 29 行定义.
引用了 lmmc_dist_normal_cdf() , 以及 LMMC_STATUS_INVALID_ARGUMENT.
被这些函数引用 lmmc_dist_normal_cdf() , 以及 lmmc_std_stats_normal_cdf().
| lmmc_status_t lmmc_dist_t_pdf | ( | lmmc_real_t | x, |
| lmmc_real_t | df, | ||
| lmmc_real_t * | out ) |
t 分布概率密度函数。
对数核按 |x|/sqrt(df) 的大小选取等价形式,避免直接计算 x*x。 当自由度大到 t 分布与标准正态分布的差异低于双精度分辨率时,直接 使用正态极限,避免两个巨大 lgamma 值相减。 极小正自由度使半自由度下溢时,密度仍按正自由度的极限计算。
在文件 probability_continuous.c 第 71 行定义.
引用了 lmmc_dist_t_pdf(), lmmc_log_beta(), LMMC_LOG_SQRT_2PI, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_dist_t_pdf() , 以及 lmmc_std_stats_t_pdf().
| lmmc_status_t lmmc_dist_t_cdf | ( | lmmc_real_t | x, |
| lmmc_real_t | df, | ||
| lmmc_real_t * | out ) |
t 分布累积分布函数。
不完全 Beta 参数通过尺度比构造;参数本身下溢时在对数域计算其 小参数渐近值,使可表示的重尾概率不因 x*x 溢出而被截断为零。 超大自由度使用标准正态极限。 极小正自由度使半自由度下溢时,有限自变量的概率舍入到 0.5。
在文件 probability_continuous.c 第 96 行定义.
引用了 lmmc_dist_t_cdf(), lmmc_log_beta(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 regularized_beta().
被这些函数引用 lmmc_dist_t_cdf() , 以及 lmmc_std_stats_t_cdf().
| lmmc_status_t lmmc_dist_chi2_pdf | ( | lmmc_real_t | x, |
| lmmc_real_t | df, | ||
| lmmc_real_t * | out ) |
χ² 分布概率密度函数。
大自由度通过形状 df / 2、尺度 2 的稳定 Gamma PDF 求值,避免 多个巨大对数 Gamma 项抵消。 极小正自由度使 df / 2 下溢时,通过 Gamma 的零形状极限计算正自变量的密度。
在文件 probability_continuous.c 第 127 行定义.
引用了 lmmc_dist_chi2_pdf(), lmmc_dist_gamma_pdf(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_dist_chi2_pdf() , 以及 lmmc_std_stats_chi2_pdf().
| lmmc_status_t lmmc_dist_chi2_cdf | ( | lmmc_real_t | x, |
| lmmc_real_t | df, | ||
| lmmc_real_t * | out ) |
χ² 分布累积分布函数。
通过形状 df / 2、尺度 2 的 Gamma CDF 求值,共享其极小下尾 对数域路径,避免先计算 x / 2 导致下溢。 极小正自由度使半自由度下溢时,有限正自变量的概率舍入到 1。
在文件 probability_continuous.c 第 154 行定义.
引用了 lmmc_dist_chi2_cdf(), lmmc_dist_gamma_cdf(), LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_dist_chi2_cdf() , 以及 lmmc_std_stats_chi2_cdf().
| lmmc_status_t lmmc_dist_f_pdf | ( | lmmc_real_t | x, |
| lmmc_real_t | df1, | ||
| lmmc_real_t | df2, | ||
| lmmc_real_t * | out ) |
F 分布概率密度函数。
大自由度使用 Beta 变量变换、偏差函数和 Stirling 余项计算对数密度, 避免中心区域的 log-gamma 灾难性抵消。
在文件 probability_continuous.c 第 194 行定义.
引用了 lmmc_dist_f_pdf(), lmmc_log_beta(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_dist_f_pdf() , 以及 lmmc_std_stats_f_pdf().
| lmmc_status_t lmmc_dist_f_cdf | ( | lmmc_real_t | x, |
| lmmc_real_t | df1, | ||
| lmmc_real_t | df2, | ||
| lmmc_real_t * | out ) |
F 分布累积分布函数。
极小正分子自由度使半自由度下溢时,有限正自变量的概率按 df2 / (df1 + df2) 的极限计算。
在文件 probability_continuous.c 第 229 行定义.
引用了 lmmc_dist_f_cdf(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, regularized_beta() , 以及 regularized_beta_upper().
被这些函数引用 lmmc_dist_f_cdf() , 以及 lmmc_std_stats_f_cdf().
| lmmc_status_t lmmc_dist_gamma_pdf | ( | lmmc_real_t | x, |
| lmmc_real_t | shape, | ||
| lmmc_real_t | scale, | ||
| lmmc_real_t * | out ) |
伽马分布概率密度函数。
大形状参数通过 Poisson 偏差与 Stirling 余项计算,避免在分布中心 抵消多个巨大对数项。
在文件 probability_continuous.c 第 260 行定义.
引用了 lmmc_deviance_part(), lmmc_dist_gamma_pdf(), lmmc_log_gamma_stirling_error(), LMMC_LOG_SQRT_2PI, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_dist_chi2_pdf(), lmmc_dist_gamma_pdf() , 以及 lmmc_std_stats_gamma_pdf().
| lmmc_status_t lmmc_dist_gamma_cdf | ( | lmmc_real_t | x, |
| lmmc_real_t | shape, | ||
| lmmc_real_t | scale, | ||
| lmmc_real_t * | out ) |
伽马分布累积分布函数。
当 x / scale 下溢但最终概率仍可表示时,在对数域计算小参数下 不完全 Gamma 的首项,避免把可表示的极小尾概率错误截断为零。
在文件 probability_continuous.c 第 289 行定义.
引用了 lmmc_dist_gamma_cdf(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 regularized_gamma_lower().
被这些函数引用 lmmc_dist_chi2_cdf(), lmmc_dist_gamma_cdf() , 以及 lmmc_std_stats_gamma_cdf().
| lmmc_status_t lmmc_dist_beta_pdf | ( | lmmc_real_t | x, |
| lmmc_real_t | alpha, | ||
| lmmc_real_t | beta, | ||
| lmmc_real_t * | out ) |
贝塔分布概率密度函数。
大形状参数使用 Stirling 余项与偏差形式组合对数密度,避免中心区域 的 log-gamma 灾难性抵消。对称中心在形状和溢出时使用 Gamma 比值 渐近式,不要求显式构造 alpha + beta。
在文件 probability_continuous.c 第 314 行定义.
引用了 lmmc_dist_beta_pdf(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE , 以及 LMMC_STATUS_OK.
被这些函数引用 lmmc_dist_beta_pdf() , 以及 lmmc_std_stats_beta_pdf().
| lmmc_status_t lmmc_dist_beta_cdf | ( | lmmc_real_t | x, |
| lmmc_real_t | alpha, | ||
| lmmc_real_t | beta_param, | ||
| lmmc_real_t * | out ) |
贝塔分布累积分布函数。
在文件 probability_continuous.c 第 333 行定义.
引用了 lmmc_dist_beta_cdf(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 regularized_beta().
被这些函数引用 lmmc_dist_beta_cdf() , 以及 lmmc_std_stats_beta_cdf().