分类: 基础统计

  • 预测变量与响应变量

    预测变量(Predictor variable),又叫做自变量、独立变量、解释变量,是分析中用于预测或解释响应变量的变量。在回归分析中,预测变量是模型的输入。

    响应变量(Response variable),又称为因变量或依赖变量。在分析中被预测的变量。回归分析中,响应变量是模型的输出。

    简言之,预测变量是x,响应变量是y。预测变量用来预测,响应变量被预测。

  • 标准差与标准误

    样本1样本2样本3样本4样本5 
    值1值1值1值1值1 
    值2值2值2值2值2 
    值3值3值3值3值3 
    值4值4值4值4值4 
    值5值5值5值5值5 
    SD1SD2SD3SD4SD5 
    mean1mean2mean3mean4mean5SE

    样本标准差近似等于总体标准差,但是如果样本容量比较大(通常>30),也可以用单一样本的方差/n,来近似计算样本均值抽样分布的方差。

    误差线使用标准差还是使用标准误?

    标准差和标准误的层面是不同的,标准差针对的是样本中的每一个值。

    标准误针对的各个样本的均值。

    阐述的对象是单一样本中的值时,标准差是误差线;

    阐述的对象是样本间均值时,标准误是误差线。 

  • Hardy-Weinberg equilibrium

    当群体很大且随机交配,且没有自然选择、基因漂移、突变等因素干扰时,群体中等位基因频率和基因型频率保持稳定的状态。

  • 数据分析能做什么,不能做什么?

    1. 数据分析可以提取样本的特征,揭示集中趋势和变化。集中趋势可以理解为中心点(均值),不同的个体根据标准差浮动。
    2. 数据分析可以比较出样本间的差异。例如,医学上通常用检测两组人员,用于判断一种药物是否有效——一组服用正常药物,另一组服用安慰剂。统计学检验和效应值的估计有助于判断差异的可靠性。
    3. 数据分析可以帮助理解数据中的关系,关系的种类有多种。两件事同时发生时,我们叫做关联,如打雷和闪电;又如,致病基因和外在表现。另一种叫做相关性,用于衡量关系的紧密程度的物理量,包括正向和负向的相关。依赖关系不仅可以被证明存在,测出其的强度,还可以理解方向和预测在未知情况下的效应(这是一个统计模型)。
    4. 数据分析可能有助于理解数据结构。这在统计学中是最复杂的,因为会涉及很多变量和对象。在数据结构分析中,最重要的是分类。适当的分类是解绝大多数问题的前提。

    上述两种方法,包括了两种描述性(可视化)方法和两种推断方法。推断方法通常以概率论和数学为基础。推断法又包括参数方法、非参数方法、稳健方法和重抽样方法。数据分析还有一些是无能为力的:

    1. 数据分析不是主观想象的,是客观的。只有对数据足够的了解,以及明确要回答的问题时,才应该开始进行数据分析。
    2. 数据分析不是确定的。大多数推断方法基于概率论,属于概率事件。
    3. 数据分析不能反应整个世界,只能基于样本。
  • 我们为什么需要统计分析?

    教育通常只口头说说统计很重要,在各行各业都重要,但是很少有人关注到底我们为什么要做统计分析。通俗地讲,统计分析可以让我们把复杂的事情分解,从而有助于我们理解事物,帮助我们判断和决策。当需要处理的问题超过了大脑的常规负荷时,统计分析的重要性就体现出来了。

    我们来看一个例子,有一组数字(1,2,1,0,1,1,1,0),很明显,这个向量的均值趋近于1,这是我们大脑能够负担的范围。我们用Excel构造一串随机数,在任意单元格内输入`=rand()`并回车,然后拖拽几十行,可以看出趋势吗?很明显,大多数人的大脑已经对此无能为力了,那么更大的数据量呢?比如玉米的基因型数据,每个玉米材料有995690个变异,大脑肯定是靠不住了。在样本数量足够大时,除非结果唯一,否者依靠大脑很难处理。这可能也是人为什么能够比其他动物更聪明的原因,人能利用工具、文字解决大脑不能直接处理的问题,甚至可以创造工具。

    总的来说,样本数量较多且数据不唯一时,则需要用到统计分析;另外,变量的数量较多,同样需要统计分析。无论哪种情况,归根到底,当我们的大脑没办法直接看出趋势做出判断的时候,我们就需要做统计分析。

    延申:

    用数字就能理解万物吗?我想是可以的。我国《道德经》有云,“道生一,一生二,二生三,三生万物。”这与现在计算机的发展完全一致!计算机用0和1的编码,已经可以创造丰富多彩的虚拟世界,创造出来的虚拟世界还在不断地完善和扩充,向着“元宇宙”的方向迈进。既然用数字可以造物,那么用数字来理解事物肯定也是可行的。大自然给了我们无穷的奥妙,好像每个事物都足够复杂,需要我们一点一滴的慢慢理解,而统计分析,则是打开智慧大门的金钥匙。

  • 统计分析的基础——抽样原则

    抽样主要有两个原则——重复和随机。

    重复的意思是,具有相同的效应的对象需要研究多次。这个原则来自于统计学的基石——中心极限定理,也叫做”大数定理“,简单说就是数量越多越准确。做重复的时候,需要保证每个重复是独立的,互相没有影响。比如,我们要研究植物能否让蜡烛持续燃烧,那么就用一个玻璃罩把一盆绿植和一支蜡烛罩住,在10个房间进行摆放,每个房间布置5个这样的组合,重复为10,而不是50。需要注意的是,如果找一些人去背圆周率,每个人背10次,由于不断的重复,可能背下来的位数会逐渐增多,这10次虽然是实际的重复次数,却不能叫做实验中的重复或统计学上的重复。

    重复的次数到底需要多少才合适?这曾经是个是困扰科学工作者的难题。一般而言,有两答案:一是越多越好,二是30个。当然,不考虑经济和时间成本,的确是越多越好。综合考虑,在大量的实践过程中,30成了一个非常恰当的重复数量。当然,如果调查的对象是群体,那么2个重复在国际上也是认可的。有很多专门针对这种情况开发的统计方法,保证该方案能够足够的统计学功效。

    随机可以保证每个对象都有均等机会进入样本集合。大多数时候,研究者会把非随机搜集的信息视为随机。举个例子,我们想要在一座山上选取50个蘑菇,只要看一眼,你就会发现一些蘑菇很有特点,然后不自觉的选择了,相对细小的蘑菇品种,则很容易被忽略,这实际上并不是随机选择。一些研究人员喜欢先划定一个区域,然后在区域内随便取两个点连成一条直线,选取直线上所有的蘑菇,一条不够就两条。当然,这样的选取方式,比前一个要科学得多,但实际上偏向于长得密集的小蘑菇。

    经常去花鸟去虫市场,总会看到一些面包虫,有人就拿这些面包虫做过实验——把从袋子里最先爬出来的面包虫拿出来放进鸟笼,然后把第二只放进去,再是第三只,经过几次重复后,发现总是第一只放进去的面包虫被吃掉所用的时间最短。这个实验可以如何改进?

  • 统计分析的基础——总体与样本

    从一个简单的例子入手,如何理解总体和抽样的概念。假设我们想要了解卖的最好的玉米品种是哪个,理想状态下是只有一家公司/商店售卖玉米种子,这样我们直接去查看该公司/商店的销售量就可以知道想要的答案。然而,事实上我们都不知道具体有多少公司/商店在销售玉米种子,少说也有几千家,甚至可能有些个人育种家也在卖种子,把所有的情况都调查出来显然不合适,这时抽样就成了比较合理的选择。当我们不能把控整体时,对局部控制显得尤为重要。抽样,不仅便宜、省时,更容易控制条件,这些对于统计分析然后从结果中得到正确的结论很有帮助。需要注意的是,抽样必须具有代表性!怎样科学的抽样是一个必须经过深思熟虑的问题。

    那么,基本上可以给总体(Population)下一个定义,即需要调查的所有可能性的总集。需要注意的是,这里的总体(Population)不同于生物学、遗传学的群体(Population),同样使用Population这个词,但在生物学或遗传学中,Population表示的是群体,通常是人工收集、构建或划分的用于研究或其他目的的生物体的集合。样本(Sample)是总体的一个部分或子集,当我们不能科学的抽取子集的时候,通常用随机的方式进行抽样,再多次抽样,以避免偏颇。

    很多人认为,对总体进行估计的准确性会高于对样本的估计,这在理想状态下是正确的,前提是总体的调查完全准确,貌似在实际工作中不太可能。举一个具体的例子,早些年全国做人口普查的时候,很多人都不知道自己具体多少岁,很多数据是随便填写的,若用这样的数据来计算平均年龄,恐怕很难得到一个正确的答案。这里有一个有趣的现象,当没有人告诉你或没有明确的记录时,自己是没有办法知道自己的年龄的,因此,出生证明和身份证上的信息非常重要。

    从哲学的角度讲,把总体都调查一遍几乎是一个不可能事件。还用上面的例子,我们甚至不知道到底有多少人在卖玉米种子,也不知道这些人在什么地方,不采用抽样的方式没有办法完成调查。此外,抽样调查还具有时效性,想尽办法调查总体,会消耗较长的时间,一些商店可能还没来得及调查就倒闭了,甚至有些新的商店诞生却没有包含在调查名单之内。人口普查也是一个道理,全国调查完毕之后,有些人去世了,也有新的生命诞生,这些都没有反映在调查的结果中,事实上,这种调查也是总体的一个抽样。

    因此,虽然和直观的感受不同,但确实是能够控制准确性的样本,要比总体抽样的准确性更高。

  • 统计分析的基础——数据的产生

    数据分析是非常热门的领域,掌握数据分析方法、技术和手段,就必须要有数据。作为分析的原料,我们需要先获得数据才能进行分析。研究中,通常先要产生数据。产生数据的方法主要有观察法和实验法。观察法对被观测者的影响最小,这很重要,被观测者受到的影响越小其表现出来的结果越真实。比如,观察人眼睛的颜色,观察叶片病斑的面积等。实验法是另一种生成数据的方法,在实验中,要严格控制条件,精确测量。实验通常需要做至少两类观测,即无影响(对照)观测和有影响(处理)观测,这样才能保证没有其他因素的干扰。需要注意的是,大多数情况,处理以及观测之间都有相互作用,会影响结果的可靠性。很不幸,研究中所关注的个体都很复杂,只能降低互作,无法消除。比如植物中,纯合的10个材料,在干旱和正常条件下种植,每一株都不可能完全相同,造成这个的差异就是相互作用,到底是什么引起了互作,很难弄清,因此尽量保证每一株材料的条件相同,减少互作的影响。人类是非常复杂的生物,研究人类的难度要远远高于植物,植物在使用药物的时候通常都有效果,而人却有安慰剂效应,通过强大的心理作用起到服用药物的作用,因此,有时通过双盲实验做研究,即医生和患者都不知道使用的药物是真的药物还是糖丸儿。

  • 卷积神经网络的理解

    好吧,教科书还是百科上的解释,已经完全让人头大,怎么才能把卷积神经网络理解了呢?

    先从最基本的公式入手吧。

    这个公式的意思就是,当锚定某个图像的特定像素点后,其周围的若干像素点都对该点有影响。卷积神经网络就是依靠汇总这些影响来预测的。f是锚定点变量的函数,g是锚定点周围任意一点的函数。周围包括锚定点本身都会对中心点造成影响。计算时,就是利用这种影响,得到预测值。

    然而,因为g函数针对的是卷积核,为t-x。在实际情况中,往往位置会和原来的图片发生颠倒,因此,需要将g颠倒一下再相乘,可能这个过程叫做卷积。

    如果不理解,可以看下面这个例子。

    假设随机设定图像的某一点为中心点,即f(x,y);那么其左上方的点为f(x-1,y+1)。根据公式,g(t-x),得到响应的g函数为:原点(x,y)-造成影响的点(x-1,y+1)=(x,y)-(x-1,y+1)=(x-(x-1),y-(y+1))=(1,-1)。这里的t是原点,x是影响t的点。如图:

    图1 f函数和g函数关系示意图

    原图左上方的点(-1,1)刚好对应卷积核右下方的点(1,-1),则只要将卷积核旋转180度,两个图像则可以完全匹配,可以进行对应位置的四则运算,起到图片修改的作用。

    这便是卷积神经网路的原理了。

  • sommer包做全基因组预测

    (1)自交系预测

    模型:

    y = Xβ + Zu + ε

    代码:

    # sommer的GS预测
    library(sommer)   # 加载sommer包,第一次安装请先运行install.packages("sommer")
    data(DT_wheat)
    DT <- DT_wheat
    GT <- GT_wheat
    colnames(DT) <- paste0("X",1:ncol(DT))   # 列名为X1~X4
    DT <- as.data.frame(DT)   # 转换为数据框
    DT$id <- as.factor(rownames(DT))   # 把行号作为列并作为因子
    # select environment 1
    rownames(GT) <- rownames(DT)   # 给基因型赋值相同的行号(名称)
    K <- A.mat(GT) # additive relationship matrix
    colnames(K) <- rownames(K) <- rownames(DT)   # K的行列相同,都赋值名称
    # GBLUP pedigree-based approach
    set.seed(12345)
    y.trn <- DT
    vv <- sample(rownames(DT),round(nrow(DT)/5))   # 抽取20%作为验证群体(被预测)
    y.trn[vv,"X1"] <- NA
    head(y.trn)
    ## GBLUP
    ans <- mmer(X1~1,
                random=~vs(id,Gu=K),
                rcov=~units,
                data=y.trn, verbose = FALSE) # kinship based
    ans$U$`u:id`$X1 <- as.data.frame(ans$U$`u:id`$X1)
    rownames(ans$U$`u:id`$X1) <- gsub("id","",rownames(ans$U$`u:id`$X1))
    cor(ans$U$`u:id`$X1[vv,],DT[vv,"X1"], use="complete")
    ## rrBLUP
    ans2 <- mmer(X1~1,
                 random=~vs(list(GT)),
                 rcov=~units,
                 data=y.trn, verbose = FALSE) # kinship based
    u <- GT %*% as.matrix(ans2$U$`u:GT`$X1) # BLUPs for individuals
    rownames(u) <- rownames(GT)
    cor(u[vv,],DT[vv,"X1"]) # same correlation
    

    数据使用的是CIMMYT的全球小麦项目组提供的数据,共有599个个体。y.trn表示籽粒产量,每一列表示一个环境,共有4个环境,例子中只计算了80%预测20%的结果。

    (2)杂交种的预测

    杂交种的预测使用GCA效应和SCA效应。数据来自1254年测定的玉米单交试验。123个dent和86个flint,用测定的1254材料预测未测定的9324个材料。例子中只计算了第一个性状GY。

    模型:

    y = Xβ + Zu1 + Zu2 + ZuS + ε

    代码:

    library(sommer)
    data(DT_technow)
    DT <- DT_technow   # 表型数据
    Md <- Md_technow   # dent马齿基因型矩阵
    Mf <- Mf_technow   # flint硬粒基因型矩阵
    Ad <- Ad_technow   # dent的加性效应矩阵
    Af <- Af_technow   # flint的加性效应矩阵
    y.trn <- DT
    vv1 <- which(!is.na(DT$GY))   # 获得有数据的材料行号
    vv2 <- sample(vv1, 100)   # 在有数据的材料行号中随机选择100个材料
    y.trn[vv2,"GY"] <- NA   # 将抽取的100个材料设为NA
    anss2 <- mmer(GY~1,   # 固定效应
                  random=~vs(dent,Gu=Ad) + vs(flint,Gu=Af),   # 随机效应,并指定方差协方差矩阵
                  rcov=~units, 
                  data=y.trn, verbose = FALSE)
    summary(anss2)$varcomp
    zu1 <- model.matrix(~dent-1,y.trn) %*% anss2$U$`u:dent`$GY
    zu2 <- model.matrix(~flint-1,y.trn) %*% anss2$U$`u:flint`$GY
    u <- zu1+zu2+anss2$Beta[1,"Estimate"]
    cor(u[vv2,], DT$GY[vv2])
    
                   VarComp VarCompSE    Zratio Constraint
    u:dent.GY-GY  16.06423 2.5737578  6.241548   Positive
    u:flint.GY-GY 11.42070 2.1591718  5.289390   Positive
    units.GY-GY   16.81801 0.7689509 21.871368   Positive
    > cor(u[vv2,], DT$GY[vv2])
    [1] 0.922328

    预测时,所有有数据的个体作为建模群体,这里随机减去100个个体的测定值用于验证,即建模群体是有数据的个体-100。zu1是模型中的Zu1,Z是model.matrix(~dent-1,y.trn),即dent的设计矩阵;u1是anss2$U$u:dent$GY是GY性状dent的BLUP值。相应的,zu2是flint的设计矩阵×GY性状flint的BLUP。

    anns2$Beta[1,”Estimate”]是固定效应的BLUP。

    最后,100个个体的测定值和这100个个体的BLUP值的相关系数作为预测结果。

    上面的例子只使用了GCA进行预测,因为SCA在这里面没有对预测精度起到多大的影响,相反,由于使用了很大的矩阵,导致计算时间明显增加。