美文网首页遗传学Linux与生物信息R语言
【R-statistics】基本统计量、假设检验和置信区间

【R-statistics】基本统计量、假设检验和置信区间

作者: 巩翔宇Ibrahimovic | 来源:发表于2022-05-20 12:03 被阅读0次

    写在前面
    温习一下用R做基本统计的过程。

    summary(cars)
    
    plot(pressure)
    

    ======================================
    绪论:
    概率?统计?
    世界是随机的
    模型 --概率--> 数据
    数据 --统计--> 模型

    常见概率模型

    离散型:
    binom:二项分布
    geom:几何分布
    hyper:超几何分布
    nbinom:负二项分布
    pois:泊松分布

    连续型:
    norm:正态分布
    unif:均匀分布
    exp:指数分布
    gamma:伽马分布
    beta:贝塔分布
    t:t分布
    f:F分布
    chisq:卡方分布

    R语言中的四种前缀

    d:概率密度函数f
    p:概率分布函数F
    q:分位数F^(-1)
    r: 随机数

    一些例子

    #扔100次硬币,恰好出现50次的概率
    #dbinom(x, size, prob, log = FALSE)
    dbinom(50,100,0.5)
    pbinom(50,100,0.5)
    pbinom(40,100,0.5)
    qnorm(0.05)
    qnorm(0.025)
    #均匀分布的随机数
    runif(10,0.1)
    

    多元正态

    library(mvtnorm)
    mu <- c(1,-1)
    sig <- matrix(c(1,0.5,0.5,1),2,2)
    x <- rmvnorm(100,mu,sig)
    x[1:10,]
    plot(x=x[,1],y=x[,2])
    

    常见统计量

    均值;方差;标准差;中位数;四分位数

    data("mtcars")
    attach(mtcars) #如果存在多个数据集的时候,用attach()可能会造成误解;
    mean(wt)      #此时应用$来代替attach()。
    var(wt)
    sd(wt)
    median(wt) #中位数对极端值不敏感
    quantile(wt,0.25)
    #自定义分位数
    quantile(wt,c(0.1,0.25,0.5,0.75,0.9))
    
    

    次序统计量

    min(wt)
    max(wt)
    #排序,默认由小到大
    wtinc <- sort(wt)
    wtinc[1:10]
    #设置“decreasing = T”,变成从大到小排列
    wtdec <- sort(wt,decreasing = T)
    wtdec[1:10]
    
    summary(wt)
    table(vs)
    

    多元数据

    #2是按列,1是按行
    apply(mtcars,MARGIN = 2,mean)
    apply(mtcars,MARGIN = 2,var)
    #协方差矩阵
    C <- cov(mtcars)
    C
    ##相关性系数
    cr <- cor(mtcars)
    cr
    

    ======================================

    假设检验和区间估计

    summary(cars)
    
    plot(pressure)
    

    常用统计函数

    常见假设检验和区间估计

    两个几乎对应的概念
    假设检验:用p值衡量数据与关于参数的原假设的差异程度。
    区间估计:基于数据推断对应参数的一个可能区间。
    如果区间包含对应原假设值 ---》接受原假设
    如果区间不包含对应原假设值 ---》拒绝原假设
    某种意义上来说区间估计的信息更多或更直接
    但有些时候假设检验对应的区间估计难以得到或不存在。

    均值检验:t test

    单样本

    data("mtcars")
    attach(mtcars)
    t.test(wt,mu=3) #默认是双尾检验
    t.test(wt,mu=3,alternative = "greater") #指定为单尾检验
    
    双尾检验.png 单尾检验.png

    注:
    1.理论上来说,t检验依赖于正态性建设
    2.但由于中心极限,大样本也可以用
    3.但多大是大呢?30?skewness!通过斜度来纠正

    双样本数据

    做t.test一般不考虑variance.equal=T

    wt_am <- wt[am==0]
    wt_mn <- wt[am==1]
    t.test(wt_am,wt_mn)
    #方差相同时的假设,power可能更高;更高更好;但一般不推荐
    t.test(wt_am,wt_mn,var.equal = T)
    
    image.png

    sample size determination based on power fuction

    功效函数:给定真实参数值和样本量,假设被拒绝的概率
    由此反推,如果给定真实参数值和期望的假设被拒绝的概率,样本需要多少?

    power.t.test(n=32,delta = abs(3.5 - 3),sd=sd(wt), sig.level = 0.05,power = NULL,type = "one.sample",alternative = "one.sided")
    

    如果是双样本,标准差建议使用双样本标准差的平方平均

    power.t.test(n=NULL,delta = abs(1 - 0),sd=sqrt(var(wt_am)+var(wt_mn)), sig.level = 0.05,power = 0.9,type = "two.sample",alternative = "two.sided")
    

    配对t检验

    为了提高功效,在实验条件允许的情况下,我们可以采集配对数据,每对数据其他协变量相近(统计变量法的统计版)
    此时不应该使用之前的t test(over conservative,会造成更高的p值)
    因为两组样本之间存在强相关性,从而带来更高的precison and power
    试验设计优先。

    x <- c(113,120,138,120,100,118,138,123)
    y <- c(138,116,125,136,110,132,130,110)
    cor(x,y)
    t.test(x,y,paired = T)
    t.test(x,y)
    
    Paired T test.png

    方差检验:F test

    检验两组样本的方差是否相同

    var.test(wt_am,wt_mn)
    
    方差齐性检验.png

    注:
    1.这个检验基于正态性假设且及其敏感(如何检查正态性)

    相关性检验

    由试验设计决定

    cor.test(x,y)
    

    正态性检验

    • 正态w检验法 shapiro-wilk
    • qqplot
    shapiro.test(wt)
    qqnorm(wt)
    qqline(wt)
    
    shapiro.test.png qqnorm.png

    用随机数的例子

    shapiro.test(runif(100))
    

    注:
    1.检验和qq plot都很重要;后者更直观
    2.还有一些非参的方法(KS,Peason),但就正态性这一问题来说,S-W的power更大。

    Pearson卡方检验

    单变量

    (默认是)检验概率是否均匀

    x <- c(210,312,170,85,223)
    chisq.test(x)
    

    注:
    1.也可以设置成给定的非均匀概率
    2.本质是刻画观测数据与期望数据的差距。

    双变量(列连表)

    检验两个变量是否独立。

    x <- matrix(c(60,3,32,11),2,2)
    x
    chisq.test(x)
    

    注:
    1.本质是通过边际概率+独立性假设计算联合概率,进而计算期望频数并与数据比较
    2.检验仅能说明存在相关性而非因果性
    3.若想获得因果性,需要修改的并非是检验,而是试验设计(随机化!)
    4.如果某一个单元格的期望频数小于5,则检验不可靠,R会给出warning。

    针对期望频数小于5的列联表
    Fisher.test

    x <- matrix(c(4,5,18,6),2,2)
    x
    chisq.test(x)
    fisher.test(x)
    

    注:
    1.通过考虑所有的排列组合去刻画概率(Lady tasting tea),因此是exact
    2.在因果推断是一个重要的检验
    3.可能会出现样本数量过大而无法考察所有的组合情况,此时需要Monte Carlo方法近似

    参考链接:
    1.https://space.bilibili.com/40285258/?spm_id_from=333.999.0.0
    2.白话统计学
    3.南方科大生物统计-https://www.bilibili.com/video/BV1Sf4y1N76S?p=10&spm_id_from=pageDriver

    相关文章

      网友评论

        本文标题:【R-statistics】基本统计量、假设检验和置信区间

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