假设检验3- 卡方分布

本文介绍了卡方分布的性质及其在双边和单边假设检验中的应用。双边检验中,通过计算统计量和拒绝域确定P值,而单边检验分为左、右检验,分别计算对应的拒绝域和P值。并通过实例展示了如何进行检验。此外,还探讨了在鸢尾花数据集中使用卡方分布进行异常点检测的方法。
摘要由CSDN通过智能技术生成

前言:

目录

一 卡方分布

二  双边假设检验

三  单边假设检验

四  例子


一 卡方分布

     卡方分布

     n 个随机变量均符合标准正态分布,则其平方和符合自由度为n的卡方分布

     \chi(n)=\sum_i^n x_i^2

    重要性质

     \chi(n-1)=\frac{(n-1)s^2}{\sigma^2}


二  双边检验

     2.1   假设

         H_0: \sigma^2=\sigma_0^2, H_1: \sigma^2 \neq \sigma_0^2

    2.2   统计量

            \chi^2(n-1) = \frac{(n-1)s^2}{\sigma^2}

    2.3    拒绝域

             k1 =chi2.ppf(alpha/2)   k2=chi2.ppf(1-alpha/2)

              \frac{(n-1)s^2}{\sigma_0^2}\leq k_1 ,or \frac{(n-1)s^2}{\sigma_0^2} \geq k_2

               其中: k1 可以通过

             

    P值法

     p=\begin{Bmatrix} \chi^2 \leq & \chi_0^2(n-1) \end{Bmatrix}

      \chi_0^2=\frac{(n-1)s^2}{\sigma_0^2}

      由于是双边检验

      P_= 2*min(p,1-p)


三  单边检验

      小写的s是样本方差

      1: 左边检验

              1.1  假设  H_0: \sigma^2=\sigma_0^2 ; H_1: \sigma^2 \leq \sigma_0^2

               1.2 统计量  

               Z= \frac{(n-1)S^2}{\sigma_0^2} \sim \chi^2(n-1)

              1.3 拒绝域

                    P=P_{H_0}\begin{Bmatrix} {\frac{(n-1)S^2}{\sigma_0^2}} \leq {\frac{(n-1)s^2}{\sigma_0^2}} \end{Bmatrix}

                    =\begin{bmatrix} -\infty,\chi^2_{\alpha}(n-1) \end{bmatrix}

                     这里分位数代表下分位数,如果是上分位数写法为1-\alpha

              1.4 P值法

                      P=P_{H_0}\begin{Bmatrix} {\frac{(n-1)S^2}{\sigma_0^2}} \leq {\frac{(n-1)s^2}{\sigma_0^2}} \end{Bmatrix}

      2: 右边检验

            

 

              2.1  假设

                      H_0: \sigma^2 =\sigma_0^2 ; H_1: \sigma^2 \geq \sigma_0^2

                     

              2.2 统计量  

                      Z= \frac{(n-1)S^2}{\sigma_0^2} \sim \chi^2(n-1)

              2.3 拒绝域

                          =\begin{bmatrix} \chi_{1-\alpha}(n-1),\infty \end{bmatrix}

                

                            这里分位数代表下分位数,如果是上分位数写法为\alpha

              2.4 P值法

                       P_{-}=P\begin{Bmatrix} \chi^2(n-1) \geq \chi_0^2(n-1) \end{Bmatrix}

                      

 


四  例子:

    4.1  

 解:

      这是左边检验

     step1   H_0: \sigma^2=\sigma_0^2 ; H_1: \sigma^2 \leq \sigma_0^2

       step2 :统计量

        Z= \frac{(n-1)S^2}{\sigma_0^2} \sim \chi^2(n-1)

       统计量 14.57  

   step3:  在置信度为0.05,自由度为 24 情况下

        分位数 13.848 

    step4

            原假设成立 

      

# -*- coding: utf-8 -*-
"""
Created on Sat Jul 31 10:26:06 2021

@author: chengxf2
"""
import numpy as np
from scipy.stats import chi2
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler

'''
统计量
args
  df: 自由度
  s: 样本方差
  sigma: 方差
'''
def GetZ(df,s,sigma):
    
    z = df*s/sigma
    
    return z

def GetQ(alpha, df):
    
    q = chi2.ppf(alpha,df)# -*- coding: utf-8 -*-
"""
Created on Sat Jul 31 10:26:06 2021

@author: chengxf2
"""
import numpy as np
from scipy.stats import chi2
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler

'''
统计量
args
  df: 自由度
  s: 样本方差
  sigma: 方差
'''
def GetZ(df,s,sigma):
    
    z = df*s/sigma
    
    return z

def GetQ(alpha, df):
    
    q = chi2.ppf(alpha,df)
    return q
