预测变量(Predictor variable),又叫做自变量、独立变量、解释变量,是分析中用于预测或解释响应变量的变量。在回归分析中,预测变量是模型的输入。
响应变量(Response variable),又称为因变量或依赖变量。在分析中被预测的变量。回归分析中,响应变量是模型的输出。
简言之,预测变量是x,响应变量是y。预测变量用来预测,响应变量被预测。
预测变量(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 | |
| SD1 | SD2 | SD3 | SD4 | SD5 | |
| mean1 | mean2 | mean3 | mean4 | mean5 | SE |
样本标准差近似等于总体标准差,但是如果样本容量比较大(通常>30),也可以用单一样本的方差/n,来近似计算样本均值抽样分布的方差。
误差线使用标准差还是使用标准误?
标准差和标准误的层面是不同的,标准差针对的是样本中的每一个值。
标准误针对的各个样本的均值。
阐述的对象是单一样本中的值时,标准差是误差线;
阐述的对象是样本间均值时,标准误是误差线。
上述两种方法,包括了两种描述性(可视化)方法和两种推断方法。推断方法通常以概率论和数学为基础。推断法又包括参数方法、非参数方法、稳健方法和重抽样方法。数据分析还有一些是无能为力的:
教育通常只口头说说统计很重要,在各行各业都重要,但是很少有人关注到底我们为什么要做统计分析。通俗地讲,统计分析可以让我们把复杂的事情分解,从而有助于我们理解事物,帮助我们判断和决策。当需要处理的问题超过了大脑的常规负荷时,统计分析的重要性就体现出来了。
我们来看一个例子,有一组数字(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,1)刚好对应卷积核右下方的点(1,-1),则只要将卷积核旋转180度,两个图像则可以完全匹配,可以进行对应位置的四则运算,起到图片修改的作用。
这便是卷积神经网路的原理了。
模型:
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%的结果。
杂交种的预测使用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在这里面没有对预测精度起到多大的影响,相反,由于使用了很大的矩阵,导致计算时间明显增加。