Как использовать дистрибутив t в Python


Распределение t — это распределение вероятностей, похожее на нормальное распределение , за исключением того, что у него более тяжелые «хвосты», чем у нормального распределения.

То есть больше значений в распределении находится в конце, чем в центре, по сравнению с нормальным распределением:

В этом руководстве объясняется, как использовать распределение t в Python.

Как генерировать при раздаче

Вы можете использовать функцию t.rvs(df, size) для генерации случайных значений из распределения at с определенными степенями свободы и размером выборки:

from scipy. stats import t

#generate random values from t distribution with df=6 and sample size=10
t. rvs (df= 6 , size= 10 )

array([-3.95799716, -0.01099963, -0.55953846, -1.53420055, -1.41775611,
 -0.45384974, -0.2767931 , -0.40177789, -0.3602592 , 0.38262431])

В результате получается массив из 10 значений, следующих при распределении с 6 степенями свободы.

Как рассчитать P-значения, используя t-распределение

Мы можем использовать функцию t.cdf(x, df, loc=0, scale=1) , чтобы найти p-значение, связанное с некоторой статистикой t-теста.

Пример 1. Найдите одностороннее P-значение

Предположим, мы выполняем одностороннюю проверку гипотезы и в итоге получаем статистику проверки -1,5 и степени свободы = 10 .

Мы можем использовать следующий синтаксис для вычисления p-значения, соответствующего этой тестовой статистике:

from scipy. stats import t

#calculate p-value
t. cdf (x=-1.5, df=10)

0.08225366322272008

Одностороннее p-значение, соответствующее тестовой статистике -1,5 с 10 степенями свободы, равно 0,0822 .

Пример 2: найти двустороннее P-значение

Предположим, мы выполняем двустороннюю проверку гипотезы и в итоге получаем статистику теста 2,14 и степени свободы = 20 .

Мы можем использовать следующий синтаксис для вычисления p-значения, соответствующего этой тестовой статистике:

from scipy. stats import t

#calculate p-value
(1 - t. cdf (x=2.14, df=20)) \* 2

0.04486555082549959

Двустороннее p-значение, соответствующее тестовой статистике 2,14 с 20 степенями свободы, равно 0,0448 .

Примечание : Вы можете перепроверить эти ответы, используя Калькулятор обратного t-распределения .

Как строить планы при раздаче

Вы можете использовать следующий синтаксис для построения графика распределения с определенными степенями свободы:

from scipy. stats import t
import matplotlib.pyplot as plt

#generate t distribution with sample size 10000
x = t. rvs (df= 12 , size= 10000 )

#create plot of t distribution
plt.hist (x, density= True , edgecolor='black', bins= 20 )

Кроме того, вы можете создать кривую плотности с помощью пакета визуализации Seaborn :

import seaborn as sns

#create density curve
sns.kdeplot (x)

Дополнительные ресурсы

Следующие руководства предлагают дополнительную информацию о распределении t:

Нормальное распределение и t-распределение: в чем разница?
Калькулятор обратного t-распределения