利用百分位点函数ppf计算置信区间上下限

2023-10-03 20:46

本文主要是介绍利用百分位点函数ppf计算置信区间上下限,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

百分位点函数(Percent Point Function,PPF),也称为逆分布函数或分位数函数,是概率分布函数的逆运算。它的作用是根据给定的累积概率值,计算随机变量的值,使得该值以下的累积概率等于给定的概率。

在统计和概率论中,百分位点函数对于估计分布的特定百分位值以及在假设检验中确定拒绝域的边界非常有用。

不同的概率分布(例如正态分布、t分布、F分布等)都有自己的百分位点函数。在Python的SciPy库中,您可以使用诸如scipy.stats.norm.ppf(正态分布的百分位点函数)或scipy.stats.t.ppf(t分布的百分位点函数)等函数来执行这些计算。

以下是一些常见的百分位点函数的示例:

 正态分布的百分位点函数示例:

import scipy.stats as stats# 指定概率值
probability = 0.95# 计算对应的随机变量值
x = stats.norm.ppf(probability)# 输出计算结果
print("正态分布的百分位点:", x)

t分布的百分位点函数示例:

import scipy.stats as stats# 指定概率值和自由度
probability = 0.95
degrees_of_freedom = 10# 计算对应的随机变量值
x = stats.t.ppf(probability, df=degrees_of_freedom)# 输出计算结果
print("t分布的百分位点:", x)

使用正态分布的百分位点函数stats.norm.ppf计算置信区间的上下限

import scipy.stats as stats# 指定概率值(例如,95% 置信水平对应的概率)
alpha = 0.05# 指定样本数据和样本大小
# data = [32, 34, 36, 35, 33, 31, 32, 33, 30, 34]
data = [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_size = len(data)# 执行D'Agostino's K-squared检验
stat, p_value = stats.normaltest(data)
# 输出结果
print("K-squared正态检验统计量:", stat)
print("K-squared正态检验P-value:", p_value)
# 判断是否符合正态分布的零假设
alpha = 0.05  # 显著性水平
if p_value < alpha:print("拒绝零假设,数据不符合正态分布。")
else:print("p_value>0.05无法拒绝零假设,数据符合正态分布。")# 计算样本均值和标准误差(标准差除以样本大小的平方根)
sample_mean = sum(data) / sample_size
sample_std = (sum([(x - sample_mean) ** 2 for x in data]) / (sample_size - 1)) ** 0.5
standard_error = sample_std / (sample_size ** 0.5)# 使用百分位点函数计算置信区间的上下限
confidence_interval_lower = stats.norm.ppf(alpha / 2, loc=sample_mean, scale=standard_error)
confidence_interval_upper = stats.norm.ppf(1 - alpha / 2, loc=sample_mean, scale=standard_error)# 输出置信区间的上下限
print("置信区间的下限:", confidence_interval_lower)
print("置信区间的上限:", confidence_interval_upper)

使用的是T分布的百分位点函数scipy.stats.t.ppf来计算置信区间的上下限

import scipy.stats as stats
import numpy as np# 指定概率值(例如,95% 置信水平对应的概率)
alpha = 0.05# 指定样本数据
data = np.array([32, 34, 36, 35, 33, 31, 32, 33, 30, 34])# 计算样本均值和标准误差
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)

让我们通过一个示例来演示如何检查数据是否符合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)

 概率密度函数值(Probability Density Function,PDF值)表示在概率分布中某个随机变量的取值处的概率密度。它衡量了在给定取值附近的数据点的密度或集中度,但不是直接的概率值。
在连续概率分布中,PDF值表示随机变量在某个特定取值处的相对概率密度,它的值越大表示在该点附近的数据点越密集,但并不代表具体的概率。概率密度函数的积分可以用来计算随机变量落在一个范围内的概率。
对于连续分布,如果我们要计算在某一范围内的概率,需要对PDF在该范围内的积分。数学上,PDF值通常满足以下两个性质:
PDF值不能为负数:在任何给定点,PDF值不能为负,因为它是表示密度的值。
总积分为1:整个分布的PDF积分等于1,因为它表示了所有可能的取值的密度分布。

这篇关于利用百分位点函数ppf计算置信区间上下限的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/682

相关文章

poj 1113 凸包+简单几何计算

题意: 给N个平面上的点,现在要在离点外L米处建城墙,使得城墙把所有点都包含进去且城墙的长度最短。 解析: 韬哥出的某次训练赛上A出的第一道计算几何,算是大水题吧。 用convexhull算法把凸包求出来,然后加加减减就A了。 计算见下图: 好久没玩画图了啊好开心。 代码: #include <iostream>#include <cstdio>#inclu

uva 1342 欧拉定理(计算几何模板)

题意: 给几个点,把这几个点用直线连起来,求这些直线把平面分成了几个。 解析: 欧拉定理: 顶点数 + 面数 - 边数= 2。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#inc

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

XTU 1237 计算几何

题面: Magic Triangle Problem Description: Huangriq is a respectful acmer in ACM team of XTU because he brought the best place in regional contest in history of XTU. Huangriq works in a big compa

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

GPU 计算 CMPS224 2021 学习笔记 02

并行类型 (1)任务并行 (2)数据并行 CPU & GPU CPU和GPU拥有相互独立的内存空间,需要在两者之间相互传输数据。 (1)分配GPU内存 (2)将CPU上的数据复制到GPU上 (3)在GPU上对数据进行计算操作 (4)将计算结果从GPU复制到CPU上 (5)释放GPU内存 CUDA内存管理API (1)分配内存 cudaErro

Java - BigDecimal 计算分位(百分位)

日常开发中,如果使用数据库来直接查询一组数据的分位数,就比较简单,直接使用对应的函数就可以了,例如:         PERCENT_RANK() OVER(PARTITION BY 分组列名 ORDER BY 目标列名) AS 目标列名_分位数         如果是需要在代码逻辑部分进行分位数的计算,就需要我们自己写一个工具类来支持计算了 import static ja

OpenStack离线Train版安装系列—2计算节点-环境准备

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

新一代车载(E/E)架构下的中央计算载体---HPC软件架构简介

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节能减排。 无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦躁、焦虑、毁掉你本就不多的热情和定力。 时间不知不觉中,快要来到夏末秋初。一年又过去了一大半,成