numpy.random.Generator.f

方法

random.Generator.f(dfnum, dfden, size=None)

从F分布中提取样本。

从具有指定参数的F分布中提取样本, dfnum (分子自由度)和 dfden (分母自由度),其中两个参数都必须大于零。

F分布的随机变量(也称为fisher分布)是方差分析测试中出现的连续概率分布,是两个卡方变量的比值。

参数
dfnum浮点数或类似浮点数的数组

分子的自由度必须大于0。

dfden浮点数或类似浮点数的数组

分母中的自由度必须大于0。

sizeint或int的元组,可选

输出形状。如果给定的形状是,例如, (m, n, k) 然后 m * n * k 取样。如果尺寸是 None (默认),如果 dfnumdfden 都是标量。否则, np.broadcast(dfnum, dfden).size 取样。

返回
outndarray或scalar

从参数化Fisher分布中提取样本。

参见

scipy.stats.f

概率密度函数、分布或累积密度函数等。

笔记

F统计量用于比较组内差异和组间差异。计算分布取决于采样,因此它是问题中各个自由度的函数。变量 dfnum 是样本数减去1,组间自由度,而 dfden 是组内自由度,每组样本数之和减去组数。

工具书类

1

Glantz,Stanton A.,《生物统计学入门》,McGraw-Hill,第五版,2002年。

2

维基百科,“f-distribution”,https://en.wikipedia.org/wiki/f-distribution

实例

格兰茨的一个例子 [1] ,PP 44-40:

两组:糖尿病儿童(25人)和非糖尿病儿童(25名对照)。测定空腹血糖,病例组平均86.1,对照组平均82.2。标准差分别为2.09和2.49。这些数据是否与父母糖尿病状况不影响其子女血糖水平的无效假设一致?根据数据计算F统计量得出的值为36.01。

从分发中抽取样本:

>>> dfnum = 1. # between group degrees of freedom
>>> dfden = 48. # within groups degrees of freedom
>>> s = np.random.default_rng().f(dfnum, dfden, 1000)

前1%样本的下限为:

>>> np.sort(s)[-10]
7.61988120985 # random

所以F统计量有1%的概率会超过7.62,测量值是36,所以零假设在1%的水平被拒绝。