如何在Python中使用t分布

336 阅读2分钟

t分布是一个与正态分布 相似的概率分布,只是它的 "尾部 "比正态分布更重。

也就是说,与正态分布相比,分布中更多的数值位于尾端而不是中心。

Normal distribution vs. t-distribution

本教程解释了如何在 Python 中使用 t 分布。

如何生成 t 分布

你可以使用**t.rvs(df, size)**函数从一个具有特定自由度和样本大小的 t 分布中生成随机值。

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的t分布。

如何使用t分布计算P值

我们可以使用t.cdf(x, df, loc=0, scale=1) 函数来找到与某个t检验统计量相关的p值。

例1:查找单尾P值

假设我们进行了一个单尾假设检验,最后得到的t检验统计量为**-1.5**,自由度=10

我们可以使用下面的语法来计算与这个检验统计量相对应的P值。

from scipy.stats import t

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

0.08225366322272008

10个自由度的t检验统计量为-1.5,对应的单尾p值为0.0822

例2:寻找双尾P值

假设我们进行了一个双尾假设检验,最后得到的t检验统计量是2.14,自由度=20

我们可以使用下面的语法来计算与这个检验统计量相对应的P值。

from scipy.stats import t

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

0.04486555082549959

自由度为20的t检验统计量为2.14,对应的双尾p值为0.0448

注意:你可以通过使用反t分布计算器仔细检查这些答案。

如何绘制t分布图

你可以使用下面的语法来绘制一个具有特定自由度的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)

t distribution plot in Python

或者,你可以使用seaborn可视化软件包创建一个密度曲线

import seaborn as sns

#create density curve
sns.kdeplot(x)

plot t distribution curve in Python

其他资源

下面的教程提供了有关t分布的额外信息。

正态分布与t分布。有什么区别?
反t分布计算器

The postHow to Use the t distribution in Pythonappeared first onStatology.