numpy.random.Generator.f
метод
- random.Generator.f(dfnum, dfden, size=None)
-
Генерирует выборку из F-распределения.
Выборка генерируется из F-распределения со заданными параметрами,
dfnum(степени свободы в числителе) иdfden(степени свободы в знаменателе), где оба параметра должны быть больше нуля.Случайная величина F-распределения (также известного как распределение Фишера) — это непрерывное распределение вероятностей, которое используется в тестах ANOVA, и представляет собой отношение двух хи-квадратных величин.
- Параметры:
-
- dfnumfloat или array_like чисел с плавающей точкой
-
Степени свободы в числителе, должно быть > 0.
- dfdenfloat или array_like чисел с плавающей точкой
-
Степени свободы в знаменателе, должно быть > 0.
- sizeцелое число или кортеж целых чисел, необязательно
-
Форма выходных данных. Если заданная форма, например,
(m, n, k), тоm * n * kвыборок генерируются. Если size не указан (по умолчанию), возвращается одно значение, еслиdfnumиdfdenявляются скалярами. В противном случаеnp.broadcast(dfnum, dfden).sizeвыборок генерируются.
- Возвращаемое значение:
-
- outndarray или скаляр
-
Сгенерированные выборки из заданного F-распределения.
См. также
scipy.stats.f-
функция плотности вероятности, распределение или функция кумулятивной плотности и т.д.
Примечания
F-статистика используется для сравнения внутригрупповых дисперсий с межгрупповыми дисперсиями. Расчёт распределения зависит от выборки, и поэтому зависит от соответствующих степеней свободы в задаче. Переменная
dfnum— это количество выборок минус один, степени свободы между группами, аdfden— степени свободы внутри групп, сумма количества выборок в каждой группе минус количество групп.Ссылки
[1]Glantz, Stanton A. “Primer of Biostatistics.”, McGraw-Hill, Fifth Edition, 2002.
[2]Wikipedia, “F-распределение”, https://en.wikipedia.org/wiki/F-distribution
Примеры
Пример из Glantz[1], стр. 47-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 >>> rng = np.random.default_rng() >>> s = rng.f(dfnum, dfden, 1000)
Нижняя граница для верхних 1% выборок:
>>> np.sort(s)[-10] 7.61988120985 # random
Таким образом, вероятность того, что F-статистика превысит 7.62, составляет около 1%. Измеренное значение равно 36, поэтому нулевая гипотеза отвергается на уровне 1%.
Соответствующая функция плотности вероятности для
n = 20иm = 20:>>> import matplotlib.pyplot as plt >>> from scipy import stats >>> dfnum, dfden, size = 20, 20, 10000 >>> s = rng.f(dfnum=dfnum, dfden=dfden, size=size) >>> bins, density, _ = plt.hist(s, 30, density=True) >>> x = np.linspace(0, 5, 1000) >>> plt.plot(x, stats.f.pdf(x, dfnum, dfden)) >>> plt.xlim([0, 5]) >>> plt.show()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/generated/numpy.random.Generator.f.html