反正态分布算法

"反正态分布算法"这个词在中文语境下通常指的是标准正态分布累积分布函数(CDF)的"反函数"算法

在统计学和计算机科学中,它有一个更专业的名称:分位数函数 (Quantile Function) 或 Probit 函数

简单来说,它的逻辑是反过来的:

  • 正态分布 (Normal Distribution):给你一个数值(比如 Z分数),告诉你它落在某个范围的概率是多少。

  • 反正态分布 (Inverse Normal):给你一个概率 (比如 95%),告诉你对应的数值(Z分数)是多少。

直观理解:从"排名"推"分数" 为了让你秒懂,我们拿考试打比方:

  • 场景:全班考试成绩服从正态分布,平均分 60,标准差 10。

  • 正态分布 (CDF):

    • 问:"我考了 80 分,我打败了百分之多少的人?"

    • 答:"算出 Z 分数是 2.0,查表得知你打败了 97.7% 的人。"

  • 反正态分布 (Inverse CDF):

    • 问:"我想排在前 5%(也就是打败 95% 的人),我至少要考多少分?"

    • 答:"输入概率 0.95,通过算法算出 Z 分数是 1.645,换算回分数是 76.45 分。"

所以,"反正态分布算法"就是计算机用来回答第二个问题的数学工具。

反正态转换(Inverse Normal Transformation, INT)的过程示例

我们用一个简单的例子来说明反正态转换的过程。假设有 10 个样本的甲基化 β 值如下:

原始数据(甲基化 β 值):

0.1, 0.2, 0.4, 0.5, 0.3, 0.9, 0.7, 0.8, 0.6, 0.05

步骤 1:对 β 值进行排序

首先对这些 β 值进行升序排序,得到每个值的排序位置。

排序后的值 排序位置
0.05 1
0.1 2
0.2 3
0.3 4
0.4 5
0.5 6
0.6 7
0.7 8
0.8 9
0.9 10

步骤 2:计算分位数

接下来,计算每个排序位置的分位数。分位数可以通过以下公式计算:

分位数=排名总样本数+1 \text{分位数} = \frac{\text{排名}}{\text{总样本数} + 1} 分位数=总样本数+1排名

计算每个值的分位数:

排序位置 分位数
1 0.091
2 0.182
3 0.273
4 0.364
5 0.455
6 0.545
7 0.636
8 0.727
9 0.818
10 0.909

步骤 3:将分位数转换为标准正态分布下的 z 分数

使用正态分布的累积分布函数的反函数(qnorm),将分位数映射到标准正态分布下的 z 分数。标准正态分布的 z 分数表示每个分位数在标准正态分布中的位置。

通过 R 中的 qnorm() 函数,我们可以得到:

{r} 复制代码
qnorm(c(0.091, 0.182, 0.273, 0.364, 0.455, 0.545, 0.636, 0.727, 0.818, 0.909))

步骤 4:映射到原始数据顺序

最后,将这些 z 分数映射回原始数据的顺序:

原始 β 值 排序位置 分位数 正态分布 z 分数
0.1 2 0.182 -0.91
0.2 3 0.273 -0.60
0.4 5 0.455 -0.11
0.5 6 0.545 0.11
0.3 4 0.364 -0.35
0.9 10 0.909 1.34
0.7 8 0.727 0.60
0.8 9 0.818 0.91
0.6 7 0.636 0.35
0.05 1 0.091 -1.34
相关推荐
shehuiyuelaiyuehao7 小时前
算法12,滑动窗口,将x减到0的最小操作数
java·数据结构·算法
_深海凉_7 小时前
LeetCode热题100-跳跃游戏 II
算法·leetcode·游戏
csuzhucong7 小时前
力扣OJ(2301-2600)
算法·leetcode·职场和发展
玛丽莲茼蒿7 小时前
Leetcode hot100 旋转图像【中等】
算法·leetcode·职场和发展
阿Y加油吧7 小时前
堆 / 优先队列专题二刷笔记:前 K 个高频元素 & 数据流的中位数
java·笔记·算法
Chase_______7 小时前
LeetCode 2090 题解:半径为 k 的子数组平均值,定长滑动窗口经典题一文搞懂
算法·leetcode·职场和发展
MicroTech20257 小时前
微算法科技(NASDAQ :MLGO)量子图像加权平均滤波:以量子优势重构图像处理效率与精度
科技·算法·重构
jieyucx7 小时前
Go 语言函数入门:定义、参数、返回值
c++·算法·golang·入门·函数
Brilliantwxx7 小时前
【C++】认识标准库STL(1)
开发语言·c++·笔记·程序人生·算法
啦啦啦_99997 小时前
2. 梯度下降算法分类 & 梯度下降与正规方程对比
人工智能·算法·分类