if __name__=="__main__":
    n= 25
    s= 4.25
    df = n-1
    sigma = 7
    alpha = 0.05
    
    
    z = GetZ(df,s,sigma)
    q =GetQ(alpha, df)
    
    print("\n 统计量 %5.2f"%z,"\t 分位数 %5.3f "%q)
    
    if z>q:
        print("\n 原假设成立 ")
    else:
        print("\n 拒绝原假设")
    return q
if __name__=="__main__":
    n= 25
    s= 4.25
    df = n-1
    sigma = 7
    alpha = 0.05
    
    
    z = GetZ(df,s,sigma)
    q =GetQ(alpha, df)
    
    print("\n 统计量 %5.2f"%z,"\t 分位数 %5.3f "%q)
    
    if z>q:
        print("\n 原假设成立 ")
    else:
        print("\n 拒绝原假设")

 

 4.2 鸢尾花 数据集种,每个维度归一化后,其平方和可以假设符合卡方分布

检验临界值法和P值法效果是否一样,找出分布异常的点。

解:

 

 

    通过代码 ,其效果完全一致。

# -*- coding: utf-8 -*-
"""
Created on Fri Jul 30 16:39:08 2021

@author: chengxf2
"""

import numpy as np
from scipy.stats import chi2
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler


'''
检验:
args
   x_std: 每一列的数据都是标准的正太分布
'''


def check(x_std, alpha=0.01):

    if alpha > 0.5:
        print("\n ========error=========")
        return

    m, n = np.shape(x_std)

    df = n  # 自由度

    low = chi2.ppf(alpha/2, df)  # 左边拒绝域
    up = chi2.ppf(1-alpha/2, df)  # 右边拒绝域

    for i in range(m):
        x = x_std[i]  # 样本
        a = np.power(x, 2)  # 样本平方
        b = np.sum(a)  # 随机变量的平方和符合卡方分布

        # p = 2*chi2.sf(b,df) #1-CDF 累计积分 ,双边分布的p值法
        p = chi2.cdf(b, df)
        p_ = 2 * min(p, 1.0-p)

        bReject_p = False
        bReject_N = False
        if p_ < alpha:
            bReject_p = True

        if b < low or b > up:
            bReject_N = True

        if bReject_p != bReject_N:
            print("\n P值法    %4.3f  i: %d " % (p, i))


'''
标准化
Args
  data:   数据集
 
return
  x_std: 样本标准化后的情况
  u: 每个维度的均值
  std: 每个维度的无偏标准差ddof = 0(n无偏);1(n-1)
'''


def standardization(data):
    #x_std = StandardScaler().fit_transform(data)
    scaler = StandardScaler().fit(data)
    x_std = scaler.transform(data)

    print("\n data ", np.shape(x_std))

    u = scaler.mean_
    sig = scaler.scale_

    #print("\n 维度均值: ", u, "\t 维度方差 ", sig)
    '''
    m, n = np.shape(data)
    for i in range(n):

        x = data[:, i]
        u = np.mean(x)
        sigma = np.std(x,ddof=0)

        print("\n i %d  u: %5.2f  sigma %5.3f" % (i, u, sigma))
    '''
    return x_std, u, sig


'''

 均值方差归一化 Standardization
 
加载数据集
Args
   None
   iris: ['target_names', 'data', 'target', 'DESCR', 'feature_names']
return

'''


def LoadData():
    data = load_iris()
    feature = data['data']
    m, n = np.shape(feature)

    return feature


if __name__ == "__main__":

    data = LoadData()
    x_std = standardization(data)
    check(x_std[0], 0.01)

  

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用近似卡方分布进行假设检验的一般步骤如下: 1. 建立假设:明确原假设(H0)和备择假设(H1)。原假设通常是我们希望证伪的假设,备择假设则是对原假设的否定或替代。 2. 选择适当的统计量:根据具体问题和假设,选择一个适当的统计量来衡量样本数据与假设之间的偏离程度。常见的统计量包括均值差异、比例差异或回归系数等。 3. 确定显著性水平:根据实际情况,确定显著性水平(α),通常取0.05或0.01。显著性水平表示我们拒绝原假设的程度。 4. 计算检验统计量:使用样本数据计算出所选择的统计量的值。 5. 确定临界值:根据显著性水平和自由度,查找近似卡方分布表格或使用统计软件,确定拒绝域的临界值。 6. 判断结果:比较计算得到的检验统计量的值与临界值,如果检验统计量的值落在拒绝域内,则拒绝原假设,否则接受原假设。 需要注意的是,近似卡方分布的使用是在满足一定条件下进行的,通常要求样本容量足够大。如果样本容量较小,可能需要使用精确的卡方分布或其他适当的分布进行假设检验。 此外,使用近似卡方分布进行假设检验还需要注意其他统计前提和假设的满足性,例如独立性、正态性等。具体的假设检验方法和步骤会根据具体问题的性质和数据类型而有所不同,建议参考相关统计学教材或咨询统计学专家以获得更具体的指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值