Spec-Zone.ru › NumPy 2.0

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()
../../../_images/numpy-random-Generator-f-1.png

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API