maxframe.tensor.random.f#
- maxframe.tensor.random.f(dfnum, dfden, size=None, chunk_size=None, gpu=None, dtype=None)[源代码]#
从 F 分布中抽取样本。
样本从具有指定参数的 F 分布中抽取,`dfnum`(分子自由度)和 `dfden`(分母自由度)均应大于零。
F 分布的随机变量(也称为 Fisher 分布)是一种在方差分析(ANOVA)中出现的连续概率分布,它是两个卡方变量的比值。
- 参数:
dfnum (float or array_like of floats) -- 分子自由度,应大于 0。
size (int or tuple of ints, optional) -- 输出形状。如果给定形状如
(m, n, k),则抽取m * n * k个样本。如果 size 为None``(默认),且 ``dfnum和dfden均为标量,则返回单个值。否则,抽取np.broadcast(dfnum, dfden).size个样本。chunk_size (int or tuple of int or tuple of ints, optional) -- 每个维度上期望的块大小
gpu (bool, optional) -- 如果为 True,则在 GPU 上分配张量,默认为 False
dtype (data-type, optional) -- 返回张量的数据类型。
- 返回:
out -- 从参数化的 Fisher 分布中抽取的样本。
- 返回类型:
Tensor or scalar
参见
scipy.stats.f概率密度函数、分布函数或累积密度函数等。
备注
F 统计量用于比较组内方差与组间方差。分布的计算依赖于抽样,因此是问题中各自由度的函数。变量 dfnum 是样本数减一,即组间自由度,而 dfden 是组内自由度,即每组样本数之和减去组数。
引用
示例
来自 Glantz[1] 的示例,第 47-40 页:
两组,糖尿病患者的子女(25人)和非糖尿病患者子女(25个对照)。测量空腹血糖,病例组均值为86.1,对照组为82.2。标准差分别为2.09和2.49。这些数据是否符合零假设,即父母糖尿病状态不影响子女的血糖水平?从数据计算出的 F 统计量为36.01。
从分布中抽取样本:
>>> import maxframe.tensor as mt
>>> dfnum = 1. # between group degrees of freedom >>> dfden = 48. # within groups degrees of freedom >>> s = mt.random.f(dfnum, dfden, 1000).execute()
样本中前1%的下界为:
>>> sorted(s)[-10] 7.61988120985
因此,F 统计量超过7.62的概率约为1%,而测量值为36,因此在1%的显著性水平下拒绝零假设。