目录
1: 枢轴量
2: 单个正态总体均值的区间估计 已知
3: 单个正态总体均值的区间估计 未知
4: 例子
一 枢轴量
1.1 目的: 给定未知变量,以及样本
求出置信水平为的置信区间
1.2 方法:
1: 随机变量G,G的分布已知
2: 找到a
G是关于和样本的函数
3: 从a
就是参数的双侧置信区间
称为枢轴量
1.4 例: 为样本,总体,为未知参数
要估计u
解:
,因为有未知参数,所有不是枢轴量
1.5 由于a,b 可能有很多,如何取a,b
1: Neyman 原则: 求a,b 使得区间长度最短
3:從 ,解出
如果是双侧置信区间,有如下性质
是置信区间的下限
是置信区间的上限
二 单个正态总体的均值区间估计 已知
假设,为样本,为样本均值和方差,置信度为
2.1 已知
设常数a,b
等价于
因为对称
所以 置信区间长度
其中 为上分位数,查正态分布表的时候,得到分位数n
当置信度增大的时候,区间长度L也增大,精度下降
所以双侧置信区间为
单侧置信区间下限为
注:
:
同理单侧置信上限为:
三 单个正态总体的均值区间估计 未知
令 -a 四 例子 4.1 设新生儿童体重服从正态分布,从某个医院随机抽取16个儿童,体重如下 data = [3200,3050,2600,3530,\ 求置信区间为95%的双侧置信区间 解: 1: 如果未知,服从t(n-1)分布 置信区间为: 带入 : 置信区间下限2845.38 置信区间上限3554.62 2: 如果,方差已知,则服从正态分布 置信区间为 置信区间下限2955.00 置信区间上限3445.00 4.2 某种样本的寿命服从正态分布,现在随机抽取10个,样本方差S=0.92,样本均值, 求u得置信水平为95%的单侧置信区间下限 解: 4.3 1500人,身高高于180的,有375人,求180cm比例P的置信水平为95%的置信区间 解: 近似区间
3840,4450,2900,4180,\
2150,2650,2750,3450,\
2830,3730,3620,2270]import numpy as np
import scipy.stats as ss
from scipy.stats import norm
'''
获取分位数值a,t分布和正态分布都是对称函数
Args:
n: 自由度,t分布才有
alpha: 累积积分,p(x>a)=alpha
Ftype: 0:符合正态分布 1: t分布
'''
def GetQuantile(tp=1,n=15,alpha=0.025):
if 1==tp:
print("\n t 分布")
normt = ss.t(n)
x = -normt.ppf(alpha)## 累积分布概率计算反函数
else:
print("\n 标准正太分布 ")
x= -norm.ppf(0.025,loc=0,scale=1)
print("\n x %6.3f"%x)
return x
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 23 16:26:20 2021
@author: chengxf2
"""
import numpy as np
def ConfidenceInterval(sigma=-1):
data = [3200,3050,2600,3530,\
3840,4450,2900,4180,\
2150,2650,2750,3450,\
2830,3730,3620,2270]
n = len(data)
u =np.mean(data)
s = 0.0
for x in data:
s+= np.power(x-u,2)
sd = np.sqrt(s/(n-1))
print("\n 样本均值 ",u, "\t 样本方差%6.2f"%sd )
if sigma == -1: #t 分布
Quantile = 2.1315
std = sd #样本差
else:
Quantile = 1.96 #分位数,查表可以得到
std= sigma #方差
print("\n u ",u,"\t n: ",n)
low = u-Quantile*(std/np.sqrt(n))
up = u +Quantile*(std/np.sqrt(n))
print("\n 置信区间下限%6.2f"%low, "\t 置信区间上限%6.2f"%up)
ConfidenceInterval(-1)
'''
單測區間估計
'''
def GetM():
quantile= GetQuantile(1,0.05,9)
print("\n 分位数",quantile)
xmean = 5.78 #樣本均值
s= 0.92 #方差
n = 10 #樣本總數
low = xmean- (s/np.sqrt(n))*quantile
print("\n low %5.2f"%low)
输出 5.25
'''
單測區間估計
'''
def GetM():
quantile= GetQuantile(1,0.025,1500-1)
print("\n 分位数",quantile)
xmean = 0.25#樣本均值
s= np.sqrt(0.1875) #方差
n = 1500 #樣本總數
low = xmean- (s/np.sqrt(n))*quantile
up = xmean+ (s/np.sqrt(n))*quantile
print("\n 下限 %5.3f"%low)
print("\n 上限 %5.3f"%up)
===========
t 分布 1499
x 1.962
分位数 1.9615478106169353
下限 0.228
上限 0.272