利用t.ppf&t.interval分别计算T分布置信区间[实例]

scipy.stats.t.interval用于计算t分布的置信区间,即给定置信水平时,计算对应的置信区间的下限和上限。

scipy.stats.t.ppf用于计算t分布的百分位点,即给定百分位数(概率)时,该函数返回给定百分位数对应的t分布的值。//它的作用是根据给定的累积概率值,计算随机变量的值,使得该值以下的累积概率等于给定的概率。

 利用t.ppf&t.interval分别计算T分布置信区间[实例]

import scipy.stats as stats
import numpy as np

# 指定概率值(例如,95% 置信水平对应的概率)
alpha = 0.05

# 指定样本数据
data = np.array([34,56,39,71,84,92,44,67,98,49,55,73,50,62,75,44,88,53,61,25,36,66,77,35])

# 计算样本均值和标准误差
sample_mean = np.mean(data)
sample_std = np.std(data, ddof=1)  # 使用ddof=1进行自由度校正
sample_size = len(data)
standard_error = sample_std / np.sqrt(sample_size)

# 计算T分布的置信区间的上下限
t_critical = stats.t.ppf(1 - alpha / 2, df=sample_size - 1)  # 自由度为样本大小减一
confidence_interval_lower = sample_mean - t_critical * standard_error
confidence_interval_upper = sample_mean + t_critical * standard_error

# 输出T分布置信区间的上下限
print("T分布置信区间的下限:", confidence_interval_lower)
print("T分布置信区间的上限:", confidence_interval_upper)


print("-------------------")
# 计算t分布的置信区间
t_confidence_interval = stats.t.interval(1 - alpha, df=sample_size - 1, loc=sample_mean, scale=sample_std / np.sqrt(sample_size))
# 输出计算结果
print("t分布的置信区间:", t_confidence_interval)

# T分布置信区间的下限: 51.356996738889045
# T分布置信区间的上限: 68.14300326111095
# -------------------
# t分布的置信区间: (51.356996738889045, 68.14300326111095)
# [Finished in 5.1s]

附录:多种方式进行T分布检验

import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt

# 创建一个样本数据,假设它符合T分布
np.random.seed(0)
sample_data = np.random.standard_t(df=5, size=100)

# 绘制直方图
plt.hist(sample_data, bins=20, density=True, alpha=0.6, color='b', label='Histogram')

# 绘制T分布的概率密度函数(PDF)曲线
x = np.linspace(min(sample_data), max(sample_data), 100)
pdf = stats.t.pdf(x, df=5)
plt.plot(x, pdf, 'r-', lw=2, label='T-Distribution PDF')

# 添加图例和标签
plt.legend()
plt.title('Histogram and PDF of Sample Data')
plt.xlabel('Value')
plt.ylabel('Probability Density')

# 显示图形
plt.show()

# 绘制Q-Q图
stats.probplot(sample_data, dist="t", sparams=(5,), plot=plt)
plt.title('Q-Q Plot against T-Distribution')

# 显示Q-Q图
plt.show()

# 进行正态性检验(Shapiro-Wilk检验)
shapiro_test_statistic, shapiro_p_value = stats.shapiro(sample_data)
print("Shapiro-Wilk检验统计量:", shapiro_test_statistic)
print("Shapiro-Wilk检验p值:", shapiro_p_value)

你可能感兴趣的:(概率论,python,算法,机器学习,人工智能)