美文网首页统计学相关博客
R语言与统计-1:t检验与秩和检验

R语言与统计-1:t检验与秩和检验

作者: Hayley笔记 | 来源:发表于2021-07-09 10:51 被阅读0次

    一般根据数据是否符合正态分布,选择合适的统计方法:

    统计方法 适用情况
    t.test() 比较两组(参数)
    wilcox.test() 比较两组(非参数)
    aov()或anova() 比较多组(参数)
    kruskal.test() 比较多组(非参数)

    1. T检验

    T检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布资料。t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。它与Z检验卡方检验并列。

    做t检验需要满足的条件:
    1. 服从正态分布
    2. 方差齐性(方差是离散量,反映了数据的离散程度,如果两个方差的离散程度相差太大,说明两组数据的离散程度不一致,称为不齐性)

    不满足方差齐性用t'检验

    1.1 shapiro.test()函数检验数据是否服从正态分布
    data1 <- sample(1:100,50)
    shapiro.test(data1)
    
    #   Shapiro-Wilk normality test 
    
    #data:  data1
    #W = 0.94483, p-value = 0.02101 ##(p>0.05不能拒绝原假设,说明这组数据符合正态分布)
    

    其他进行正态性检验的函数 (如下函数都属于nortest包)
    Lillie.test()
    ad.test()
    cvm.test()
    pearson.test()
    sf.test()
    不同的函数可能会得到不同的结果。
    对于不服从正态分布的数据,可以采用一些方法使它服从正态分布。

    1.2 方差齐性检验var.test()

    var.test只能用于两样本方差齐性检验

    var.test()
    
    1.3 t检验(使用t.test()函数)
    • 两组样本均数的比较(两组样本的t检验)
    # 生成两组符合正态分布的数据
    data3 <- rnorm(100,3,5)
    data4 <- rnorm(200,3.4,8)
    
    ##方差齐性检验
    var.test(data3,data4)
    
    #   F test to compare two variances
    
    # data:  data3 and data4
    # F = 0.37241, num df = 99, denom df = 199,
    # p-value = 1.339e-07
    # alternative hypothesis: true ratio of variances is not equal to 1
    # 95 percent confidence interval:
    #  0.2670589 0.5297787
    # sample estimates:
    # ratio of variances 
    #          0.3724146 
    ###可以看到p值远<0.05,方差不齐
    
    #t检验
    #⚠️方法不齐时要设置var.equal = F,设置var.equal = F时进行的是t' test
    t.test(data3,data4,var.equal = F) 
    
    #   Welch Two Sample t-test
    
    # data:  data3 and data4
    # t = 0.39341, df = 286.43, p-value = 0.6943
    # alternative hypothesis: true difference in means is not equal to 0
    # 95 percent confidence interval:
    #  -1.158859  1.737839
    # sample estimates:
    # mean of x mean of y 
    #  3.407682  3.118192
    ###可以看到p>0.05,95%置信区间包括了0(和p>0.05等价),两组数据均值没有统计学差异
    
    • 样本均数与总体均数的t检验
    t.test(data3,mu=3.2) #mu设置总体均数
    
    #   One Sample t-test
    
    # data:  data3
    # t = 0.43198, df = 99, p-value = 0.6667
    # alternative hypothesis: true mean is not equal to 3.2
    # 95 percent confidence interval:
    #  2.453729 4.361636
    # sample estimates:
    # mean of x 
    #  3.407682 
    
    • 配对t检验
    data3 <- rnorm(200,3,5)
    data4 <- rnorm(200,3.4,5)
    t.test(data3,data4,paired = TRUE) #paired默认=False
    
    #   Paired t-test
    
    # data:  data3 and data4
    # t = -2.1637, df = 199, p-value = 0.03168
    # alternative hypothesis: true difference in means is not equal to 0
    # 95 percent confidence interval:
    #  -2.02744560 -0.09397804
    # sample estimates:
    # mean of the differences 
    #               -1.060712 
    
    1.4数据变换

    当数据不满足正态分布的时候,要进行t检验必须进行原始数据的变换。如取log,平方根,倒数,boxCox转换等。

    2. Wilcox秩和检验 wilcox.test()

    Wilcox秩和检验(又称Mann-Whitney U检验)是对原假设的非参数检验,在不需要假设两组样本数据为正态分布的情况下,测试二者数据分布是否存在显著差异,此检验适用于数据分布属于非正态性的分析对象,其适用范围相较于t检验广泛。

    #利用mtcars数据 
    library(stats)
    data("mtcars")
    boxplot(mtcars$mpg~mtcars$am,ylab='mpg',names = c('automatic','manual))
    
    #执行wilcoxon秩和检验验证自动档手动档数据分布是否一致
    
    wilcox.test(mpg~am,data = mtcars)
    #wilcox.test(mtcars$mpg[mtcars$am==0],mtcars$mpg[mtcars$am==1])  ##(与上面等价)
    
    # Wilcoxon rank sum test with continuity correction
    
    # data:  mpg by am
    # W = 42, p-value = 0.001871
    # alternative hypothesis: true location shift is not equal to 0
    
    # Warning message:
    #In wilcox.test.default(x = c(21.4, 18.7, 18.1, 14.3, 24.4, 22.8,  :
    #  cannot compute exact p-value with ties
    

    执行wilcoxon秩和检验(也称Mann-Whitney U检验)这样一种非参数检验 。t检验假设两个样本的数据集之间的差别符合正态分布(当两个样本集都符合正态分布时,t检验效果最佳),但当服从正态分布的假设并不确定时,我们执行wilcoxon秩和检验来验证数据集中mtcars中自动档与手动档汽车的mpg值的分布是否一致,p值<0.05,原假设不成立。意味两者分布不同。警告“无法精確計算带连结的p值“这是因为数据中存在重复的值,一旦去掉重复值,警告就不会出现。

    相关文章

      网友评论

        本文标题:R语言与统计-1:t检验与秩和检验

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