前言:
? ? ? ? 最近遇到一个问题,比如KNN 推荐出K个最邻近的数据。
当概率最高的一类和概率次高的一类很接近的时候,是否存在统计学差异。
如果无统计学差异可以合并成新的一类
再??回顾一下概率论
一 假设检验
? ? ? ?1.1? 假设检验的基本步骤
? ??
? ? 1.2? 第一类错误第二类错误
? ??
?
? 1.3 单边,双边
? ? ? 针对拒绝域分类:一般拒绝域都非常小 0.1,0.05,0.01,0.005
拒绝区域在左 | 左边检验 | 拒绝域在右 | 右边检验 | 拒绝域在两边 | 双边检验 |
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 25 21:02:10 2021
@author: cxf
"""
import scipy.stats as stats #该模块包含了所有的统计分析函数
import numpy as np
from enum import Enum
class QTYPE(Enum):
LEFT = 1
RIGHT =2
DOUBLE =3
'''
获取分位数
alpha: 置信度
args:
下alpah 分位数
'''
def GetQ(alpha,tp:QTYPE):
if tp is QTYPE.DOUBLE:
q = stats.norm.isf(alpha/2)
elif tp is QTYPE.RIGHT:
q = stats.norm.isf(alpha)
return q
def Run():
u = 50 #均值
s = 0.25 #标准差
alpha = 0.05
data =[0.497, 0.506, 0.518, 0.524,
0.498, 0.511, 0.520, 0.515,
0.512]
n = len(data)
#x_bar = np.mean(data)
x_bar = 48
n = 100
z = (x_bar-u)/(s/np.sqrt(n))
q = GetQ(alpha,QTYPE.DOUBLE)
print("\n 上alpha 分位数: %5.2f 统计量 %5.2f"%(q,z))
if np.abs(z)>q:
print("\n ====拒绝 假设H0=====")
else:
print("\n ====H0 假设成立=====")
'''
H0 u<=u0
H1 U>UO
'''
def example():
u = -0.545
s = 0.008
n = 5
xbar = -0.535
alpha = 0.05
q = GetQ(alpha, QTYPE.RIGHT)
z = (xbar-u)/(s/np.sqrt(n))
print("\n 统计量 %6.3f, 分位数 %6.3f "%(z,q))
if z>q:
print("\n ====假设不成立============")
else:
print("\n=======假设成立=========")
if __name__ =="__main__":
Run()
|