目录:
- OC 函数或者实行特征函数
- 第一类错误第二类错误
- Z检验的OC函数
- t检验的OC 函数
- 两个正态总体均值差的t检验OC 函数
一 OC 函数或者实行特征函数
如果C是参数的某个检验问题的检验法:
其曲线成为OC 曲线。
这里要检验的是在统计量落于置信区间内的时候,犯第二类错误的原因。
二 第一类错误第二类错误
第一类错误: 实际是真的,预测值为假的。我们通过
来控制该概率
第二类错误: 实际是假的,预测值为真的,我们通过
来控制该概率
三 Z检验的OC函数
3.1 OC 右边检验
, 要检查犯第二类错误(),是关于单调递减函数
设:
(也是小于0.5的数,越小越好)
从大于0开始看是递减的
3.2 OC 左边检验
其中
3.3 OC 双边检验
得到
3.4 例
设有一批产品,产品质量的指标x服从正态分布,以U小为佳。厂方要求所确定的验收方案
对高质量的产品(),能以高概率为买方所接受,买方要求低质产品(,能以高概率1-被拒绝。
已知:
解
这是一个单边检验
n =25
四 t 检验的0C 函数
这是一种非中心的T 分布
4.1 单边: 右边检验:的t 检验法的OC函数是
其中变量:
符合非中心参数,自由度n-1的非中心t 分布(from scipy.stats import nct)
这里面的推导过程,也是比较疑惑的地方
右边检验的OC函数:
得到:
,因为样本方差的数学期望等于方差,
所以
这个一直每找到详细的证明过程,按照这个求解方法和表格基本一致。
4.2 双边检验的例子
4.3 数理统计表7计算方法
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 16 20:23:18 2021
@author: cxf
"""
import numpy as np
from scipy.stats import nct
import matplotlib.pyplot as plt
def Draw():
fig,ax = plt.subplots(1, 1)
df ,nc= 14,5.24
#df 是概率密度
x = np.linspace(nct.ppf(0.01,df,nc),nct.ppf(0.99,df,nc),100)
ax.plot(x,nct.pdf(x,df,nc),'r-',lw=5,alpha=0.6,label='nct pdf')
#pdf 概率密度
#cdf 分布函数
#pmf 概率质量函数
'''
单边例子
Loc,scale 相当于归一化因子
df 自由度
nc 中心值
nct.pdf(x, df, nc, loc, scale)
nct.pdf(x, df, nc, loc, scale) is identically equivalent to
nct.pdf(y, df, nc) / scale with y = (x - loc) / scale.
Unilateral, bilateral
'''
def unil(alpha=0.05,beta=0.05,sigma = 1.0):
minN = -1
for n in range(3,200):
#nc = sigma*np.sqrt(n)
nc = 0.0
q1 = nct.isf(alpha,n-1,nc)
q2 = nct.isf(beta,n-1,nc)
a = (q1+q2)/(sigma)
if np.sqrt(n) >= a :
print("\n n ",n)
minN = n
return
else:
continue
print("\n-----------end------------",minN)
return n
'''
双边例子
'''
def bila(alpha =0.05, beta = 0.1,delta =0.4):
for n in range(2,100):
a = nct.isf(alpha/2.0,n-1,0)
b = nct.isf(beta,n-1,0)
c =(a+b)/delta
if np.sqrt(n)>=c:
print("\n n ",n,"\t a:%4.2f---b:%4.2f"%(a,b))
break
unil(0.05,0.1,0.25)
bila(0.05,0.1,0.4)
4.4 例 考虑显著水平 进行t 检验
要求在H1 中 时犯第二类错误的概率小于0.05,求样本容量
解:
通过上面表格,或者程序可得n=13
4.5 样本容量为30,,,求解
得到0.01
差表,或者通过下面算法可得
def GetBeta(n,alpha,delta):
nc = 0
q1 = nct.isf(alpha,n-1,nc)
q2 = delta*np.sqrt(n)
x =q1-q2
beta = nct.cdf(x,n-1,0)
print("beta %3.2f--x%4.2f"%(beta,x))
4.6 考虑在显著水平0.05 进行t 检验, 犯第二类错误的概率小于0.1,求样本容量
解:
双边检验例子,通过查表或者上面算法可得n =68
4.7 当方差未知情况下如何处理,只有
先抽取n1个样本,,查表7 ,定出样本容量,如果n1>=n2,则n =n1
否则再取n2-n1个样本与原样本合并,
查表7 得n3,n2如果大于等于n3
则n=n2,否则递归下去
五 两个正态总体均值差的t检验OC 函数
若两个正态总体
,
在均值差的检验问题
可以参考上面的方法
解:
两个差值服从自由度为n-1的 t 检验
step1:
计算
step2
通过F检验,计算方差
知道在显著水平0.1的F检验,两者方差相等
通过矩估计法
step3
通过
查 表 7(还是均值的t样本容量)
n>=8,因为n =12 已经满足要求OC函数
取伪概率很低
step4 右边的拒绝域为
因为观察样本
接受H0
注: 这里因为 所以查表7 ,成对数据的差值,看成单样本的情况。否则查表8
'''
hstack()函数
函数原型:hstack(tup) ,参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。看下面的代码体会它的含义
也就是按水平(按列的顺序)对数据进行堆叠 h就是 horizontal 水平方向上的意思,vstack正好相反
'''
def GetC():
A =np.array([81,84,79,76,82,83,84,80,79,82,81,79])
B =np.array([76,74,78,79,80,79,82,76,81,79,82,78])
C= np.hstack((A,B))
print("\n",np.std(C,ddof=1)**2)
A_bar = np.mean(A)
B_bar = np.mean(B)
SA = np.std(A,ddof =1)
SB = np.std(B,ddof =1)
n = len(A)
df = n-1
dn = n-1
f_q= f.isf(0.1,df,dn)
a = (SA**2)/(SB**2)
print("\n F分布检查方差,右边检验 a: %5.2f---f_q %5.2f"%(a,f_q),"\t 自由度: ",n-1)
sigma =(SA**2+SB**2)/2.0
print("\n step1 A 均值 %5.2f --- B 均值 :%5.2f "%(A_bar,B_bar))
print("\n step2 SA 均值 %5.2f --- SB 均值 :%5.2f /t 样本方差 %5.2f "%(SA**2,SB**2,sigma))
delta = 5.0/np.sqrt(sigma) #(u-u0)/sigma
n =unil(0.01,0.01,delta)
print("\n OC 函数求n",n)