美文网首页R炒面机器学习
16-假设检验之T检验

16-假设检验之T检验

作者: wonphen | 来源:发表于2019-12-19 18:16 被阅读0次

    样本量较小(n<30),且总体方差未知时,使用T检验。T检验通过比较不同数据的均值,研究两组数据之间是否存在差异。大样本时用Z检验,但当样本量加大时,T分布与正态分布基本没有区别,因此大样本时也可直接使用T检验。

    T分布
    T检验主要用途:
    • 样本均值与总体均值的差异比较
    • 两样本均值的差异比较

    T检验的分类:

    • 单样本t检验
    • 独立样本t检验
    • 配对样本t检验
      T检验的分类
      R语言中的T检验
    t.test(x, y = NULL,
           alternative = c("two.sided", "less", "greater"),
           mu = 0, paired = FALSE, var.equal = FALSE,
           conf.level = 0.95, ...)
    # 其中x,y是由数据构成的向量。(如果只提供x,则作单个正态总体的均值检验,如果提供x,y则作两个总体的均值检验)
    # alternative表示备择假设,two.sided(缺省),双边检验(H1:μ ≠ μ0),less表示单边检验(H1:μ < μ0),greater表示单边检验(H1:μ > μ0)。
    # mu表示原假设μ0。conf.level置信水平,即1-α,通常是0.95。var.equal=TRUE表示两样品方差相同,var.equal=FALSE(缺省)表示两样本方差不同。
    

    1、单样本T检验

    例1. 某种原件的寿命X(以小时计)服从正态分布N(μ, σ)其中μ, σ2均未知。现测得16只元件的寿命如下:
    159, 280, 101, 212, 224, 379, 179, 264, 222, 362, 168, 250, 149, 260, 485, 170
    问是否有理由认为元件的平均寿命大于255小时?

    解:按题意,需检验
    H0: μ ≤ 225 H1: μ > 225
    此问题属于单边检验问题,可以使用R语言t.test

    x <- c(159, 280, 101, 212, 224, 379, 179, 264, 222, 362, 168, 250, 149, 260, 485, 170)
    t.test(x, y=NULL,
          alternative = "greater",
          mu = 225, paired = FALSE, var.equal = FALSE,
          conf.level = 0.95)
    
    > One Sample t-test
    > data:  x
    > t = 0.66852, df = 15, p-value = 0.257
    > alternative hypothesis: true mean is greater than 225
    > 95 percent confidence interval:
    > 198.2321      Inf
    > sample estimates:
    > mean of x 
    >   241.5 
    

    可见P值为0.257 > 0.05 ,不能拒绝原假设。接受H0,即平均寿命不大于225小时。

    2、配对样本t检验

    例2. 在平炉上进行的一项试验以确定改变操作方法的建议是否会增加钢的得率,试验时在同一个平炉上进行的,每炼一炉钢时除操作方法外,其它条件都尽可能做到相同,先用标准方法炼一炉,然后用新方法炼一炉,以后交替进行,各炼了10炉,其得率分别为
    标准方法 78.1 72.4 76.2 74.3 77.4 78.4 76.0 75.5 76.7 77.3
    新方法 79.1 81.0 77.3 79.1 80.0 79.1 79.1 77.3 80.2 82.1
    设这两个样本相互独立,且分别来自正态总体N(μ1, σ2) 和N(μ2,σ2),其中μ1,μ2和σ2未知。问新的操作能否提高得率?(取α=0.05)

    解1:根据题意,需要假设
    H0:μ1 ≥ μ2
    H1:μ1 < μ2
    因为数据是成对出现的,所以采用配对样本t检验更准确。所谓配对t检验就是Zi=Xi-Yi,再对Z进行单样本均值检验。

    x <- c(78.1, 72.4, 76.2, 74.3, 77.4, 78.4, 76.0, 75.5, 76.7, 77.3)
    y <- c(79.1, 81.0, 77.3, 79.1, 80.0, 79.1, 79.1, 77.3, 80.2, 82.1)
    t.test(x - y, alternative = "less")
    
    #或者:
    t.test(x, y, paired = T)
    
    > One Sample t-test
    > data:  x - y
    > t = -4.2018, df = 9, p-value = 0.00115
    > alternative hypothesis: true mean is less than 0
    > 95 percent confidence interval:
    >     -Inf -1.803943
    > sample estimates:
    > mean of x 
    >     -3.2 
    

    可见P值 < 0.05,拒绝原假设,接受备择假设,即新的操作能够提高得率。

    3、独立样本T检验

    独立样本t检验需要检验其适用条件,主要是指方差齐性,其他条件:样本独立性一般数据可以保障。t检验对样本正态性具有一定耐受性。
    方差齐性可以用car包leveneTest函数检验:

    leveneTest(y= , group = )
    

    其中,y是两组样本组成的数据,group是两组样本的分组情况。方差齐性检验之后,才可进行独立样本t检验。

    t.test(A, B, var.equal=TRUE,paired=FALSE)
    # A、B为数据集,var.equal=TRUE为方差齐性。paired=FALSE非配对样本。
    

    例3:有两组学生(每组10人),一组采用传统教育,一组采用素质教育。一学期后,两组学生语文成绩(满分100)如下。问两组学生成绩之间差别是否显著。
    传统组A
    85,84,95,73,77,65,85,93,90,91
    素质组B
    87,96,77,80,79,96,93,82,84,86

    解:方差齐性检验:

    x <- c(85,84,95,73,77,65,85,93,90,91)
    y <- c(87,96,77,80,79,96,93,82,84,86)
    
    #合并数据
    z <- c(x, y)
    
    #数据分组标签
    group = as.factor(c(rep(1, 10),rep(2, 10)))
    #载入car包
    library(car)
    
    #方差齐性检验
    leveneTest(y = z, group = group)
    
    #或者使用F检验(又称为方差齐性检验)来测试方差的齐性,使用函数var.test()
    var.test(x,y)
    
    > leveneTest(y = z, group = group)
    Levene's Test for Homogeneity of Variance (center = median)
          Df F value Pr(>F)
    group  1  0.3703 0.5505
          18      
    

    结果显示,P=0.5505>0.05。说明方差齐性。
    独立样本t检验:

    t.test(x, y, var.equal = T, paired = FALSE)
    
    Two Sample t-test
    
    data:  x and y
    t = -0.589, df = 18, p-value = 0.5632
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
     -10.047193   5.647193
    sample estimates:
    mean of x mean of y 
         83.8      86.0 
    

    结果显示P=0.5632>0.05,不拒绝原假设,说明两者没有区别。

    例4:有人测定了甲乙两地区某种饲料的含铁量(mg/kg),结果如下:
    甲地:5.9, 3.8, 6.5, 18.3, 18.2, 16.1, 7.6
    乙地:6.5, 1.5, 4.1, 5.5, 4.5, 6.1, 4.7
    试问这种饲料含铁量在两地间是否有显著差异?

    解:先进行方差齐性检验

    x <- c(5.9, 3.8, 6.5, 18.3, 18.2, 16.1, 7.6)
    y <- c(6.5, 1.5, 4.1, 5.5, 4.5, 6.1, 4.7)
    z <- c(x, y)
    group <- as.factor(c(rep(1, 7), rep(2, 7)))
    df <- data.frame(z, group)
    
    #leveneTest方差齐性检验
    library(car)
    leveneTest(z, group)
    
    Levene's Test for Homogeneity of Variance (center = median)
          Df F value  Pr(>F)  
    group  1  5.0947 0.04343 *
          12                  
    ---
    Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    

    因为Pr=0.04343<0.05,拒绝原假设,即方差不齐。此时设定var.equal=FALSE,表示方差不齐,默认是TRUE,方差齐性。可采用t’检验、变量变换或秩和检验等方法。

    t.test(x, y, paired=FALSE, var.equal=FALSE)
    
    Welch Two Sample t-test
    
    data:  x and y
    t = 2.5111, df = 6.8176, p-value = 0.04121
    alternative hypothesis: true difference in means is not equal to 0
    95 percent confidence interval:
      0.3304959 12.0980755
    sample estimates:
    mean of x mean of y 
     10.91429   4.70000 
    

    因为p-value = 0.04121<0.05,拒绝原假设,即这种饲料含铁量在两地间有显著差异。

    4、T检验的局限

    T检验使用起来很方便,但经常误用的情况包括:
    (1)不考虑数据的正态性,只要是两组比较就直接使用t检验(如果不符合正态性,就要采用Wilcoxon检验);
    解决方法:对总体正态检验,或者样本数量>=30
    (2)将t检验用于多组实验设计中的两两比较,增加假阳性错误(此时应该使用ANOVA);
    解决方法:使用F检验
    (3)不考虑资料是否独立,采用独立资料进行t检验分析。
    解决方法:检验样本之间的相关性,保证样本的独立性

    相关文章

      网友评论

        本文标题:16-假设检验之T检验

        本文链接:https://www.haomeiwen.com/subject/iqtpnctx.html