关闭

单总体分布卡方拟合优度检验

1612人阅读 评论(0) 收藏 举报
分类:


1 概率分布的检验

  1. 筛子是否均衡的检验

    考虑如下问题: 一枚骰子, 投掷600次, 出现1点到6点的次数如下

    Table 1: 骰子投掷次数数据
    1 2 3 4 5 6
    100 112 123 87 90 88

    试问骰子是否均匀

  2. 检验问题
    • 设骰子点数记为随机变量 Y , 取值为 1,2,,6 的概率分别为 p1,,p6
    • 检验如下假设: 原假设: H0:p1=p2=p6=1/6
    • 对立假设为: p1,,p6 不全相等
    • 采用哪个统计量来度量
  3. 卡方拟合优度检验
    • npi 为 n 次抛掷中 出现 i 点的理论频数
    • 记 ni 为n次抛掷中出现 i 点的次数
    • 取检验统计量为
      χ2=i=16(ninpi)2npi
    • 可以证明在原假设成立的条件下, 当样本量趋近于  时, 有
      χ2χ2(61)
    • 上述检验方法可以推广到概率不均等的情况
  4. 简单情形下定理的验证
    • 对于(0,1) 分布, 检验 Y 取值为1 的概率是否为 p
    • 此时卡方统计量为
      χ2=(Ynp)2np+((nY)n(1p))2n(1p)=(Ynp)2(1np+1n(1p))=(Ynp)2np(1p)=(Ynpnp(1p))2χ2(1)
  5. 卡方拟合优度的应用 -彩票数据
    • 彩票0-9 出现概率是否相同
    • 分布拟合
    Table 2: 近100期 6+1 彩票开奖号码-部分数据
    12112 2 6 2 3 9 8 3
    12113 0 5 0 1 7 8 1
    12114 9 2 9 2 4 1 9
    12115 7 9 6 6 2 9 1
    12116 8 2 2 1 9 1 9

    file: data/caipiao.csv

  6. 数据读取和检验结果
    • 在R软件中采用 chisq.test 函数进行卡方拟合优度检验
    • 首先给出 0-9 的频数统计
    caipiao<-as.matrix(read.table("data/caipiao.csv",header=F,sep=","))
    sj<-as.numeric(caipiao[,-1])
    a<-table(sj);names(a)<-0:9
    t(a)
    
          0  1  2  3  4  5  6  7  8  9
    [1,] 71 71 71 59 79 69 76 69 67 68
    
  7. 彩票数字均匀性检验
    chisq.test(a)
    
            Chi-squared test for given probabilities
    
    data:  a
    X-squared = 3.6571, df = 9, p-value = 0.9325
    

2 如何验证分布服从正态分布

  1. R 和matlab中的专门函数
    • 在R有专门的函数对数据的正态性进行检验,如
      • ‘shapiro.test’ which performs the Shapiro-Wilk test for normality.
      • 'ks.test' Perform a one- or two-sample Kolmogorov-Smirnov test.
    • 在Matlab中也有专门的函数
      • jbtest 实现 Bera-Jarque 检验
      • lillietest 实现Lilliefors 检验
      • kstest 实现了Kolmogorov-Smirnov 检验,可以检验分布和位置参数
  2. R 中正态分布检验举例
    set.seed(1314)
    x<-rnorm(200)
    y<-runif(200)
    shapiro.test(x)
    shapiro.test(y)
    
    	Shapiro-Wilk normality test
    
    data:  x
    W = 0.99, p-value = 0.1797
    
    	Shapiro-Wilk normality test
    
    data:  y
    W = 0.9506, p-value = 2.136e-06
    
  3. matlab进行lillietest检验
    x=normrnd(0,1,200,1);
    lillietest(x)
    y=unifrnd(0,1,200,1);
    lillietest(y)
    
    x=normrnd(0,1,200,1);
    lillietest(x)
    
    ans =
    
         0
    y=unifrnd(0,1,200,1);
    lillietest(y)
    
    ans =
    
         1
    

    ans=0 表示接受原假设, ans=1 表示拒绝原假设



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:22333次
    • 积分:360
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论