前言:
样本
分别来自 ,他们相互独立,
其样本均值和样本方差已知,置信水平为
目录:
1: 的区间估计,已知
2: 的区间估计,相等未知
3: 的区间估计,不等,样本n1,n2>30
4: 的区间估计,不等,样本n1,n2<30
5: 区间估计, 未知,
一 的区间估计,已知
置信区间为
二: 的区间估计,未知,
解:
置信区间为:
例1:比较两个型号的子弹枪口速度,随机选取型号1子弹10发,得到枪口速度的平均值
型号2 子弹20发,得到
总体近似可以看作正态分布,生产过程中要求方差近似相等,求 的一个置信水平为0.95的置信区间
解:
服从t 分布
def GetUDiff(x1=500,x2=496,alpha=0.05,s1=1.1,s2=1.2,n1=10,n2=20):
sw = np.sqrt(((n1-1)*np.power(s1,2)+(n2-1)*np.power(s2,2))/(n1+n2-2))
print("\n sw ",sw)
ppf1 = t.ppf(alpha/2,n1+n2-2)
print("\n ppf1 ",ppf1)
step = ppf1*sw*np.sqrt(1/n1+1/n2)
print("\n step ",-step)
Q1 = x1-x2+step
Q2 = x1-x2-step
print("\n 置信区间[ %4.2f"%Q1,"\t %4.2f]"%Q2)
GetUDiff()
置信区间[ 3.07 4.93]
得到的置信区间下限大于0,所以
例2:为提高某一化学生产过程的得率,采用一种新型的催化剂进行了
求总体均值差置信水平为0.95的置信区间
解:
x1=91.73
n1=8
s1= np.sqrt(3.89)
s2= np.sqrt(4.02)
x2 = 93.75
n2= 8
alpha =0.05
GetUDiff(x1,x2,alpha,s1,s2,n1,n2)
sw 3.955
ppf1 -2.1447866879169277
step 2.132688139386107
置信区间[ -4.15 0.11]
由于区间包含0,所以均值没有显著差异
三: 的区间估计,不等,样本n1,n2>30
置信区间:
四: 的区间估计,不等,样本n1,n2<30
k = min(n1-1,n2-1)
置信区间:
五 区间估计, 未知
置信区间为
两个点都是上分位数
# -*- coding: utf-8 -*-
"""
Created on Thu May 6 15:22:23 2021
@author: chengxf2
"""
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import f
import scipy.stats as stats
'''
获得F分布的置信区间
Args:
alpha 分位数
n1: 自由度1
n2: 自由度2
'''
def GetFRegion(alpha=0.1, n1=20,n2=20):
x1 = [15, 14.8,15.2, 15.4,14.9,15.1,15.2,14.8]
x2 = [15.2,15.0,14.8, 15.1,14.6,14.8,15.1,14.5,15.0]
x1mean = np.mean(x1)
n1 = len(x1)
x2mean= np.mean(x2)
n2 = len(x2)
print("\n x1Mean ",x1mean,"\t x2Mean ",x2mean)
upper = f.ppf(alpha/2,n1-1,n2-1)
lower = f.ppf(1-alpha/2,n1-1,n2-1)
print("\n 上alpha分位数1 ",lower,"\t 上alpha分位数2 ",upper)
s1 = np.std(x1,ddof = 1) #样本差
s2 = np.std(x2,ddof = 1)
left = (s1**2/s2**2)/lower
right =(s1**2/s2**2)/upper
print("\n 置信区间为[ %5.3f ---%5.3f ]"%(left,right))
'''
画F 分布图
pdf 概率密度函数
cdf 分布函数
ppf: 求分位數
sf: 1-CDF
args
df: X1的自由度n1
dn: x2的自由度n2
'''
def DrawF(alpha=0.05, df=20,dn=20):
plt.figure(figsize=(10,10))
x = np.linspace(f.ppf(0.01, df, dn), f.ppf(0.99, df, dn), 100)
y = f.pdf(x, df, dn)
plt.plot(x, f.pdf(x, df, dn), alpha=0.6, label='f')
lower_bound = f.ppf(alpha, df, dn)
upper_bound = f.ppf(1-alpha, df, dn)
lower_Index =0
upper_Index = 0
for i in range(len(x)):
if x[i]>lower_bound:
lower_Index = i-1
break
for j in range(len(x)):
if x[j]>upper_bound:
upper_Index = j
break
#print("\n upper_Index ",upper_Index)
xLeft =x[0:lower_Index:1]
xRight=x[upper_Index:-1:1]
#print("\n lower_bound ",lower_bound,"\t upper_bound",upper_bound)
#print("\n xLeft: ",xLeft,"\n xright ",xRight)
yLeft = f.pdf(xLeft,df,dn) #求概率密度函数
yRight = f.pdf(xRight,df,dn) #求概率密度函數
plt.fill_between(xLeft,yLeft,alpha=0.5,facecolor="g")
plt.fill_between(xRight,yRight,alpha=0.5,facecolor="red")
plt.legend(['F distribution'])
plt.show()
'''
dfn: 自由度
'''
#@f.ppf(0.95,dfn=1,dfd=4) #dfn: degree of freedom numerator
#DrawF()
GetFRegion()
置信区间为[ 0.227 ---2.962 ]