R与t分布(1) 概率密度函数

在概率论和统计学中,学生t-分布(Student's t-distribution),可简称为t分布。应用在估计呈正态分布的母群体之平均数。它是对两个样本均值差异进行显著性测试的学生t检定的基础。学生t检定改进了Z检定(Z-test),因为Z检定以母体标准差已知为前提。虽然在样本数量大(超过30个)时,可以应用Z检定来求得近似值,但Z检定用在小样本会产生很大的误差,因此必须改用学生t检定以求准确。

在母体标准差未知的情况下,不论样本数量大或小皆可应用学生t检定。在待比较的数据有三组以上时,因为误差无法压低,此时可以用变异数分析(ANOVA)代替学生t检定。

t分布的推导由英国人威廉·戈塞特(Willam S. Gosset)于1908年首先发表,当时他还在爱尔兰都柏林的吉尼斯(Guinness)啤酒酿酒厂工作。酒厂虽然禁止员工发表一切与酿酒研究有关的成果,但允许他在不提到酿酒的前提下,以笔名发表t分布的发现,所以论文使用了“学生”(Student)这一笔名。之后t检定以及相关理论经由罗纳德·费雪(Sir Ronald Aylmer Fisher)的发扬光大,为了感谢戈塞特的功劳,费雪将此分布命名为学生t分布(Student's t)。
参见[url=http://zh.wikipedia.org/wiki/%E5%AD%A6%E7%94%9Ft-%E5%88%86%E5%B8%83]维基百科[/url]
T的概率密度函数是[img]http://upload.wikimedia.org/math/2/f/1/2f1cbc52ffbbed4d169e95b9e5870383.png[/img]
v 等于n − 1。 T的分布称为t-分布。参数v 一般被称为自由度。

t分布 - 特征
1.以0为中心,左右对称的单峰分布;
2.t分布是一簇曲线,其形态变化与n(确切地说与自由度ν)大小有关。自由度ν越小,t分布曲线越低平;自由度ν越大,t分布曲线越接近标准正态分布(u分布)曲线
t分布,在概率统计中,在置信区间估计、显著性检验等问题的计算中发挥重要作用。

set.seed(1000)
x<-seq(-5,5,length.out=1000)
y<-dt(x,1,0)

plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,0.5),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The T Density Distribution")

lines(x,dt(x,5,0),col="green")
lines(x,dt(x,5,2),col="blue")
lines(x,dt(x,50,4),col="orange")

legend("topleft",legend=paste("df=",c(1,5,5,50)," ncp=", c(0,0,2,4)), lwd=1, col=c("red", "green","blue","orange"))


结果如下:

[img]http://dl2.iteye.com/upload/attachment/0103/2559/6312c617-5d43-385c-9147-4270b7c31546.jpeg[/img]
<think> 正态分布概率密度函数(PDF)的数学表达式为: \[ f(x) = \frac{1}{\sigma \sqrt{2\pi}} \exp\left(-\frac{(x - \mu)^2}{2\sigma^2}\right) \] 其中: - \(\mu\) 是均值(决定分布的中心位置) - \(\sigma\) 是标准差(决定分布的宽度) - \(\pi\) 是圆周率(约3.14159) - \(\exp\) 是自然指数函数(e的幂次) ### Python实现正态分布PDF 我们可以使用两种方式实现: 1. 使用数学公式直接计算 2. 使用SciPy库的`norm.pdf`函数 #### 方法1:手动实现公式 ```python import numpy as np import matplotlib.pyplot as plt def normal_pdf(x, mu=0, sigma=1): """ 计算正态分布概率密度函数 参数: x: 输入值 mu: 均值, 默认为0 sigma: 标准差, 默认为1 返回: 概率密度值 """ coefficient = 1 / (sigma * np.sqrt(2 * np.pi)) exponent = - (x - mu) ** 2 / (2 * sigma ** 2) return coefficient * np.exp(exponent) # 生成数据点 x = np.linspace(-5, 5, 100) y = normal_pdf(x) # 绘图 plt.figure(figsize=(10, 6)) plt.plot(x, y, 'b-', linewidth=2) plt.title('Normal Distribution PDF ($\mu=0$, $\sigma=1$)') plt.xlabel('x') plt.ylabel('Probability Density') plt.grid(True) plt.show() ``` #### 方法2:使用SciPy库 ```python from scipy.stats import norm # 使用SciPy计算 y_scipy = norm.pdf(x, 0, 1) # 等同于 normal_pdf(x) # 验证两种方法是否一致 print("手动实现SciPy是否一致:", np.allclose(y, y_scipy)) ``` #### 代码说明: - `normal_pdf`函数实现了正态分布的数学公式 - `np.allclose`用于验证手动实现SciPy库结果是否接近(考虑浮点数误差) - 绘图展示标准正态分布(μ=0, σ=1)的钟形曲线特征 ### 正态分布PDF的性质 1. **对称性**:关于均值μ对称 2. **峰值位置**:最大值在 \(x = \mu\) 处,值为 \(\frac{1}{\sigma\sqrt{2\pi}}\) 3. **拐点位置**:在 \(x = \mu \pm \sigma\) 处 4. **渐进行为**:当 \(x \to \pm\infty\) 时,\(f(x) \to 0\) ### 应用场景 - 假设检验(如Z检验、t检验) - 置信区间计算 - 自然现象建模(如身高、测量误差) - 机器学习中的噪声建模 --- §§相关问题§§: 1. 如何用Python计算正态分布的累积概率(CDF)? 2. 正态分布参数估计(如何从数据中估计μ和σ)? 3. 如何使用Python生成服从正态分布的随机数? 4. 多元正态分布概率密度函数如何定义?如何用Python实现? </think> ### 正态分布概率密度函数 (PDF) 正态分布(高斯分布)的概率密度函数是统计学中最核心的分布之一,其数学定义为: \[ f(x | \mu, \sigma^2) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x - \mu)^2}{2\sigma^2}} \] 其中: - \(\mu\):均值(分布的中心位置) - \(\sigma\):标准差(分布的离散程度) - \(\sigma^2\):方差 - \(\pi\):圆周率(≈3.14159) - \(e\):自然常数(≈2.71828) #### Python 实现代码 以下是三种实现方式: ##### 1. 使用数学公式直接计算 ```python import numpy as np import matplotlib.pyplot as plt def normal_pdf(x, mu=0, sigma=1): """计算正态分布概率密度函数""" coefficient = 1 / (sigma * np.sqrt(2 * np.pi)) exponent = -((x - mu) ** 2) / (2 * sigma ** 2) return coefficient * np.exp(exponent) # 生成数据点 x = np.linspace(-5, 5, 500) y = normal_pdf(x) # 可视化 plt.figure(figsize=(10, 6)) plt.plot(x, y, 'b-', linewidth=2) plt.title('Standard Normal Distribution PDF (μ=0, σ=1)') plt.xlabel('x') plt.ylabel('Probability Density') plt.grid(True) plt.show() ``` ##### 2. 使用 SciPy 库 ```python from scipy.stats import norm # 计算标准正态分布 (μ=0, σ=1) x = np.linspace(-5, 5, 500) y = norm.pdf(x) # 可视化(同上) ``` ##### 3. 计算不同参数的正态分布 ```python # 不同参数的PDF mu_params = [-1, 0, 2] sigma_params = [0.5, 1, 1.5] colors = ['r', 'g', 'b'] plt.figure(figsize=(12, 8)) for mu, sigma, color in zip(mu_params, sigma_params, colors): y = norm.pdf(x, mu, sigma) label = f'μ={mu}, σ={sigma}' plt.plot(x, y, color, linewidth=2, label=label) plt.title('Normal Distributions with Different Parameters') plt.xlabel('x') plt.ylabel('Probability Density') plt.legend() plt.grid(True) plt.show() ``` ### 关键特性说明 1. **钟形曲线**: - 对称分布,峰值位于均值 \(\mu\) - 标准差 \(\sigma\) 控制曲线的宽度 2. **参数影响**: ```python # 固定σ=1,改变μ plt.figure(figsize=(10, 6)) for mu in [-2, 0, 3]: plt.plot(x, norm.pdf(x, mu, 1), label=f'μ={mu}') # 固定μ=0,改变σ plt.figure(figsize=(10, 6)) for sigma in [0.7, 1, 2]: plt.plot(x, norm.pdf(x, 0, sigma), label=f'σ={sigma}') ``` 3. **3σ法则**: - 68.27% 数据在 \(\mu \pm \sigma\) 范围内 - 95.45% 数据在 \(\mu \pm 2\sigma\) 范围内 - 99.73% 数据在 \(\mu \pm 3\sigma\) 范围内 ### 应用场景 - 自然现象建模(身高、测试分数等) - 统计推断(假设检验、置信区间) - 机器学习(高斯朴素贝叶斯、高斯过程) - 金融(资产收益率建模) ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值