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。

  • dfden (float or array_like of float) -- 分母自由度,应大于 0。

  • size (int or tuple of ints, optional) -- 输出形状。如果给定形状如 (m, n, k),则抽取 m * n * k 个样本。如果 size 为 None``(默认),且 ``dfnumdfden 均为标量,则返回单个值。否则,抽取 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%的显著性水平下拒绝零假设。